From 6df420ed67c6978e76bf54679caafb29a17609e1 Mon Sep 17 00:00:00 2001 From: Artyom Anokhov Date: Mon, 18 Sep 2023 15:36:55 +0200 Subject: [PATCH 01/46] [Azure] Fix linux_debian.yml (#19911) * Update linux_debian.yml Fixed apt-get update * More fixes --------- Co-authored-by: Ilya Lavrenov --- .ci/azure/linux_debian.yml | 2 +- .github/workflows/linux_debian.yml | 2 +- cmake/packaging/debian.cmake | 1 + cmake/packaging/rpm.cmake | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.ci/azure/linux_debian.yml b/.ci/azure/linux_debian.yml index 96db6129c72ee1..e94a0819705bd7 100644 --- a/.ci/azure/linux_debian.yml +++ b/.ci/azure/linux_debian.yml @@ -228,7 +228,7 @@ jobs: wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB echo "deb https://apt.repos.intel.com/openvino/2023 ubuntu20 main" | sudo tee /etc/apt/sources.list.d/intel-openvino-2023.list - sudo apt-get update -o Dir::Etc::sourcelist=/etc/apt/sources.list.d/intel-openvino-2023.list + sudo apt-get update sudo apt-get install openvino -y # install our local one and make sure the conflicts are resolved sudo apt-get install --no-install-recommends dpkg-dev -y diff --git a/.github/workflows/linux_debian.yml b/.github/workflows/linux_debian.yml index b517a368c46ced..bff429be48c90a 100644 --- a/.github/workflows/linux_debian.yml +++ b/.github/workflows/linux_debian.yml @@ -219,7 +219,7 @@ jobs: wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB echo "deb https://apt.repos.intel.com/openvino/2023 ubuntu20 main" | sudo tee /etc/apt/sources.list.d/intel-openvino-2023.list - sudo apt-get update -o Dir::Etc::sourcelist=/etc/apt/sources.list.d/intel-openvino-2023.list + sudo apt-get update sudo apt-get install openvino -y # install our local one and make sure the conflicts are resolved sudo apt-get install --no-install-recommends dpkg-dev -y diff --git a/cmake/packaging/debian.cmake b/cmake/packaging/debian.cmake index 48adc7acf3980a..d359a40aa6df51 100644 --- a/cmake/packaging/debian.cmake +++ b/cmake/packaging/debian.cmake @@ -91,6 +91,7 @@ macro(ov_cpack_settings) # - 2022.3 is the first release where Debian updated packages are introduced, others 2022.3.X are LTS 2022.3.0 2022.3.1 2022.3.2 2022.3.3 2022.3.4 2022.3.5 2023.0.0 2023.0.1 2023.0.2 2023.0.3 + 2023.1.0 ) # diff --git a/cmake/packaging/rpm.cmake b/cmake/packaging/rpm.cmake index ad1172b6c833ae..077e970d138bc4 100644 --- a/cmake/packaging/rpm.cmake +++ b/cmake/packaging/rpm.cmake @@ -77,6 +77,7 @@ macro(ov_cpack_settings) # - 2022.3 is the first release where RPM updated packages are introduced, others 2022.3.X are LTS 2022.3.0 2022.3.1 2022.3.2 2022.3.3 2022.3.4 2022.3.5 2023.0.0 2023.0.1 2023.0.2 2023.0.3 + 2023.1.0 ) find_host_program(rpmlint_PROGRAM NAMES rpmlint DOC "Path to rpmlint") From dbab89f04706c597c6a08ab68e91ae1ec2eaaeb2 Mon Sep 17 00:00:00 2001 From: Karol Blaszczak Date: Mon, 18 Sep 2023 16:24:26 +0200 Subject: [PATCH 02/46] [DOCS] minor post release tweaks (#19914) --- docs/Documentation/model_introduction.md | 39 +++++++++++++------ .../Convert_Model_From_PyTorch.md | 2 +- docs/documentation.md | 4 +- docs/home.rst | 4 +- .../installing-openvino-linux-header.md | 13 ++++--- .../installing-openvino-macos-header.md | 20 +++++----- .../installing-openvino-windows-header.md | 7 ++-- 7 files changed, 54 insertions(+), 35 deletions(-) diff --git a/docs/Documentation/model_introduction.md b/docs/Documentation/model_introduction.md index ad38d118a01922..cd24fccbec8dfe 100644 --- a/docs/Documentation/model_introduction.md +++ b/docs/Documentation/model_introduction.md @@ -15,18 +15,37 @@ openvino_docs_OV_Converter_UG_prepare_model_convert_model_Converting_Model -Every deep learning workflow begins with obtaining a model. You can choose to prepare a custom one, use a ready-made solution and adjust it to your needs, or even download and run a pre-trained network from an online database, such as `TensorFlow Hub `__, `Hugging Face `__, or `Torchvision models `__. - -OpenVINO™ :doc:`supports several model formats ` and can convert them into its own representation, `openvino.Model `__ (`ov.Model `__), providing a conversion API. Converted models can be used for inference with one or multiple OpenVINO Hardware plugins. There are two ways to use the conversion API: using a Python script or calling the ``ovc`` command line tool. +Every deep learning workflow begins with obtaining a model. You can choose to prepare +a custom one, use a ready-made solution and adjust it to your needs, or even download +and run a pre-trained network from an online database, such as +`TensorFlow Hub `__, `Hugging Face `__, +or `Torchvision models `__. + +If your selected model is in one of the :doc:`OpenVINO™ supported model formats `, +you can use it directly, without the need to save as the OpenVINO IR. +(`openvino.Model `__ - +`ov.Model `__). +For this purpose, you can use ``openvino.Core.read_model`` and ``openvino.Core.compile_model`` +methods, so that conversion is performed automatically before inference, for +maximum convenience (note that working with PyTorch differs slightly, the Python API +being the only option, while TensorFlow may present additional considerations +:doc:`TensorFlow Frontend Capabilities and Limitations `). + + +For better performance and more optimization options, OpenVINO offers a conversion +API with two possible approaches: the Python API functions (``openvino.convert_model`` +and ``openvino.save_model``) and the ``ovc`` command line tool, which are described in detail in this article. .. note:: - Prior to OpenVINO 2023.1, model conversion API was exposed as the ``openvino.tools.mo.convert_model`` - function and the ``mo`` command line tool. Now, a new and simplified API is used: the - ``openvino.convert_model`` function and the ``ovc`` command line tool. + Model conversion API prior to OpenVINO 2023.1 is considered deprecated. + Both existing and new projects are recommended to transition to the new + solutions, keeping in mind that they are not fully backwards compatible + with ``openvino.tools.mo.convert_model`` or the ``mo`` CLI tool. + For more details, see the :doc:`Model Conversion API Transition Guide `. + + - All new projects are recommended to use the new tools, keeping in mind that they are not fully - backwards compatible. For more details, consult the :doc:`Model Conversion API Transition Guide `. Convert a Model in Python: ``convert_model`` ############################################## @@ -209,12 +228,8 @@ Another option for model conversion is to use ``ovc`` command-line tool, which s The results of both ``ovc`` and ``openvino.convert_model``/``openvino.save_model`` conversion methods are the same. You can choose either of them based on your convenience. Note that there should not be any differences in the results of model conversion if the same set of parameters is used and the model is saved into OpenVINO IR. -Cases when Model Preparation is not Required -############################################ -If a model is represented as a single file from ONNX, PaddlePaddle, TensorFlow and TensorFlow Lite (check :doc:`TensorFlow Frontend Capabilities and Limitations `), it does not require a separate conversion and IR-saving step, that is ``openvino.convert_model`` and ``openvino.save_model``, or ``ovc``. -OpenVINO provides C++ and Python APIs for reading such models by just calling the ``openvino.Core.read_model`` or ``openvino.Core.compile_model`` methods. These methods perform conversion of the model from the original representation. While this conversion may take extra time compared to using prepared OpenVINO IR, it is convenient when you need to read a model in the original format in C++, since ``openvino.convert_model`` is only available in Python. However, for efficient model deployment with the OpenVINO Runtime, it is still recommended to prepare OpenVINO IR and then use it in your inference application. Additional Resources #################### diff --git a/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_PyTorch.md b/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_PyTorch.md index 055e94049a78ed..0cafd3066535ab 100644 --- a/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_PyTorch.md +++ b/docs/MO_DG/prepare_model/convert_model/Convert_Model_From_PyTorch.md @@ -58,7 +58,7 @@ parameter to be set, for example: Sometimes ``convert_model`` will produce inputs of the model with dynamic rank or dynamic type. Such model may not be supported by the hardware chosen for inference. To avoid this issue, -use the ``input`` argument of ``convert_model``. For more information, refer to `Convert Models Represented as Python Objects `. +use the ``input`` argument of ``convert_model``. For more information, refer to :doc:`Convert Models Represented as Python Objects `. .. important:: diff --git a/docs/documentation.md b/docs/documentation.md index a25e784165b78f..276e4e6e0930a6 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -12,9 +12,9 @@ :hidden: API Reference - OpenVINO IR format and Operation Sets + OpenVINO IR format and Operation Sets + Legacy Features Tool Ecosystem - Legacy Features OpenVINO Extensibility Media Processing and CV Libraries OpenVINO™ Security diff --git a/docs/home.rst b/docs/home.rst index d8f359e65aaa5a..4ed32d3aea261b 100644 --- a/docs/home.rst +++ b/docs/home.rst @@ -24,10 +24,10 @@ OpenVINO 2023.0
  • An open-source toolkit for optimizing and deploying deep learning models.
    Boost your AI deep-learning inference performance!
  • -
  • Use PyTorch models directly, without converting them first. +
  • Use PyTorch models directly, without converting them first.
    Learn more...
  • -
  • OpenVINO via PyTorch 2.0 torch.compile()
    Use OpenVINO directly in PyTorch-native applications! +
  • OpenVINO via PyTorch 2.0 torch.compile()
    Use OpenVINO directly in PyTorch-native applications!
    Learn more...
  • Do you like Generative AI? You will love how it performs with OpenVINO!
    diff --git a/docs/install_guides/installing-openvino-linux-header.md b/docs/install_guides/installing-openvino-linux-header.md index f0bb87d87f0ade..a45b11d20e2f5e 100644 --- a/docs/install_guides/installing-openvino-linux-header.md +++ b/docs/install_guides/installing-openvino-linux-header.md @@ -22,14 +22,15 @@ Use Docker -If you want to install OpenVINO™ Runtime on your Linux machine, these are your options: +If you want to install OpenVINO™ Runtime on Linux, you have the following options: -* :doc:`Install OpenVINO Runtime using an Archive File ` +* :doc:`Install OpenVINO using an Archive File ` * :doc:`Install OpenVINO using PyPI ` -* :doc:`Install OpenVINO Runtime using APT ` -* :doc:`Install OpenVINO Runtime using YUM ` -* :doc:`Install OpenVINO Runtime using Conda Forge ` -* :doc:`Install OpenVINO Runtime using Homebrew ` +* :doc:`Install OpenVINO using APT ` +* :doc:`Install OpenVINO using YUM ` +* :doc:`Install OpenVINO using Conda Forge ` +* :doc:`Install OpenVINO using vcpkg ` +* :doc:`Install OpenVINO using Homebrew ` * :doc:`Install OpenVINO using Docker ` diff --git a/docs/install_guides/installing-openvino-macos-header.md b/docs/install_guides/installing-openvino-macos-header.md index dff827ce9a89e8..2e0d70b61d04be 100644 --- a/docs/install_guides/installing-openvino-macos-header.md +++ b/docs/install_guides/installing-openvino-macos-header.md @@ -12,19 +12,21 @@ :maxdepth: 3 :hidden: - From Archive - Using Homebrew - From PyPI - Using Conda Forge + Use Archive + Use Homebrew + Use PyPI + Use Conda Forge Use vcpkg -If you want to install OpenVINO™ Runtime on macOS, there are a few ways to accomplish this. We prepared following options for you: +If you want to install OpenVINO™ Runtime on macOS, you have the following options: -* :doc:`Install OpenVINO Runtime from an Archive File ` -* :doc:`Install OpenVINO from PyPI ` -* :doc:`Install OpenVINO Runtime using Conda Forge ` -* :doc:`Install OpenVINO Runtime via Homebrew ` + +* :doc:`Install OpenVINO using an Archive File ` +* :doc:`Install OpenVINO using PyPI ` +* :doc:`Install OpenVINO using Conda Forge ` +* :doc:`Install OpenVINO using Homebrew ` +* :doc:`Install OpenVINO using vcpkg ` diff --git a/docs/install_guides/installing-openvino-windows-header.md b/docs/install_guides/installing-openvino-windows-header.md index 3044c2accef729..65b1803ec711ff 100644 --- a/docs/install_guides/installing-openvino-windows-header.md +++ b/docs/install_guides/installing-openvino-windows-header.md @@ -22,9 +22,10 @@ If you want to install OpenVINO™ Runtime on Windows, you have the following options: -* :doc:`Install OpenVINO Runtime from an Archive File ` -* :doc:`Install OpenVINO Runtime using PyPI ` -* :doc:`Install OpenVINO Runtime using Conda Forge ` +* :doc:`Install OpenVINO using an Archive File ` +* :doc:`Install OpenVINO using PyPI ` +* :doc:`Install OpenVINO using Conda Forge ` +* :doc:`Install OpenVINO using vcpkg ` * :doc:`Install OpenVINO using Docker ` From c10b45fe9e1b22a42436c73a7ed64929f0f504ac Mon Sep 17 00:00:00 2001 From: Maxim Vafin Date: Mon, 18 Sep 2023 17:04:39 +0200 Subject: [PATCH 03/46] [PT FE] Fix issue with http error when using torch.hub (#19901) * [PT FE] Fix issue with http error when using torch.hub * Mark failing models as xfail * Remove incorrect model names --- .../models_hub_common/test_convert_model.py | 2 +- .../models_hub_common/utils.py | 2 +- .../torch_tests/test_torchvision_models.py | 21 ++-- .../torch_tests/torchvision_models | 97 +++++++++++++++++++ 4 files changed, 112 insertions(+), 10 deletions(-) create mode 100644 tests/model_hub_tests/torch_tests/torchvision_models diff --git a/tests/model_hub_tests/models_hub_common/test_convert_model.py b/tests/model_hub_tests/models_hub_common/test_convert_model.py index 145da6b61761f7..d35061595fc0cb 100644 --- a/tests/model_hub_tests/models_hub_common/test_convert_model.py +++ b/tests/model_hub_tests/models_hub_common/test_convert_model.py @@ -99,7 +99,7 @@ def _run(self, model_name, model_link, ie_device): fw_outputs = self.infer_fw_model(fw_model, inputs) print("Infer ov::Model") ov_outputs = self.infer_ov_model(ov_model, inputs, ie_device) - print("Compare TensorFlow and OpenVINO results") + print("Compare framework and OpenVINO results") self.compare_results(fw_outputs, ov_outputs) def run(self, model_name, model_link, ie_device): diff --git a/tests/model_hub_tests/models_hub_common/utils.py b/tests/model_hub_tests/models_hub_common/utils.py index b5699a80e62b43..076cd8e2f1e4c0 100644 --- a/tests/model_hub_tests/models_hub_common/utils.py +++ b/tests/model_hub_tests/models_hub_common/utils.py @@ -22,7 +22,7 @@ def get_models_list(file_name: str): model_name, model_link = model_info.split(',') elif len(model_info.split(',')) == 4: model_name, model_link, mark, reason = model_info.split(',') - assert mark == "skip", "Incorrect failure mark for model info {}".format(model_info) + assert mark in ["skip", "xfail"], "Incorrect failure mark for model info {}".format(model_info) models.append((model_name, model_link, mark, reason)) return models diff --git a/tests/model_hub_tests/torch_tests/test_torchvision_models.py b/tests/model_hub_tests/torch_tests/test_torchvision_models.py index a77af0ec07549e..a7722389e4132d 100644 --- a/tests/model_hub_tests/torch_tests/test_torchvision_models.py +++ b/tests/model_hub_tests/torch_tests/test_torchvision_models.py @@ -1,16 +1,18 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +import os import pytest import torch import tempfile import torchvision.transforms.functional as F -from models_hub_common.test_convert_model import TestConvertModel from openvino import convert_model +from models_hub_common.test_convert_model import TestConvertModel +from models_hub_common.utils import get_models_list def get_all_models() -> list: - m_list = torch.hub.list("pytorch/vision") + m_list = torch.hub.list("pytorch/vision", skip_validation=True) m_list.remove("get_model_weights") m_list.remove("get_weight") return m_list @@ -36,7 +38,8 @@ def get_video(): def prepare_frames_for_raft(name, frames1, frames2): - w = torch.hub.load("pytorch/vision", "get_model_weights", name=name).DEFAULT + w = torch.hub.load("pytorch/vision", "get_model_weights", + name=name, skip_validation=True).DEFAULT img1_batch = torch.stack(frames1) img2_batch = torch.stack(frames2) img1_batch = F.resize(img1_batch, size=[520, 960], antialias=False) @@ -50,13 +53,14 @@ def prepare_frames_for_raft(name, frames1, frames2): class TestTorchHubConvertModel(TestConvertModel): - def setup_method(self): + def setup_class(self): self.cache_dir = tempfile.TemporaryDirectory() # set temp dir for torch cache torch.hub.set_dir(str(self.cache_dir.name)) def load_model(self, model_name, model_link): - m = torch.hub.load("pytorch/vision", model_name, weights='DEFAULT') + m = torch.hub.load("pytorch/vision", model_name, + weights='DEFAULT', skip_validation=True) m.eval() if model_name == "s3d" or any([m in model_name for m in ["swin3d", "r3d_18", "mc3_18", "r2plus1d_18"]]): self.example = (torch.randn([1, 3, 224, 224, 224]),) @@ -109,7 +113,8 @@ def teardown_method(self): def test_convert_model_precommit(self, model_name, ie_device): self.run(model_name, None, ie_device) - @pytest.mark.parametrize("model_name", get_all_models()) + @pytest.mark.parametrize("name", + [pytest.param(n, marks=pytest.mark.xfail) if m == "xfail" else n for n, _, m, r in get_models_list(os.path.join(os.path.dirname(__file__), "torchvision_models"))]) @pytest.mark.nightly - def test_convert_model_all_models(self, model_name, ie_device): - self.run(model_name, None, ie_device) + def test_convert_model_all_models(self, name, ie_device): + self.run(name, None, ie_device) diff --git a/tests/model_hub_tests/torch_tests/torchvision_models b/tests/model_hub_tests/torch_tests/torchvision_models new file mode 100644 index 00000000000000..a13a0f606c6708 --- /dev/null +++ b/tests/model_hub_tests/torch_tests/torchvision_models @@ -0,0 +1,97 @@ +alexnet,none +convnext_base,none +convnext_large,none +convnext_small,none +convnext_tiny,none +deeplabv3_mobilenet_v3_large,none +deeplabv3_resnet101,none +deeplabv3_resnet50,none +densenet121,none +densenet161,none +densenet169,none +densenet201,none +efficientnet_b0,none +efficientnet_b1,none +efficientnet_b2,none +efficientnet_b3,none +efficientnet_b4,none +efficientnet_b5,none +efficientnet_b6,none +efficientnet_b7,none +efficientnet_v2_l,none +efficientnet_v2_m,none +efficientnet_v2_s,none +fcn_resnet101,none +fcn_resnet50,none +googlenet,none +inception_v3,none +lraspp_mobilenet_v3_large,none +maxvit_t,none +mc3_18,none +mnasnet0_5,none +mnasnet0_75,none +mnasnet1_0,none +mnasnet1_3,none +mobilenet_v2,none +mobilenet_v3_large,none +mobilenet_v3_small,none +mvit_v1_b,none +mvit_v2_s,none +r2plus1d_18,none +r3d_18,none +raft_large,none +raft_small,none +regnet_x_16gf,none +regnet_x_1_6gf,none +regnet_x_32gf,none +regnet_x_3_2gf,none +regnet_x_400mf,none +regnet_x_800mf,none +regnet_x_8gf,none +regnet_y_128gf,none +regnet_y_16gf,none +regnet_y_1_6gf,none +regnet_y_32gf,none +regnet_y_3_2gf,none +regnet_y_400mf,none +regnet_y_800mf,none +regnet_y_8gf,none +resnet101,none +resnet152,none +resnet18,none +resnet34,none +resnet50,none +resnext101_32x8d,none +resnext101_64x4d,none +resnext50_32x4d,none +s3d,none +shufflenet_v2_x0_5,none +shufflenet_v2_x1_0,none +shufflenet_v2_x1_5,none +shufflenet_v2_x2_0,none +squeezenet1_0,none +squeezenet1_1,none +swin3d_b,none +swin3d_s,none +swin3d_t,none +swin_b,none +swin_s,none +swin_t,none +swin_v2_b,none +swin_v2_s,none +swin_v2_t,none +vgg11,none +vgg11_bn,none +vgg13,none +vgg13_bn,none +vgg16,none +vgg16_bn,none +vgg19,none +vgg19_bn,none +vit_b_16,none,xfail,Tracing fails +vit_b_32,none,xfail,Tracing fails +vit_h_14,none,xfail,Tracing fails +vit_l_16,none,xfail,Tracing fails +vit_l_32,none,xfail,Tracing fails +wide_resnet101_2,none +wide_resnet50_2,none From 10dc2d8b9ba8e6a311532906161fd710f8fef991 Mon Sep 17 00:00:00 2001 From: Mikhail Ryzhov Date: Mon, 18 Sep 2023 17:29:01 +0200 Subject: [PATCH 04/46] [GHA] Improvement of test execution time cache (#19881) * renamed cache * disabled PR cache * corrected save condition * removed id * fixed path in save cache action * corrected if condition --- .github/workflows/linux.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 486cc879ec02d0..d7cba0bc390e59 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -585,7 +585,7 @@ jobs: --ignore=${{ env.INSTALL_TEST_DIR }}/pyopenvino/tests/test_utils/test_utils.py \ --ignore=${{ env.INSTALL_TEST_DIR }}/pyopenvino/tests/test_onnx/test_zoo_models.py \ --ignore=${{ env.INSTALL_TEST_DIR }}/pyopenvino/tests/test_onnx/test_backend.py - + - name: Python API snippets run: | source ${{ env.INSTALL_DIR }}/setupvars.sh @@ -774,12 +774,13 @@ jobs: python3 -m pip install --upgrade pip python3 -m pip install -r ${{ env.INSTALL_TEST_DIR }}/functional_test_utils/requirements.txt - - name: Cache Tests Execution Time - id: tests-functional-cpu-cache - uses: actions/cache@v3 + - name: Restore tests execution time + uses: actions/cache/restore@v3 with: path: ${{ env.PARALLEL_TEST_CACHE }} - key: ${{ runner.os }}-tests-functional-cpu-cache + key: ${{ runner.os }}-tests-functional-cpu-stamp-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-tests-functional-cpu-stamp - name: Intel CPU plugin func tests (parallel) run: | @@ -787,6 +788,13 @@ jobs: python3 ${{ env.PARALLEL_TEST_SCRIPT }} -e ${{ env.INSTALL_TEST_DIR }}/ov_cpu_func_tests -c ${{ env.PARALLEL_TEST_CACHE }} -w ${{ env.INSTALL_TEST_DIR }} -s suite -rf 0 -- --gtest_print_time=1 --gtest_filter=*smoke* timeout-minutes: 25 + - name: Save tests execution time + uses: actions/cache/save@v3 + if: github.ref_name == 'master' + with: + path: ${{ env.PARALLEL_TEST_CACHE }} + key: ${{ runner.os }}-tests-functional-cpu-stamp-${{ github.sha }} + - name: Upload Test Results uses: actions/upload-artifact@v3 if: ${{ always() }} From 54609e7b72d9faa5a38fe7ac15c84aae77fbbc82 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Tue, 19 Sep 2023 00:07:59 +0400 Subject: [PATCH 05/46] Removed FixRtInfo pass (#16870) * Removed FixRtInfo pass * Removed FixRtInfo pass * Fixed macOS compilation --- CMakeLists.txt | 2 - .../docs/develop_cc_for_new_component.md | 1 - src/common/snippets/src/pass/hash.cpp | 2 +- .../include/transformations/fix_rt_info.hpp | 38 ----------------- .../src/transformations/fix_rt_info.cpp | 42 ------------------- .../src/transformations/init_node_info.cpp | 5 +-- src/core/CMakeLists.txt | 1 - src/core/src/pass/serialize.cpp | 2 +- src/core/tests/CMakeLists.txt | 2 - src/inference/src/cnn_network_ngraph_impl.cpp | 8 ---- src/inference/src/compilation_context.cpp | 2 - .../tests/unit/compilation_context_test.cpp | 3 +- .../functional/test_utils/cpu_test_utils.cpp | 7 ++-- .../functional/test_utils/cpu_test_utils.hpp | 3 +- .../template/tests/functional/CMakeLists.txt | 4 +- .../src/summary/op_summary.cpp | 2 +- 16 files changed, 13 insertions(+), 111 deletions(-) delete mode 100644 src/common/transformations/include/transformations/fix_rt_info.hpp delete mode 100644 src/common/transformations/src/transformations/fix_rt_info.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 0b552b3da3406c..e9d4760eb86916 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -106,8 +106,6 @@ function(openvino_developer_export_targets) if(TARGET "${target_name}") get_target_property(original_name ${target_name} ALIASED_TARGET) if(TARGET "${original_name}") - message(STATUS "The name ${target_name} is an ALIAS for ${original_name}. " - "It will be exported to the OpenVINODeveloperPackage with the original name.") list(REMOVE_ITEM ${EXPORT_COMPONENT} ${target_name}) list(APPEND ${EXPORT_COMPONENT} ${original_name}) endif() diff --git a/src/common/conditional_compilation/docs/develop_cc_for_new_component.md b/src/common/conditional_compilation/docs/develop_cc_for_new_component.md index 4166a907434b13..32c10478dc6310 100644 --- a/src/common/conditional_compilation/docs/develop_cc_for_new_component.md +++ b/src/common/conditional_compilation/docs/develop_cc_for_new_component.md @@ -69,7 +69,6 @@ It checks whether the code region in this module is active or inactive by the ma There is an example of `conditional_compilation_gen.h`: ``` -#define ov_pass_FixRtInfo_run_on_function 1 #define ov_pass_GraphRewrite_run_on_model 1 #define ov_pass_InitNodeInfo_run_on_function 1 #define ov_pass_ConstantFolding_run_on_model 1 diff --git a/src/common/snippets/src/pass/hash.cpp b/src/common/snippets/src/pass/hash.cpp index 8d509b568867fc..48dd9586ae4337 100644 --- a/src/common/snippets/src/pass/hash.cpp +++ b/src/common/snippets/src/pass/hash.cpp @@ -62,7 +62,7 @@ static uint64_t hash_combine(uint64_t seed, const T &v) { namespace rt_info { // some node attr is not type of ov::RuntimeAttribute, need dedicate visitor. -const std::vector list_of_names{ +static const std::vector list_of_names{ "PrimitivesPriority", "alt_width", }; diff --git a/src/common/transformations/include/transformations/fix_rt_info.hpp b/src/common/transformations/include/transformations/fix_rt_info.hpp deleted file mode 100644 index a9c33645633074..00000000000000 --- a/src/common/transformations/include/transformations/fix_rt_info.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#pragma once - -/** - * @brief Defines initialize node runtime information pass - * @file init_node_info.hpp - */ - -#include -#include - -#include "openvino/pass/graph_rewrite.hpp" -#include "transformations_visibility.hpp" - -namespace ov { -namespace pass { - -class TRANSFORMATIONS_API FixRtInfo; - -} // namespace pass -} // namespace ov - -/** - * @ingroup ie_transformation_common_api - * @brief FixRtInfo transformation helps to fix info attributes in a single place. - * User can pass runtime attribute using various types. - * This Pass should generalize them runtime info representation. - * - * Used to extract runtime attributes from shared pointer to `ov::RuntimeAttributeWrapper` to standard or trivial types - */ -class ov::pass::FixRtInfo : public ov::pass::ModelPass { -public: - OPENVINO_RTTI("FixRtInfo", "0"); - bool run_on_model(const std::shared_ptr& m) override; -}; diff --git a/src/common/transformations/src/transformations/fix_rt_info.cpp b/src/common/transformations/src/transformations/fix_rt_info.cpp deleted file mode 100644 index b70176ca7aecd1..00000000000000 --- a/src/common/transformations/src/transformations/fix_rt_info.cpp +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include "transformations/fix_rt_info.hpp" - -#include -#include - -#include "itt.hpp" -#include "openvino/core/rt_info.hpp" -#include "openvino/opsets/opset1.hpp" -#include "transformations/rt_info/primitives_priority_attribute.hpp" - -bool ov::pass::FixRtInfo::run_on_model(const std::shared_ptr& f) { - RUN_ON_FUNCTION_SCOPE(FixRtInfo); - - for (auto& node : f->get_ops()) { - // Recursively apply transformation for sub-graph based operations - if (auto sub_graph_node = std::dynamic_pointer_cast(node)) { - if (auto sub_graph = sub_graph_node->get_function()) { - run_on_model(sub_graph); - } - } - auto& rt_info = node->get_rt_info(); - { - auto it_info = rt_info.find("PrimitivesPriority"); - if (it_info != rt_info.end()) { - if (it_info->second.is()) { - rt_info.emplace(ov::PrimitivesPriority::get_type_info_static(), - it_info->second.as()); - } - if (it_info->second.is()) { - rt_info.emplace(ov::PrimitivesPriority::get_type_info_static(), - ov::PrimitivesPriority{it_info->second.as()}); - } - rt_info.erase(it_info); - } - } - } - return false; -} diff --git a/src/common/transformations/src/transformations/init_node_info.cpp b/src/common/transformations/src/transformations/init_node_info.cpp index 93c958d14f661b..efc2627199c723 100644 --- a/src/common/transformations/src/transformations/init_node_info.cpp +++ b/src/common/transformations/src/transformations/init_node_info.cpp @@ -8,9 +8,7 @@ #include #include "itt.hpp" -#include "openvino/core/rt_info.hpp" -#include "openvino/opsets/opset1.hpp" -#include "transformations/fix_rt_info.hpp" +#include "openvino/op/util/sub_graph_base.hpp" #include "transformations/rt_info/fused_names_attribute.hpp" #include "transformations/rt_info/primitives_priority_attribute.hpp" @@ -27,6 +25,5 @@ bool ov::pass::InitNodeInfo::run_on_model(const std::shared_ptr& f) { auto& rtInfo = node->get_rt_info(); rtInfo.emplace(FusedNames::get_type_info_static(), FusedNames{node->get_friendly_name()}); } - FixRtInfo{}.run_on_model(f); return false; } diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 4d8545a5a21802..03580613532e7b 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -122,7 +122,6 @@ file(GLOB_RECURSE smart_reshape_srcs ${CMAKE_CURRENT_SOURCE_DIR}/src/pass/smart_ file(GLOB_RECURSE rt_info_srcs ${CMAKE_CURRENT_SOURCE_DIR}/src/pass/rt_info/*.cpp) set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/src/pass/convert_precision.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/src/pass/convert_fp32_to_fp16.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/src/pass/fix_rt_info.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/src/pass/init_node_info.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/src/pass/serialize.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/src/op/type_relaxed.cpp" diff --git a/src/core/src/pass/serialize.cpp b/src/core/src/pass/serialize.cpp index de2fcd8c46b8fe..70b91b7e97bf81 100644 --- a/src/core/src/pass/serialize.cpp +++ b/src/core/src/pass/serialize.cpp @@ -197,7 +197,7 @@ void ngfunction_2_ir(pugi::xml_node& node, bool deterministic); namespace rt_info { -const std::vector list_of_names{ +static const std::vector list_of_names{ "PrimitivesPriority", "alt_width", }; diff --git a/src/core/tests/CMakeLists.txt b/src/core/tests/CMakeLists.txt index e42513bd939ebb..b5298b9e5eea3c 100644 --- a/src/core/tests/CMakeLists.txt +++ b/src/core/tests/CMakeLists.txt @@ -11,8 +11,6 @@ ov_try_use_gold_linker() add_definitions(-DSERIALIZED_ZOO=\"${TEST_MODEL_ZOO}/core/models\") -message(STATUS "OpenVINO Core unit tests enabled") - # For type relaxed types set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/threading.cpp PROPERTIES INCLUDE_DIRECTORIES $) diff --git a/src/inference/src/cnn_network_ngraph_impl.cpp b/src/inference/src/cnn_network_ngraph_impl.cpp index cb26e63e7c2626..74f80f39e2f641 100644 --- a/src/inference/src/cnn_network_ngraph_impl.cpp +++ b/src/inference/src/cnn_network_ngraph_impl.cpp @@ -29,7 +29,6 @@ #include "transformations/common_optimizations/nop_elimination.hpp" #include "transformations/common_optimizations/remove_concat_zero_dim_input.hpp" #include "transformations/common_optimizations/remove_multi_subgraph_op_dangling_params.hpp" -#include "transformations/fix_rt_info.hpp" #include "transformations/smart_reshape/set_batch_size.hpp" #include "transformations/smart_reshape/smart_reshape.hpp" #include "transformations/utils/utils.hpp" @@ -136,7 +135,6 @@ CNNNetworkNGraphImpl::CNNNetworkNGraphImpl(const std::shared_ptr& nGra { ov::pass::Manager m; using namespace ov::pass; - REGISTER_PASS(m, FixRtInfo) REGISTER_PASS(m, EliminateScatterUpdate) REGISTER_PASS(m, RemoveConcatZeroDimInput) REGISTER_PASS(m, RemoveMultiSubGraphOpDanglingParamsResults) @@ -199,12 +197,6 @@ CNNNetworkNGraphImpl::CNNNetworkNGraphImpl(const CNNNetwork& network) { } _ngraph_function = ngraph::clone_function(*network.getFunction()); - { - ov::pass::Manager m; - using namespace ov::pass; - REGISTER_PASS(m, FixRtInfo) - m.run_passes(_ngraph_function); - } validateFunctionNames(); InputsDataMap inputs = network.getInputsInfo(); OutputsDataMap outputs = network.getOutputsInfo(); diff --git a/src/inference/src/compilation_context.cpp b/src/inference/src/compilation_context.cpp index e4a373f1c0223b..7c0b9cfba869c6 100644 --- a/src/inference/src/compilation_context.cpp +++ b/src/inference/src/compilation_context.cpp @@ -18,7 +18,6 @@ #include "itt.hpp" #include "ngraph/opsets/opset6.hpp" #include "openvino/pass/manager.hpp" -#include "transformations/fix_rt_info.hpp" #include "transformations/hash.hpp" #include "transformations/rt_info/fused_names_attribute.hpp" #include "transformations/rt_info/primitives_priority_attribute.hpp" @@ -86,7 +85,6 @@ std::string ModelCache::compute_hash(const std::shared_ptr& mod uint64_t seed = 0; // 1. Calculate hash on function ov::pass::Manager m; - m.register_pass(); m.register_pass(seed); m.run_passes(std::const_pointer_cast(model)); diff --git a/src/inference/tests/unit/compilation_context_test.cpp b/src/inference/tests/unit/compilation_context_test.cpp index 1f3d5266729c61..2070f2302e29ef 100644 --- a/src/inference/tests/unit/compilation_context_test.cpp +++ b/src/inference/tests/unit/compilation_context_test.cpp @@ -189,8 +189,7 @@ TEST(NetworkContext, HashWithPrimitivesPriority) { op3["PrimitivesPriority"] = "testPriority"; ASSERT_NE(ModelCache::compute_hash(net1, {}), ModelCache::compute_hash(net2, {})); - - ASSERT_EQ(ModelCache::compute_hash(net2, {}), ModelCache::compute_hash(net3, {})); + ASSERT_NE(ModelCache::compute_hash(net2, {}), ModelCache::compute_hash(net3, {})); } TEST(NetworkContext, HashWithFusedNames) { diff --git a/src/plugins/intel_cpu/tests/functional/test_utils/cpu_test_utils.cpp b/src/plugins/intel_cpu/tests/functional/test_utils/cpu_test_utils.cpp index e76d6caf9bdd33..e355ee79b75bcc 100644 --- a/src/plugins/intel_cpu/tests/functional/test_utils/cpu_test_utils.cpp +++ b/src/plugins/intel_cpu/tests/functional/test_utils/cpu_test_utils.cpp @@ -6,6 +6,7 @@ #include "ie_ngraph_utils.hpp" #include "openvino/core/type/element_type.hpp" #include "utils/rt_info/memory_formats_attribute.hpp" +#include "transformations/rt_info/primitives_priority_attribute.hpp" #include "utils/general_utils.h" #include @@ -101,7 +102,7 @@ std::string CPUTestsBase::fmts2str(const std::vector &fmts, return str; } -std::string CPUTestsBase::impls2str(const std::vector &priority) { +ov::PrimitivesPriority CPUTestsBase::impls2primProiority(const std::vector &priority) { std::string str; for (auto &impl : priority) { ((str += "cpu:") += impl) += ","; @@ -109,7 +110,7 @@ std::string CPUTestsBase::impls2str(const std::vector &priority) { if (!str.empty()) { str.pop_back(); } - return str; + return ov::PrimitivesPriority(str); } void CPUTestsBase::CheckPluginRelatedResults(InferenceEngine::ExecutableNetwork &execNet, const std::set& nodeType) const { @@ -321,7 +322,7 @@ CPUTestsBase::makeCPUInfo(const std::vector& inFmts, ov::intel_cpu::OutputMemoryFormats(fmts2str(outFmts, "cpu:"))}); } if (!priority.empty()) { - cpuInfo.insert({"PrimitivesPriority", impls2str(priority)}); + cpuInfo.emplace(ov::PrimitivesPriority::get_type_info_static(), impls2primProiority(priority)); } cpuInfo.insert({"enforceBF16evenForGraphTail", true}); diff --git a/src/plugins/intel_cpu/tests/functional/test_utils/cpu_test_utils.hpp b/src/plugins/intel_cpu/tests/functional/test_utils/cpu_test_utils.hpp index b1e77e48fe70d4..d8deddfebe5d69 100644 --- a/src/plugins/intel_cpu/tests/functional/test_utils/cpu_test_utils.hpp +++ b/src/plugins/intel_cpu/tests/functional/test_utils/cpu_test_utils.hpp @@ -7,6 +7,7 @@ #include #include "ie_system_conf.h" #include "shared_test_classes/base/layer_test_utils.hpp" +#include "transformations/rt_info/primitives_priority_attribute.hpp" #include #include #include "ie_system_conf.h" @@ -122,7 +123,7 @@ class CPUTestsBase { static const char *cpu_fmt2str(cpu_memory_format_t v); static cpu_memory_format_t cpu_str2fmt(const char *str); static std::string fmts2str(const std::vector &fmts, const std::string &prefix); - static std::string impls2str(const std::vector &priority); + static ov::PrimitivesPriority impls2primProiority(const std::vector &priority); static CPUInfo makeCPUInfo(const std::vector& inFmts, const std::vector& outFmts, const std::vector& priority); diff --git a/src/plugins/template/tests/functional/CMakeLists.txt b/src/plugins/template/tests/functional/CMakeLists.txt index a4ba476c4c2200..983ee2534a497c 100644 --- a/src/plugins/template/tests/functional/CMakeLists.txt +++ b/src/plugins/template/tests/functional/CMakeLists.txt @@ -28,11 +28,11 @@ ov_add_test_target( find_package(OpenCV QUIET COMPONENTS core imgproc) if(OpenCV_FOUND AND OpenCV_VERSION VERSION_GREATER_EQUAL 3.4) - message("-- Reference preprocessing: OpenCV tests are enabled") + message(STATUS "Reference preprocessing: OpenCV tests are enabled") target_compile_definitions(${TARGET_NAME} PRIVATE OPENCV_TEMPLATE_TESTS) target_link_libraries(${TARGET_NAME} PRIVATE opencv_imgproc opencv_core) else() - message("-- Reference preprocessing: OpenCV tests are disabled, because OpenCV ver. 3.4+ is not found") + message(WARNING "Reference preprocessing: OpenCV tests are disabled, because OpenCV ver. 3.4+ is not found") endif() if (ENABLE_INTEL_CPU) diff --git a/src/tests/test_utils/functional_test_utils/src/summary/op_summary.cpp b/src/tests/test_utils/functional_test_utils/src/summary/op_summary.cpp index 626cce43c2048d..08a0d9c0a2486e 100644 --- a/src/tests/test_utils/functional_test_utils/src/summary/op_summary.cpp +++ b/src/tests/test_utils/functional_test_utils/src/summary/op_summary.cpp @@ -140,7 +140,7 @@ void OpSummary::updateOPsStats(const std::shared_ptr& model, const Pa return; } bool isFunctionalGraph = false; - for (const auto &op : model->get_ordered_ops()) { + for (const auto& op : model->get_ordered_ops()) { if (!std::dynamic_pointer_cast(op) && !std::dynamic_pointer_cast(op) && !std::dynamic_pointer_cast(op)) { From c7850276ddc55784b5a785cef687289508c07d0c Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Tue, 19 Sep 2023 00:11:05 +0400 Subject: [PATCH 06/46] Check only build requirements for Python API (#19919) --- src/bindings/python/CMakeLists.txt | 31 +++++++++++------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/src/bindings/python/CMakeLists.txt b/src/bindings/python/CMakeLists.txt index 4c4c9bce4d7804..24089b38531c27 100644 --- a/src/bindings/python/CMakeLists.txt +++ b/src/bindings/python/CMakeLists.txt @@ -20,8 +20,7 @@ endif() # Check python requirements # -set(ov_python_req "${OpenVINOPython_SOURCE_DIR}/requirements.txt") -set(ie_python_req "${OpenVINOPython_SOURCE_DIR}/src/compatibility/openvino/requirements-dev.txt") +set(ie_build_python_req "${OpenVINOPython_SOURCE_DIR}/src/compatibility/openvino/requirements-dev.txt") function(ov_check_python_build_conditions) # user explicitly specified ENABLE_PYTHON=ON @@ -81,31 +80,23 @@ function(ov_check_python_build_conditions) message(${message_mode} "Python 3.x interpreter is not found. OpenVINO Python API will be turned off (ENABLE_PYTHON is OFF)") endif() - # check pyopenvino requirements to OV 2.0 API - ov_check_pip_packages(REQUIREMENTS_FILE ${ov_python_req} - RESULT_VAR ov_python_req_FOUND - WARNING_MESSAGE "install python3 -m pip install -r ${ov_python_req} for OV API 2.0 requirements" - MESSAGE_MODE TRACE) - # ov_python_req are not mandatory for build - set(ov_python_req_FOUND ON) - # check for Cython requirement for build IE API 1.0 - ov_check_pip_packages(REQUIREMENTS_FILE ${ie_python_req} - RESULT_VAR ie_python_req_FOUND - WARNING_MESSAGE "install python3 -m pip install -r ${ie_python_req} for IE API 1.0 requirements" + ov_check_pip_packages(REQUIREMENTS_FILE ${ie_build_python_req} + RESULT_VAR ie_build_python_req_FOUND + WARNING_MESSAGE "install python3 -m pip install -r ${ie_build_python_req} for IE API 1.0 requirements" MESSAGE_MODE TRACE) # cython can be installed as a debian package, so pip requirements can be unsatisfied # so, let's check to find cython anyway - if(NOT ie_python_req_FOUND) + if(NOT ie_build_python_req_FOUND) find_package(Cython QUIET PATHS "${OpenVINOPython_SOURCE_DIR}/src/compatibility/openvino/cmake" NO_CMAKE_FIND_ROOT_PATH NO_DEFAULT_PATH) if(CYTHON_VERSION VERSION_GREATER_EQUAL 0.29) - set(ie_python_req_FOUND ON) + set(ie_build_python_req_FOUND ON) else() - message(${message_mode} "Python requirements '${ie_python_req}' are missed, IE Python API 1.0 will not be built (ENABLE_PYTHON is OFF)") + message(${message_mode} "Python requirements '${ie_build_python_req}' are missed, IE Python API 1.0 will not be built (ENABLE_PYTHON is OFF)") endif() endif() @@ -116,14 +107,14 @@ function(ov_check_python_build_conditions) set(python_debug OFF) endif() - if(PYTHONLIBS_FOUND AND ov_python_req_FOUND AND ie_python_req_FOUND AND NOT python_debug) + if(PYTHONLIBS_FOUND AND ie_build_python_req_FOUND AND NOT python_debug) set(ENABLE_PYTHON_DEFAULT ON PARENT_SCOPE) else() set(ENABLE_PYTHON_DEFAULT OFF PARENT_SCOPE) endif() # to disable API 1.0 - set(ie_python_req_FOUND ${ie_python_req_FOUND} PARENT_SCOPE) + set(ie_build_python_req_FOUND ${ie_build_python_req_FOUND} PARENT_SCOPE) # set pybind11 minimal version set(pybind11_min_version ${pybind11_min_version} PARENT_SCOPE) endfunction() @@ -178,7 +169,7 @@ ie_dependent_option(ENABLE_WHEEL "Build wheel packages for PyPI" ${ENABLE_WHEEL_ if(NOT ENABLE_PYTHON) if(CMAKE_SOURCE_DIR STREQUAL OpenVINOPython_SOURCE_DIR) - message(FATAL_ERROR "Python OpenVINO API requirements are not satisfied. Please, install ${ie_python_req} and ${ov_python_req}") + message(FATAL_ERROR "Python OpenVINO API requirements are not satisfied. Please, install ${ie_build_python_req}") else() return() endif() @@ -201,7 +192,7 @@ endif() add_subdirectory(src/compatibility/pyngraph) add_subdirectory(src/pyopenvino) -if(ie_python_req_FOUND) +if(ie_build_python_req_FOUND) add_subdirectory(src/compatibility/openvino) else() message(WARNING "NOTE: Python API for OpenVINO 1.0 is disabled") From 6556d07c321476618ea4e88a98588f7df349aaca Mon Sep 17 00:00:00 2001 From: Roman Kazantsev Date: Tue, 19 Sep 2023 00:25:44 +0400 Subject: [PATCH 07/46] [TF FE][Tests] Fix sporadic failure in CTCLoss test (#19920) --- tests/layer_tests/tensorflow_tests/test_tf_CTCLoss.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/layer_tests/tensorflow_tests/test_tf_CTCLoss.py b/tests/layer_tests/tensorflow_tests/test_tf_CTCLoss.py index 5a9b024f509ae6..78289a7144ba7a 100644 --- a/tests/layer_tests/tensorflow_tests/test_tf_CTCLoss.py +++ b/tests/layer_tests/tensorflow_tests/test_tf_CTCLoss.py @@ -58,4 +58,4 @@ def test_ctcloss_placeholder_const(self, params, ie_device, precision, ir_versio use_new_frontend, use_old_api): self._test(*self.create_ctcloss_placeholder_const_net(**params), ie_device, precision, ir_version, temp_dir=temp_dir, - use_new_frontend=use_new_frontend, use_old_api=use_old_api, custom_eps=1e-3) + use_new_frontend=use_new_frontend, use_old_api=use_old_api, custom_eps=1e-2) From e34c5a09c6ccd42dacc360dd780496107d537bf8 Mon Sep 17 00:00:00 2001 From: Przemyslaw Wysocki Date: Mon, 18 Sep 2023 22:36:13 +0200 Subject: [PATCH 08/46] [PyOV] Add an `__init__.py` alignment check in CMake (#19882) * Add init check * Apply CR --- src/bindings/python/CMakeLists.txt | 31 +++++++++++++++++ .../src/compatibility/openvino/__init__.py | 2 +- tools/openvino_dev/CMakeLists.txt | 33 +++++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) diff --git a/src/bindings/python/CMakeLists.txt b/src/bindings/python/CMakeLists.txt index 24089b38531c27..a273184c4b8d1d 100644 --- a/src/bindings/python/CMakeLists.txt +++ b/src/bindings/python/CMakeLists.txt @@ -121,6 +121,37 @@ endfunction() ov_check_python_build_conditions() +# check __init__.py files alignment + +function(ov_check_init_files_alignment) + # check the files in pairs + list(APPEND init_files + "${OpenVINOPython_SOURCE_DIR}/src/openvino/__init__.py" + "${OpenVINOPython_SOURCE_DIR}/src/compatibility/openvino/__init__.py" + "${OpenVINO_SOURCE_DIR}/tools/mo/openvino/__init__.py" + "${OpenVINO_SOURCE_DIR}/tools/pot/openvino/__init__.py" + "${OpenVINO_SOURCE_DIR}/tools/ovc/openvino/__init__.py" + "${OpenVINO_SOURCE_DIR}/tools/benchmark_tool/openvino/__init__.py" + "${OpenVINO_SOURCE_DIR}/tools/openvino_dev/src/openvino/__init__.py") + + list(LENGTH init_files init_files_count) + math(EXPR file_loop_range "${init_files_count}-2") + foreach(init_file_idx RANGE 0 ${file_loop_range}) + math(EXPR init_file_idx_next "${init_file_idx}+1") + list(GET init_files ${init_file_idx} file1) + list(GET init_files ${init_file_idx_next} file2) + + execute_process(COMMAND ${CMAKE_COMMAND} -E compare_files ${file1} ${file2} + RESULT_VARIABLE compare_result + ) + if(compare_result EQUAL 1) + message(FATAL_ERROR "The __init__.py files are misaligned: ${file1} and ${file2}") + endif() + endforeach() +endfunction() + +ov_check_init_files_alignment() + ie_option(ENABLE_PYTHON "Enables OpenVINO Python API build" ${ENABLE_PYTHON_DEFAULT}) # diff --git a/src/bindings/python/src/compatibility/openvino/__init__.py b/src/bindings/python/src/compatibility/openvino/__init__.py index 8f0113d5bcaf6c..90552e0befed68 100644 --- a/src/bindings/python/src/compatibility/openvino/__init__.py +++ b/src/bindings/python/src/compatibility/openvino/__init__.py @@ -57,6 +57,6 @@ # Tools try: # Model Conversion API - ovc should reside in the main namespace - from openvino.tools.ovc import convert_model, InputCutInfo + from openvino.tools.ovc import convert_model except ImportError: pass diff --git a/tools/openvino_dev/CMakeLists.txt b/tools/openvino_dev/CMakeLists.txt index 2d2066d660dca3..42ad4031d69955 100644 --- a/tools/openvino_dev/CMakeLists.txt +++ b/tools/openvino_dev/CMakeLists.txt @@ -54,6 +54,39 @@ foreach(EXTRAS IN LISTS EXTRAS_LIST) ${OV_CPACK_COMP_OPENVINO_DEV_REQ_FILES_EXCLUDE_ALL}) endforeach() +# check __init__.py files alignment + +function(ov_check_init_files_alignment) + # check the files in pairs + list(APPEND init_files + "${OpenVINO_SOURCE_DIR}/src/bindings/python/src/openvino/__init__.py" + "${OpenVINO_SOURCE_DIR}/src/bindings/python/src/compatibility/openvino/__init__.py" + "${OpenVINO_SOURCE_DIR}/tools/mo/openvino/__init__.py" + "${OpenVINO_SOURCE_DIR}/tools/pot/openvino/__init__.py" + "${OpenVINO_SOURCE_DIR}/tools/ovc/openvino/__init__.py" + "${OpenVINO_SOURCE_DIR}/tools/benchmark_tool/openvino/__init__.py" + "${OpenVINO_SOURCE_DIR}/tools/openvino_dev/src/openvino/__init__.py") + + list(LENGTH init_files init_files_count) + math(EXPR file_loop_range "${init_files_count}-2") + foreach(init_file_idx RANGE 0 ${file_loop_range}) + math(EXPR init_file_idx_next "${init_file_idx}+1") + list(GET init_files ${init_file_idx} file1) + list(GET init_files ${init_file_idx_next} file2) + + execute_process(COMMAND ${CMAKE_COMMAND} -E compare_files ${file1} ${file2} + RESULT_VARIABLE compare_result + ) + if(compare_result EQUAL 1) + message(STATUS ${file1}) + message(STATUS ${file2}) + message(FATAL_ERROR "The __init__.py files are misaligned: ${file1} and ${file2}") + endif() + endforeach() +endfunction() + +ov_check_init_files_alignment() + # openvino_dev build if(NOT ENABLE_WHEEL) From 03918c2cac9ace8a78d963dd1191b1318a8b3f14 Mon Sep 17 00:00:00 2001 From: Paul Youngsoo Ahn Date: Tue, 19 Sep 2023 06:13:38 +0900 Subject: [PATCH 09/46] bug fix update (#19568) * [GPU] Fix gpu functional test failures * set m_max_batch to 1 * add debug log for condition operation * Add debug logs for condition and constant * To fix zero byte allocation issue, Convert zero dimension to 1 dimension in constant * Add the code to check if output shape is dynamic in split offset calculation and checking allow_new_shape_infer in program_builder * Add unit test for fix checking output shape * Add test case for zero dimennsion allocation and debug message * Fix build failure for condition unit test * Follow up code review --- .../intel_gpu/primitives/condition.hpp | 10 +-- .../src/graph/impls/common/condition.cpp | 3 + src/plugins/intel_gpu/src/graph/network.cpp | 15 +++- .../intel_gpu/src/plugin/ops/condition.cpp | 7 ++ .../intel_gpu/src/plugin/ops/constant.cpp | 8 +- .../intel_gpu/src/plugin/ops/split.cpp | 23 ++++- .../intel_gpu/src/plugin/program_builder.cpp | 8 ++ .../single_layer_tests/dynamic/shapeof.cpp | 85 +++++++++++++++++++ .../single_layer_tests/dynamic/split.cpp | 16 ++++ .../functional/subgraph_tests/condition.cpp | 82 ++++++++++++++++-- 10 files changed, 240 insertions(+), 17 deletions(-) diff --git a/src/plugins/intel_gpu/include/intel_gpu/primitives/condition.hpp b/src/plugins/intel_gpu/include/intel_gpu/primitives/condition.hpp index 664b240cba8a8a..5ad37c7dfa55bf 100644 --- a/src/plugins/intel_gpu/include/intel_gpu/primitives/condition.hpp +++ b/src/plugins/intel_gpu/include/intel_gpu/primitives/condition.hpp @@ -26,19 +26,17 @@ struct condition : public primitive_base { std::string str() { std::stringstream ss; - ss << "branch: { " << std::endl; - ss<< "* input_map : [(outer_id,inner_id),"; + ss << "branch: {input_map : [(outer_id,inner_id),"; for (auto& in_iter : input_map) { ss << "(" << in_iter.first << "," << in_iter.second << "),"; } - ss << "]," << std::endl; + ss << "],"; - ss << "* output_map : [(outer_idx,inner_id),"; + ss << " output_map : [(outer_idx,inner_id),"; for (auto& out_iter : output_map) { ss << "(" << out_iter.first << ","<< out_iter.second << "),"; } - ss << "]" << std::endl; - ss << "}" << std::endl; + ss << "]}"; return ss.str(); } }; diff --git a/src/plugins/intel_gpu/src/graph/impls/common/condition.cpp b/src/plugins/intel_gpu/src/graph/impls/common/condition.cpp index 4a1a8b414f0b0a..fbcdf6b277645b 100644 --- a/src/plugins/intel_gpu/src/graph/impls/common/condition.cpp +++ b/src/plugins/intel_gpu/src/graph/impls/common/condition.cpp @@ -39,6 +39,7 @@ struct condition_impl : typed_primitive_impl { auto pred = condition_inst::get_pred_from_memory(instance.pred_memory_ptr(), instance.get_network().get_stream()); network::ptr executed_net = pred? instance.get_net_true() : instance.get_net_false(); auto branch = pred? instance.get_branch_true() : instance.get_branch_false(); + GPU_DEBUG_LOG << "predicate: " << (pred ? "True" : "False") << std::endl; // Set input memory of inner network before its execution for (size_t mem_idx = 0; mem_idx < instance.inputs_memory_count(); mem_idx++) { @@ -48,6 +49,7 @@ struct condition_impl : typed_primitive_impl { const primitive_id& input_internal_id = iter->second; auto mem_ptr = instance.input_memory_ptr(mem_idx); executed_net->set_input_data(input_internal_id, mem_ptr); + GPU_DEBUG_LOG << "Inner net - Inputs[" << mem_idx << "]" << mem_ptr->get_layout().to_short_string() << std::endl; } } @@ -62,6 +64,7 @@ struct condition_impl : typed_primitive_impl { auto inner_out_id = out_mem_map.second; auto mem_ptr = executed_net->get_output(inner_out_id).get_memory(); instance.set_output_memory(mem_ptr, false, out_mem_idx); + GPU_DEBUG_LOG << "Inner net - Outputs[" << out_mem_idx << "]" << mem_ptr->get_layout().to_short_string() << std::endl; } ev->set(); diff --git a/src/plugins/intel_gpu/src/graph/network.cpp b/src/plugins/intel_gpu/src/graph/network.cpp index eb971ae9410e5f..ea2225b48844d1 100644 --- a/src/plugins/intel_gpu/src/graph/network.cpp +++ b/src/plugins/intel_gpu/src/graph/network.cpp @@ -1234,9 +1234,18 @@ void network::execute_impl(const std::vector& events) { GPU_DEBUG_COUT << inst->id() << std::endl; if (inst->get_node().is_type()) { auto& loop_node = inst->get_node().as(); - auto loop_body_primitives = loop_node.get_body_topology().get_primitives_ids(); - for (auto& primitive_id : loop_body_primitives) { - GPU_DEBUG_COUT << "\t" << primitive_id << std::endl; + for (auto& prim : loop_node.get_body_program()->get_processing_order()) { + GPU_DEBUG_COUT << "\t" << prim->id() << std::endl; + } + } else if (inst->get_node().is_type()) { + auto& cond_node = inst->get_node().as(); + GPU_DEBUG_COUT << "* Branch_True" << std::endl; + for (auto& prim : cond_node.get_branch_true().inner_program->get_processing_order()) { + GPU_DEBUG_COUT << "\t" << prim->id() << std::endl; + } + GPU_DEBUG_COUT << "* Branch_False" << std::endl; + for (auto& prim : cond_node.get_branch_false().inner_program->get_processing_order()) { + GPU_DEBUG_COUT << "\t" << prim->id() << std::endl; } } } diff --git a/src/plugins/intel_gpu/src/plugin/ops/condition.cpp b/src/plugins/intel_gpu/src/plugin/ops/condition.cpp index fde2e65d62c474..d9b4e77314e600 100644 --- a/src/plugins/intel_gpu/src/plugin/ops/condition.cpp +++ b/src/plugins/intel_gpu/src/plugin/ops/condition.cpp @@ -14,6 +14,12 @@ const size_t idx_false = 1; static cldnn::condition::branch gen_branch(ProgramBuilder& p, const std::shared_ptr& op, size_t idx) { cldnn::condition::branch branch; const auto& internal_body = (idx == idx_true)? op->get_then_body() : op->get_else_body(); + GPU_DEBUG_LOG << "Generate inner program for " << "op::v" + << op->get_type_info().version_id << "::" + << op->get_type_name() << " operation " + << "(friendly_name=" << op->get_friendly_name() << ") : " + << internal_body->get_friendly_name() + << ", num inputs: " << op->get_input_size() << std::endl; auto config = p.get_config(); config.set_property(ov::intel_gpu::max_dynamic_batch(1)); @@ -40,6 +46,7 @@ static cldnn::condition::branch gen_branch(ProgramBuilder& p, const std::shared_ output_map.insert({out_desc->m_output_index, internal_id}); } + GPU_DEBUG_LOG << op->get_friendly_name() << " branch_info[" << internal_body->get_friendly_name() << "] : " << branch << std::endl; return branch; } diff --git a/src/plugins/intel_gpu/src/plugin/ops/constant.cpp b/src/plugins/intel_gpu/src/plugin/ops/constant.cpp index 664098477e82aa..10eaa80327ff9c 100644 --- a/src/plugins/intel_gpu/src/plugin/ops/constant.cpp +++ b/src/plugins/intel_gpu/src/plugin/ops/constant.cpp @@ -97,8 +97,14 @@ static void create_data(ProgramBuilder& p, const ov::Shape& constDims, const std p.primitive_ids[initialconstPrimID] = constPrimID; p.profiling_ids.push_back(initialconstPrimID); } else { - GPU_DEBUG_LOG << "[" << initialconstPrimID << ": constant]" << std::endl; + if (constLayout.count() == 0) { + // Convert zero dimension constant layout to 1 dimension to fix the issue + // that memory allocation is failed on windows when constant layout is zero dimension. + constLayout = cldnn::layout(ov::PartialShape({1}), constLayout.data_type, constLayout.format); + } cldnn::memory::ptr mem = p.get_engine().allocate_memory(constLayout, false); + GPU_DEBUG_LOG << "[" << initialconstPrimID << ": constant] layout: " + << constLayout.to_short_string() << ", mem_ptr(" << mem << ", " << mem->size() << " bytes)"<< std::endl; auto& stream = p.get_engine().get_service_stream(); cldnn::mem_lock lock{mem, stream}; auto buf = lock.data(); diff --git a/src/plugins/intel_gpu/src/plugin/ops/split.cpp b/src/plugins/intel_gpu/src/plugin/ops/split.cpp index be35125f1b4689..be7d2dad4b0942 100644 --- a/src/plugins/intel_gpu/src/plugin/ops/split.cpp +++ b/src/plugins/intel_gpu/src/plugin/ops/split.cpp @@ -13,6 +13,21 @@ namespace ov { namespace intel_gpu { +static bool IsDynamic(const std::shared_ptr& op) { + if (op->is_dynamic()) { + return true; + } + + for (size_t i = 0; i < op->get_output_size(); i++) { + const auto outPartialShape = op->get_output_partial_shape(i); + if (outPartialShape.is_dynamic()) { + return true; + } + } + + return false; +} + static void CreateCommonSplitOp(ProgramBuilder& p, const std::shared_ptr& op) { auto get_layer_name = [&](size_t idx)->std::string { return layer_type_name_ID(op) + ((op->get_output_size() == 1)? "" : ".out" + std::to_string(idx)); @@ -22,11 +37,15 @@ static void CreateCommonSplitOp(ProgramBuilder& p, const std::shared_ptris_dynamic()) { std::vector offsets; - if (!op->is_dynamic()) { + // op->is_dynamic() does not check if output shape is dynamic. it only check dynamism for input shapes + // Even if op->is_dynamic() is false, output shape can be dynamic. + // Thus, it is necessary to check if output shape is dynamic. + if (!IsDynamic(op)) { auto input_pshape = op->get_input_partial_shape(0); ov::Shape start_offset(input_pshape.size()); for (size_t i = 0; i < op->get_output_size(); i++) { const auto outPartialShape = op->get_output_partial_shape(i); + auto offsetTensor = tensor_from_dims(start_offset, 0); offsets.push_back(offsetTensor); @@ -49,7 +68,7 @@ static void CreateCommonSplitOp(ProgramBuilder& p, const std::shared_ptris_dynamic() ? cldnn::tensor(0) : offsets[i]), + (offsets.empty() ? cldnn::tensor(0) : offsets[i]), op_mode, static_cast(i), num_splits); diff --git a/src/plugins/intel_gpu/src/plugin/program_builder.cpp b/src/plugins/intel_gpu/src/plugin/program_builder.cpp index 231ee37252a2a5..404818ce92ce8c 100644 --- a/src/plugins/intel_gpu/src/plugin/program_builder.cpp +++ b/src/plugins/intel_gpu/src/plugin/program_builder.cpp @@ -314,6 +314,14 @@ bool ProgramBuilder::requires_new_shape_infer(const ov::Node& op) const { return true; } + // When input node has dynamic shape with 4 dimension, this function return false + // because op.is_dynamic() which only checks input shapes return false. + // So, in the case of input data, we need to check output shape. + for (size_t i = 0; i < op.get_output_size(); i++) { + if (op.get_output_partial_shape(i).is_dynamic()) + return true; + } + if (ov::is_type(&op)) return true; diff --git a/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/shapeof.cpp b/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/shapeof.cpp index 7f4f6d6689e79f..f9244790e9fc7a 100644 --- a/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/shapeof.cpp +++ b/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/shapeof.cpp @@ -215,4 +215,89 @@ INSTANTIATE_TEST_SUITE_P(smoke_ShapeOf_5d_compareWithRefs_static, } // namespace +using ShapeOfParams = typename std::tuple< + InputShape, // Shape + InferenceEngine::Precision, // Precision + LayerTestsUtils::TargetDevice // Device name +>; + +class ShapeOfDynamicInputGPUTest : public testing::WithParamInterface, + virtual public SubgraphBaseTest { +public: + static std::string getTestCaseName(const testing::TestParamInfo& obj) { + InputShape inputShapes; + InferenceEngine::Precision dataPrc; + std::string targetDevice; + + std::tie(inputShapes, dataPrc, targetDevice) = obj.param; + std::ostringstream result; + result << "IS=("; + result << ov::test::utils::partialShape2str({inputShapes.first}) << "_"; + for (size_t i = 0lu; i < inputShapes.second.size(); i++) { + result << "{"; + result << ov::test::utils::vec2str(inputShapes.second[i]) << "_"; + result << "}_"; + } + result << ")_"; + result << "netPRC=" << dataPrc << "_"; + result << "targetDevice=" << targetDevice << "_"; + auto res_str = result.str(); + std::replace(res_str.begin(), res_str.end(), '-', '_'); + return res_str; + } + +protected: + void SetUp() override { + InputShape inputShapes; + InferenceEngine::Precision dataPrc; + targetDevice = ov::test::utils::DEVICE_GPU; + + std::tie(inputShapes, dataPrc, targetDevice) = GetParam(); + + init_input_shapes({inputShapes}); + + InferenceEngine::PreProcessInfo pre_process_info; + pre_process_info.setVariant(InferenceEngine::MeanVariant::MEAN_VALUE); + + const auto prc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(dataPrc); + + auto input = std::make_shared(prc, inputShapes.first); + input->get_output_tensor(0).get_rt_info()["ie_legacy_preproc"] = pre_process_info; + input->set_friendly_name("input_data"); + + auto shape_of_01 = std::make_shared(input); + shape_of_01->set_friendly_name("shape_of_01"); + + auto shape_of_02 = std::make_shared(shape_of_01); + shape_of_02->set_friendly_name("shape_of_02"); + + auto result = std::make_shared(shape_of_02); + result->set_friendly_name("outer_result"); + + function = std::make_shared(ngraph::OutputVector{result}, ngraph::ParameterVector{input}); + function->set_friendly_name("shape_of_test"); + } +}; + +TEST_P(ShapeOfDynamicInputGPUTest, CompareWithRefs) { + SKIP_IF_CURRENT_TEST_IS_DISABLED() + + run(); +} + +const std::vector dynamicInputShapes = { + ov::test::InputShape(ov::PartialShape({-1, -1, -1, -1, -1}), {{4, 1, 1, 64, 32}, {6, 1, 1, 8, 4}, {8, 1, 1, 24, 16}}), +}; + +const std::vector dynamicInputPrec = { + InferenceEngine::Precision::FP16, +}; + +INSTANTIATE_TEST_SUITE_P(smoke_Check, ShapeOfDynamicInputGPUTest, + testing::Combine( + testing::ValuesIn(dynamicInputShapes), // input shapes + testing::ValuesIn(dynamicInputPrec), // network precision + testing::Values(ov::test::utils::DEVICE_GPU)), // device type + ShapeOfDynamicInputGPUTest::getTestCaseName); + } // namespace GPULayerTestsDefinitions diff --git a/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/split.cpp b/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/split.cpp index c652a9770aa0c4..7a0b3fda62bcfe 100644 --- a/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/split.cpp +++ b/src/plugins/intel_gpu/tests/functional/single_layer_tests/dynamic/split.cpp @@ -264,4 +264,20 @@ INSTANTIATE_TEST_SUITE_P(smoke_VariadicSplitsCheck6D, VariadicSplitLayerGPUDynam ::testing::ValuesIn(restInputTypes)), // input type of splitLength VariadicSplitLayerGPUDynamicTest::getTestCaseName); + +const std::vector inputShapes4d_static = { + { + {5, 16, 10, 8}, {{5, 16, 10, 8}, } + } +}; + +INSTANTIATE_TEST_SUITE_P(smoke_VariadicSplitsCheck4D_static_input_dyn_output, VariadicSplitLayerGPUDynamicTest, + ::testing::Combine( + ::testing::Values(1), // axes + ::testing::Values(std::vector{2, 1, -1}), // splitLength + ::testing::Values(ElementType::f16), // netPrec + ::testing::ValuesIn(inputShapes4d_static), // inShapes + ::testing::ValuesIn(restInputTypes)), // input type of splitLength + VariadicSplitLayerGPUDynamicTest::getTestCaseName); + } // namespace GPULayerTestsDefinitions diff --git a/src/plugins/intel_gpu/tests/functional/subgraph_tests/condition.cpp b/src/plugins/intel_gpu/tests/functional/subgraph_tests/condition.cpp index 3f7e7f4bf4ff25..67cada5dbf661e 100644 --- a/src/plugins/intel_gpu/tests/functional/subgraph_tests/condition.cpp +++ b/src/plugins/intel_gpu/tests/functional/subgraph_tests/condition.cpp @@ -13,6 +13,8 @@ #include "common_test_utils/test_constants.hpp" #include "shared_test_classes/base/utils/ranges.hpp" #include +#include "shared_test_classes/base/utils/compare_results.hpp" +#include "openvino/pass/constant_folding.hpp" using namespace InferenceEngine; @@ -45,7 +47,11 @@ enum InnerBodyType { /** * Inner body with nested condition case */ - Type05 = 5 + Type05 = 5, + /** + * Inner body with single constant with zero dimensions + */ + Type06 = 6 }; public: @@ -251,6 +257,24 @@ class InnerBodyType05 : public InnerBodyGenerator { } }; +class InnerBodyType06 : public InnerBodyGenerator { +protected: + std::shared_ptr generate(ov::PartialShape& input_shape, ngraph::element::Type prc) override { + auto constant = ngraph::opset9::Constant::create(prc, ov::Shape(input_shape.rank().get_length(), 0), {2.0f}); + constant->set_friendly_name("body1_constant"); + // constant->get_rt_info().emplace(ov::pass::DisableConstantFolding::get_type_info_static(), ov::pass::DisableConstantFolding{}); + // constant->get_rt_info().emplace("can_be_folded", false); + auto result = std::make_shared(constant); + auto o_layout = result->get_layout(); + result->set_friendly_name("body1_result"); + auto body = std::make_shared( + ngraph::OutputVector {result}, + ngraph::ParameterVector{}, + "constant_only"); + return body; + } +}; + static std::shared_ptr get_inner_body_generator(InnerBodyGenerator::InnerBodyType type) { std::shared_ptr generator_ptr; switch (type) { @@ -274,6 +298,10 @@ static std::shared_ptr get_inner_body_generator(InnerBodyGen { return std::make_shared(); } + case InnerBodyGenerator::InnerBodyType::Type06: + { + return std::make_shared(); + } default: { OPENVINO_ASSERT(false, "Not supported type"); @@ -314,9 +342,22 @@ class TestModelGenerator { cond->set_then_body(body_then_generator->get_function()); cond->set_input(data, body_then_generator->get_input(), body_else_generator->get_input()); cond->set_output(body_then_generator->get_result(), body_else_generator->get_result()); - auto result = std::make_shared(cond); - result->set_friendly_name("outer_result"); - function = std::make_shared(ngraph::OutputVector {result}, params); + if (then_body_type == InnerBodyGenerator::InnerBodyType::Type06 || else_body_type == InnerBodyGenerator::InnerBodyType::Type06) { + auto constant = create_condition_input(params, prc, ngraph::Shape{1}, 0, true); + auto addition = std::make_shared(cond, constant); + auto shapeof1 = std::make_shared(addition); + auto convert = std::make_shared(shapeof1, prc); + auto mul = std::make_shared(convert, constant); + auto shapePatternsNode = create_condition_input(params, ov::element::Type_t::i64, ngraph::Shape{1}, 0, true); + auto reshapeOp = std::make_shared(mul, shapePatternsNode, true); + auto result = std::make_shared(reshapeOp); + result->set_friendly_name("outer_result"); + function = std::make_shared(ngraph::OutputVector {result}, params); + } else { + auto result = std::make_shared(cond); + result->set_friendly_name("outer_result"); + function = std::make_shared(ngraph::OutputVector {result}, params); + } } std::shared_ptr get_function() { return function; } @@ -394,6 +435,11 @@ static std::ostream& operator<<(std::ostream& os, const InnerBodyGenerator::Inne os << "Type05"; break; } + case InnerBodyGenerator::InnerBodyType::Type06: + { + os << "Type06"; + break; + } default: { os << "NONE"; @@ -596,7 +642,8 @@ class DynamicConditionLayerGPUTest : public testing::WithParamInterface& targetInputStaticShapes) override { ov::Shape input_shape; for (auto& shape : targetInputStaticShapes) { - if (shape.size() > 1) { + // Change condition to cover 1 dim input shape + if (shape.size() > 0) { input_shape = shape; break; } @@ -622,6 +669,7 @@ class DynamicConditionLayerGPUTest : public testing::WithParamInterface dynamicInputShapes_f16 = { ov::test::InputShape(ov::PartialShape({-1, -1, -1}), {{2, 24, 16}, {2, 64, 32}, {2, 8, 4}}) }; +const std::vector dynamicInputShapes_zero_dims = { + ov::test::InputShape(ov::PartialShape({-1}), {{24}, {64}, {8}}) +}; + const std::vector innerBodyTypes_f32 = { { InnerBodyGenerator::InnerBodyType::Type01, @@ -670,11 +722,22 @@ const std::vector innerBodyTypes_f16 = { } }; +const std::vector innerBodyTypes_zero_dims = { + { + InnerBodyGenerator::InnerBodyType::Type02, + InnerBodyGenerator::InnerBodyType::Type06 + }, +}; + const std::vector condTypes = { TestModelGenerator::PredicateTypes::PARAM, TestModelGenerator::PredicateTypes::NODE }; +const std::vector condTypes_zero_dims = { + TestModelGenerator::PredicateTypes::PARAM +}; + INSTANTIATE_TEST_SUITE_P(smoke_ConditionGPUTest_dynamic_f32, DynamicConditionLayerGPUTest, testing::Combine( testing::ValuesIn(dynamicInputShapes_f32), // input shapes @@ -693,4 +756,13 @@ INSTANTIATE_TEST_SUITE_P(smoke_ConditionGPUTest_dynamic_f16, DynamicConditionLay testing::ValuesIn(condTypes), // cond type testing::Values(ov::test::utils::DEVICE_GPU)), // device type DynamicConditionLayerGPUTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_ConditionGPUTest_zero_dims, DynamicConditionLayerGPUTest, + testing::Combine( + testing::ValuesIn(dynamicInputShapes_zero_dims), // input shapes + testing::ValuesIn(innerBodyTypes_zero_dims), // inner body type + testing::ValuesIn(netPrecisions_f32), // network precision + testing::ValuesIn(condTypes_zero_dims), // cond type + testing::Values(ov::test::utils::DEVICE_GPU)), // device type + DynamicConditionLayerGPUTest::getTestCaseName); } // namespace GPULayerTestsDefinitions From 691f5938d27820d409eb681e0d00c08a806e5222 Mon Sep 17 00:00:00 2001 From: Sofya Balandina Date: Tue, 19 Sep 2023 02:51:17 +0100 Subject: [PATCH 10/46] [template] Add faked hint property (#19887) * [template] Add faked hint property * fix comments --- src/plugins/template/src/config.cpp | 24 +++++++++++++++++++ src/plugins/template/src/config.hpp | 7 +++++- src/plugins/template/src/plugin.cpp | 4 ++++ .../ov_executable_network/properties.cpp | 2 +- .../behavior/ov_plugin/properties_tests.cpp | 2 +- .../ov_executable_network/properties.cpp | 11 +++++++++ .../behavior/ov_plugin/properties_tests.cpp | 7 ------ 7 files changed, 47 insertions(+), 10 deletions(-) diff --git a/src/plugins/template/src/config.cpp b/src/plugins/template/src/config.cpp index 155ed29ecd937a..683439d97018e5 100644 --- a/src/plugins/template/src/config.cpp +++ b/src/plugins/template/src/config.cpp @@ -36,6 +36,24 @@ Configuration::Configuration(const ov::AnyMap& config, const Configuration& defa } else if (ov::hint::performance_mode == key) { std::stringstream strm{value.as()}; strm >> performance_mode; + } else if (ov::hint::inference_precision == key) { + inference_precision = value.as(); + } else if (ov::hint::execution_mode == key) { + execution_mode = value.as(); + if ((execution_mode != ov::hint::ExecutionMode::ACCURACY) && + (execution_mode != ov::hint::ExecutionMode::PERFORMANCE)) { + OPENVINO_THROW("Unsupported execution mode, should be ACCURACY or PERFORMANCE, but was: ", + value.as()); + } + } else if (ov::num_streams == key) { + streams_executor_config.set_property(key, value); + } else if (ov::hint::num_requests == key) { + auto tmp_val = value.as(); + int tmp_i = std::stoi(tmp_val); + if (tmp_i >= 0) + num_requests = tmp_i; + else + OPENVINO_THROW("Incorrect value, it should be unsigned integer: ", key); } else if (throwOnUnsupported) { OPENVINO_THROW("Property was not found: ", key); } @@ -66,6 +84,12 @@ ov::Any Configuration::Get(const std::string& name) const { return {std::to_string(streams_executor_config._threadsPerStream)}; } else if (name == ov::hint::performance_mode) { return performance_mode; + } else if (name == ov::hint::inference_precision) { + return inference_precision; + } else if (name == ov::hint::execution_mode) { + return execution_mode; + } else if (name == ov::hint::num_requests) { + return num_requests; } else { OPENVINO_THROW("Property was not found: ", name); } diff --git a/src/plugins/template/src/config.hpp b/src/plugins/template/src/config.hpp index e2fb945e977895..d891fd472deddc 100644 --- a/src/plugins/template/src/config.hpp +++ b/src/plugins/template/src/config.hpp @@ -31,11 +31,16 @@ struct Configuration { // Plugin configuration parameters int device_id = 0; - bool perf_count = true; + bool perf_count = false; ov::threading::IStreamsExecutor::Config streams_executor_config; ov::hint::PerformanceMode performance_mode = ov::hint::PerformanceMode::LATENCY; + uint32_t num_requests = 1; bool disable_transformations = false; bool exclusive_async_requests = false; + + // unused + ov::element::Type inference_precision = ov::element::undefined; + ov::hint::ExecutionMode execution_mode = ov::hint::ExecutionMode::ACCURACY; }; // ! [configuration:header] diff --git a/src/plugins/template/src/plugin.cpp b/src/plugins/template/src/plugin.cpp index bcdd9b5ec3a0b4..2261204e5d7833 100644 --- a/src/plugins/template/src/plugin.cpp +++ b/src/plugins/template/src/plugin.cpp @@ -233,6 +233,10 @@ ov::Any ov::template_plugin::Plugin::get_property(const std::string& name, const std::vector rw_properties{ov::device::id, ov::enable_profiling, ov::hint::performance_mode, + ov::hint::num_requests, + ov::hint::inference_precision, + ov::hint::execution_mode, + ov::num_streams, ov::template_plugin::disable_transformations}; return rw_properties; }; diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp index f180776721f23e..64b6fc0c1722b1 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp @@ -34,7 +34,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_AutoBatch_BehaviorTests, OVClassCompiledModelPropertiesIncorrectTests::getTestCaseName); const std::vector default_properties = { - {ov::enable_profiling(true)}, + {ov::enable_profiling(false)}, {{ov::loaded_from_cache.name(), false}}, {ov::device::id("0")}, }; diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp index 03d05b6ea9f9bf..0f05a09f4da99d 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp @@ -22,7 +22,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVPropertiesIncorrectTests::getTestCaseName); const std::vector default_properties = { - {ov::enable_profiling(true)}, + {ov::enable_profiling(false)}, {ov::device::id(0)}, }; diff --git a/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_executable_network/properties.cpp b/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_executable_network/properties.cpp index 5efdb3dba35e0d..bb361ab03088d8 100644 --- a/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_executable_network/properties.cpp +++ b/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_executable_network/properties.cpp @@ -70,4 +70,15 @@ INSTANTIATE_TEST_SUITE_P( INSTANTIATE_TEST_SUITE_P(ov_plugin_mandatory, OVCompiledModelIncorrectDevice, ::testing::Values(targetDevice)); +const std::vector multiModelPriorityConfigs = { + {ov::hint::model_priority(ov::hint::Priority::HIGH)}, + {ov::hint::model_priority(ov::hint::Priority::MEDIUM)}, + {ov::hint::model_priority(ov::hint::Priority::LOW)}, + {ov::hint::model_priority(ov::hint::Priority::DEFAULT)}}; + +INSTANTIATE_TEST_SUITE_P(ov_compiled_model_mandatory, + OVClassCompiledModelGetPropertyTest_MODEL_PRIORITY, + ::testing::Combine(::testing::ValuesIn(return_all_possible_device_combination()), + ::testing::ValuesIn(multiModelPriorityConfigs))); + } // namespace diff --git a/src/tests/functional/plugin/shared/src/behavior/ov_plugin/properties_tests.cpp b/src/tests/functional/plugin/shared/src/behavior/ov_plugin/properties_tests.cpp index 82affbe613bec0..b5cbff685b6340 100644 --- a/src/tests/functional/plugin/shared/src/behavior/ov_plugin/properties_tests.cpp +++ b/src/tests/functional/plugin/shared/src/behavior/ov_plugin/properties_tests.cpp @@ -254,13 +254,6 @@ std::vector OVPropertiesTestsWithCompileModelProps::getRWMandatoryPr } } - if (props.empty() || std::find(props.begin(), props.end(), ov::hint::model_priority.name()) != props.end()) { - ov::hint::Priority priorities[] = {ov::hint::Priority::LOW , ov::hint::Priority::MEDIUM, ov::hint::Priority::HIGH}; - for (auto &priority : priorities) { - res.push_back({{ov::hint::model_priority(priority)}}); - } - } - if (props.empty() || std::find(props.begin(), props.end(), ov::hint::performance_mode.name()) != props.end()) { ov::hint::PerformanceMode performance_modes[] = {ov::hint::PerformanceMode::LATENCY, ov::hint::PerformanceMode::THROUGHPUT, ov::hint::PerformanceMode::CUMULATIVE_THROUGHPUT}; From 9c4bc1cc2b955e76b350616fe12ce92de2b862a0 Mon Sep 17 00:00:00 2001 From: Zhang Yi Date: Tue, 19 Sep 2023 14:30:33 +0800 Subject: [PATCH 11/46] [CPU] Fix OMP thread count for MLAS ThreadPool initialization (#19731) --- src/plugins/intel_cpu/src/mlas/sgemm.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/intel_cpu/src/mlas/sgemm.cpp b/src/plugins/intel_cpu/src/mlas/sgemm.cpp index 2b3ebf9ecf9a9f..b2c868ddb1ba55 100644 --- a/src/plugins/intel_cpu/src/mlas/sgemm.cpp +++ b/src/plugins/intel_cpu/src/mlas/sgemm.cpp @@ -54,7 +54,7 @@ void mlas_sgemm(const char* transa, sgemmParam.beta = beta; auto _transa = *transa == 'N' ? CblasNoTrans : CblasTrans; auto _transb = *transb == 'N' ? CblasNoTrans : CblasTrans; - ov::cpu::OVMlasThreadPool threadPool(0 == thread_num ? parallel_get_num_threads() : thread_num); + ov::cpu::OVMlasThreadPool threadPool(0 == thread_num ? parallel_get_max_threads() : thread_num); MlasGemmBatch(_transa, _transb, M, N, K, &sgemmParam, 1, &threadPool); } @@ -74,7 +74,7 @@ void mlas_sgemm_compute(const char* transa, const float* bias, size_t thread_num) { // C = alpha*op( A )op( B ) + beta * C - ov::cpu::OVMlasThreadPool threadPool(0 == thread_num ? parallel_get_num_threads() : thread_num); + ov::cpu::OVMlasThreadPool threadPool(0 == thread_num ? parallel_get_max_threads() : thread_num); MLAS_SGEMM_DATA_PARAMS sgemmParam; sgemmParam.BIsPacked = true; sgemmParam.A = A; From e961ce307be7820f8cb333f0cda5a2e12a031a53 Mon Sep 17 00:00:00 2001 From: Chenhu Wang Date: Tue, 19 Sep 2023 14:41:38 +0800 Subject: [PATCH 12/46] [CPU] Eliminate dependency for emitters tails process (#19527) --- .../src/emitters/x64/jit_load_store_emitters.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/plugins/intel_cpu/src/emitters/x64/jit_load_store_emitters.cpp b/src/plugins/intel_cpu/src/emitters/x64/jit_load_store_emitters.cpp index ce09fb071ea4ce..67159c582b0d33 100644 --- a/src/plugins/intel_cpu/src/emitters/x64/jit_load_store_emitters.cpp +++ b/src/plugins/intel_cpu/src/emitters/x64/jit_load_store_emitters.cpp @@ -234,6 +234,18 @@ void jit_load_emitter::load_bytes(const Vmm &vmm, const Xbyak::Reg64 ®, int o has_xmm_block = true; } + // Cornerstone of partial load is combinaion of vpinsrb/w/d. + // As vpinsrb/w/d will not only write(insert) values into vmm, but also read values in vmm to copy from to positions that not in imm mask, + // this could introduce RAW false dependency(we actually do not care about values not in imm mask). + // To eliminate this false dependency, + // 1. For 1/2/3/4 bytes tails, replace vpinsrb/w/d with mov,shl etc instructions that don't read vmm. + // Besides eliminate RAW, these instructions have smaller latency, which also bring better perf, especially for small loop iteration case. + // 2. For 8/16 bytes, use vmovq/vmovdqu instructions to load, which also don't read src vmm. + // 3. For other size, insert vpxor before vpinsrb/w/d. vpxor and read vmm instructions in previous loop have WAR(write after read) relationship. + // CPU can identify this scenario and assign another physical vector register(register renameing) in next loop to eliminate RAW. + if (!one_of(bytes_to_load, 0, 1, 2, 3, 4, 8, 16)) { + h->uni_vpxor(vmm, vmm, vmm); + } if (bytes_to_load >= 8 && bytes_to_load < 16) h->uni_vmovq(xmm, addr(start_bytes)); else if (bytes_to_load == 16) From 933d9c1c0abe9c33f4ee330eec95e2035016459c Mon Sep 17 00:00:00 2001 From: Karol Blaszczak Date: Tue, 19 Sep 2023 08:56:45 +0200 Subject: [PATCH 13/46] [DOCS] OVC docs adjustments (#19918) (#19924) authored-by: Tatiana Savina --- docs/Documentation/model_introduction.md | 2 +- .../prepare_model/convert_model/Convert_Model_From_Paddle.md | 2 +- .../prepare_model/convert_model/Convert_Model_From_PyTorch.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Documentation/model_introduction.md b/docs/Documentation/model_introduction.md index cd24fccbec8dfe..cadd407ba0b6a6 100644 --- a/docs/Documentation/model_introduction.md +++ b/docs/Documentation/model_introduction.md @@ -221,7 +221,7 @@ The figure below illustrates the typical workflow for deploying a trained deep-l Convert a Model in CLI: ``ovc`` ############################### -Another option for model conversion is to use ``ovc`` command-line tool, which stands for OpenVINO Model Converter. The tool combines both ``openvino.convert_model`` and ``openvino.save_model`` functionalities. It is convenient to use when the original model is ready for inference and is in one of the supported file formats: ONNX, TensorFlow, TensorFlow Lite, or PaddlePaddle. As a result, ``ovc`` produces an OpenVINO IR, consisting of ``.xml`` and ``.bin`` files, which needs to be read with the ``ov.read_model()`` method. You can compile and infer the ``ov.Model`` later with :doc:`OpenVINO™ Runtime ` +Another option for model conversion is to use ``ovc`` command-line tool, which stands for OpenVINO Model Converter. The tool combines both ``openvino.convert_model`` and ``openvino.save_model`` functionalities. It is convenient to use when the original model is ready for inference and is in one of the supported file formats: ONNX, TensorFlow, TensorFlow Lite, or PaddlePaddle. As a result, ``ovc`` produces an OpenVINO IR, consisting of ``.xml`` and ``.bin`` files, which needs to be read with the ``openvino.Core.read_model`` method. You can compile and infer the ``ov.Model`` later with :doc:`OpenVINO™ Runtime ` .. note:: PyTorch models cannot be converted with ``ovc``, use ``openvino.convert_model`` instead. diff --git a/docs/OV_Converter_UG/prepare_model/convert_model/Convert_Model_From_Paddle.md b/docs/OV_Converter_UG/prepare_model/convert_model/Convert_Model_From_Paddle.md index dd3f821229bf99..8b4c549547ebbd 100644 --- a/docs/OV_Converter_UG/prepare_model/convert_model/Convert_Model_From_Paddle.md +++ b/docs/OV_Converter_UG/prepare_model/convert_model/Convert_Model_From_Paddle.md @@ -89,7 +89,7 @@ Some PaddlePaddle models may require setting ``example_input`` or ``output`` for * Example of converting ``paddle.fluid.dygraph.layers.Layer`` format model: - ``example_input`` is required while ``output`` is optional, which accept the following formats: + ``example_input`` is required while ``output`` is optional. ``example_input`` accepts the following formats: ``list`` with tensor (``paddle.Tensor``) or InputSpec (``paddle.static.input.InputSpec``) diff --git a/docs/OV_Converter_UG/prepare_model/convert_model/Convert_Model_From_PyTorch.md b/docs/OV_Converter_UG/prepare_model/convert_model/Convert_Model_From_PyTorch.md index 83005b7e978e8c..6fcd6d7c03aaa8 100644 --- a/docs/OV_Converter_UG/prepare_model/convert_model/Convert_Model_From_PyTorch.md +++ b/docs/OV_Converter_UG/prepare_model/convert_model/Convert_Model_From_PyTorch.md @@ -40,8 +40,8 @@ The value for the ``example_input`` parameter can be easily derived from knowing import torch import openvino as ov - model = torchvision.models.resnet50(pretrained=True) - ov_model = ov.convert_model(model, example_input=example_input=torch.rand(1, 3, 224, 224)) + model = torchvision.models.resnet50(weights='DEFAULT') + ov_model = ov.convert_model(model, example_input=torch.rand(1, 3, 224, 224)) In practice, the code to evaluate or test the PyTorch model is usually provided with the model itself and can be used to generate a proper ``example_input`` value. A modified example of using ``resnet50`` model from ``torchvision`` is presented below. It demonstrates how to switch inference in the existing PyTorch application to OpenVINO and how to get value for ``example_input``: From e34f3a1feef0e71633f510d1bd1c98e52b8bc9bd Mon Sep 17 00:00:00 2001 From: River Li Date: Tue, 19 Sep 2023 15:13:57 +0800 Subject: [PATCH 14/46] Fix warning in template plugin (#19932) --- src/plugins/template/src/compiled_model.cpp | 10 ---------- src/plugins/template/src/plugin.cpp | 10 ---------- .../template/tests/functional/op_reference/loop.cpp | 4 ++-- .../tests/functional/op_reference/memory.cpp | 1 - .../subgraph_reference/preprocess_legacy.cpp | 12 ------------ 5 files changed, 2 insertions(+), 35 deletions(-) diff --git a/src/plugins/template/src/compiled_model.cpp b/src/plugins/template/src/compiled_model.cpp index e550bd1e6571bb..3227621305741f 100644 --- a/src/plugins/template/src/compiled_model.cpp +++ b/src/plugins/template/src/compiled_model.cpp @@ -126,9 +126,6 @@ std::shared_ptr ov::template_plugin::Compiled // ! [compiled_model:get_property] ov::Any ov::template_plugin::CompiledModel::get_property(const std::string& name) const { - const auto& add_ro_properties = [](const std::string& name, std::vector& properties) { - properties.emplace_back(ov::PropertyName{name, ov::PropertyMutability::RO}); - }; const auto& default_ro_properties = []() { std::vector ro_properties{ov::model_name, ov::supported_properties, @@ -141,13 +138,6 @@ ov::Any ov::template_plugin::CompiledModel::get_property(const std::string& name std::vector rw_properties{ov::device::id, ov::enable_profiling}; return rw_properties; }; - const auto& to_string_vector = [](const std::vector& properties) { - std::vector ret; - for (const auto& property : properties) { - ret.emplace_back(property); - } - return ret; - }; if (ov::model_name == name) { auto model_name = m_model->get_friendly_name(); return decltype(ov::model_name)::value_type(model_name); diff --git a/src/plugins/template/src/plugin.cpp b/src/plugins/template/src/plugin.cpp index 2261204e5d7833..e1f3f114715222 100644 --- a/src/plugins/template/src/plugin.cpp +++ b/src/plugins/template/src/plugin.cpp @@ -217,9 +217,6 @@ void ov::template_plugin::Plugin::set_property(const ov::AnyMap& properties) { // ! [plugin:get_property] ov::Any ov::template_plugin::Plugin::get_property(const std::string& name, const ov::AnyMap& arguments) const { - const auto& add_ro_properties = [](const std::string& name, std::vector& properties) { - properties.emplace_back(ov::PropertyName{name, ov::PropertyMutability::RO}); - }; const auto& default_ro_properties = []() { std::vector ro_properties{ov::available_devices, ov::supported_properties, @@ -240,13 +237,6 @@ ov::Any ov::template_plugin::Plugin::get_property(const std::string& name, const ov::template_plugin::disable_transformations}; return rw_properties; }; - const auto& to_string_vector = [](const std::vector& properties) { - std::vector ret; - for (const auto& property : properties) { - ret.emplace_back(property); - } - return ret; - }; if (ov::supported_properties == name) { auto ro_properties = default_ro_properties(); auto rw_properties = default_rw_properties(); diff --git a/src/plugins/template/tests/functional/op_reference/loop.cpp b/src/plugins/template/tests/functional/op_reference/loop.cpp index 3a760b0b8095b0..3e7f9ad63b51bf 100644 --- a/src/plugins/template/tests/functional/op_reference/loop.cpp +++ b/src/plugins/template/tests/functional/op_reference/loop.cpp @@ -153,7 +153,7 @@ struct LoopStaticInputs : public LoopFunctionalBase { // Body std::shared_ptr Zo = body_params[0]; - for (int i = 1; i < body_params.size(); ++i) { + for (size_t i = 1; i < body_params.size(); ++i) { Zo = std::make_shared(body_params[i], Zo); } @@ -164,7 +164,7 @@ struct LoopStaticInputs : public LoopFunctionalBase { loop->set_function(body); loop->set_special_body_ports(ov::opset8::Loop::SpecialBodyPorts{-1, 0}); - for (int i = 0; i < body_params.size(); ++i) { + for (size_t i = 0; i < body_params.size(); ++i) { if (loop_in_type[i] == LOOP_IN_TYPE::INVARIANT) { loop->set_invariant_input(body_params[i], loop_params[i]); } else if (loop_in_type[i] == LOOP_IN_TYPE::MERGED) { diff --git a/src/plugins/template/tests/functional/op_reference/memory.cpp b/src/plugins/template/tests/functional/op_reference/memory.cpp index f0492964cab1ce..01c7a321b53e5e 100644 --- a/src/plugins/template/tests/functional/op_reference/memory.cpp +++ b/src/plugins/template/tests/functional/op_reference/memory.cpp @@ -286,7 +286,6 @@ class ReferenceMemoryTest : public testing::TestWithParam { void CommonTestSteps(const std::function& custom_step = nullptr) { auto params = GetParam(); - const auto& functionParams = function->get_parameters(); inferRequest.set_tensor(executableNetwork.input(0), params.m_input_data); for (size_t i = 0; i < params.m_count_runs; ++i) { if (custom_step) { diff --git a/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp b/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp index f4f984726b81ba..574b8f618be473 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp @@ -41,18 +41,6 @@ static std::shared_ptr create_simple_function(element::Type type, const P return std::make_shared(ResultVector{res}, ParameterVector{data1}); } -static std::shared_ptr create_simple_function_yuv(const PartialShape& shape) { - auto data1 = std::make_shared(element::u8, shape); - data1->set_friendly_name("input1"); - data1->get_output_tensor(0).set_names({"tensor_input1", "input1"}); - auto op = std::make_shared(data1, element::f32); - op->set_friendly_name("Convert1"); - auto res = std::make_shared(op); - res->set_friendly_name("Result1"); - res->get_output_tensor(0).set_names({"tensor_output1", "Result1", "Convert1"}); - return std::make_shared(ResultVector{res}, ParameterVector{data1}); -} - TEST_F(ReferencePreprocessLegacyTest, mean) { function = create_simple_function(element::f32, Shape{1, 3, 2, 2}); auto p = PrePostProcessor(function); From 475ad32cc43a9689a6a40f578db59f560c1df526 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 11:19:35 +0400 Subject: [PATCH 15/46] Update numpy requirement in /src/bindings/python (#19897) Updates the requirements on [numpy](https://github.com/numpy/numpy) to permit the latest version. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst) - [Commits](https://github.com/numpy/numpy/compare/v1.16.6...v1.26.0) --- updated-dependencies: - dependency-name: numpy dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/bindings/python/constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bindings/python/constraints.txt b/src/bindings/python/constraints.txt index 30be494ea327bc..1762fa681551d3 100644 --- a/src/bindings/python/constraints.txt +++ b/src/bindings/python/constraints.txt @@ -1,5 +1,5 @@ # used in multiple components -numpy>=1.16.6,<1.26 # Python bindings, frontends +numpy>=1.16.6,<1.27 # Python bindings, frontends # pytest pytest>=5.0,<7.5 From 6b5a22a656ba976ea2bcb5152845a7857e870822 Mon Sep 17 00:00:00 2001 From: Vitaliy Urusovskij Date: Tue, 19 Sep 2023 11:27:23 +0400 Subject: [PATCH 16/46] Add `bert-base-ner` in MemLeak tests (#19817) * Add `bert-base-ner` in MemLeak tests * Fix segfault caused by `fillTensorRandom()` --- tests/lib/src/common_utils.h | 88 ++++++++++--------- .../nightly_configs/desktop_test_config.xml | 8 ++ .../precommit_configs/desktop_test_config.xml | 8 ++ .../weekly_configs/desktop_test_config.xml | 10 ++- 4 files changed, 73 insertions(+), 41 deletions(-) diff --git a/tests/lib/src/common_utils.h b/tests/lib/src/common_utils.h index ac15570f38ce2e..a3bd72d844ff5d 100644 --- a/tests/lib/src/common_utils.h +++ b/tests/lib/src/common_utils.h @@ -10,6 +10,13 @@ #include +template +using uniformDistribution = typename std::conditional< + std::is_floating_point::value, + std::uniform_real_distribution, + typename std::conditional::value, std::uniform_int_distribution, void>::type>::type; + + /** * @brief Determine if InferenceEngine blob means image or not (OV API 1.0) */ @@ -84,27 +91,20 @@ void fillBlobRandom(InferenceEngine::Blob::Ptr &inputBlob) { /** * @brief Fill InferenceEngine tensor with random values (OV API 2.0) */ -template -ov::Tensor fillTensorRandom(T &input) { - ov::Tensor tensor{input.get_element_type(), input.get_shape()}; - std::vector values(ov::shape_size(input.get_shape())); - - std::random_device rd; - std::mt19937 gen(rd()); - - if (std::is_floating_point::value == true) { - std::uniform_real_distribution<> distrib_f = std::uniform_real_distribution<>(0, std::numeric_limits::max()); - for (size_t i = 0; i < values.size(); ++i) - values[i] = distrib_f(gen); - } else { - std::uniform_int_distribution<> distrib_i = std::uniform_int_distribution<>(0, std::numeric_limits::max()); - for (size_t i = 0; i < values.size(); ++i) - values[i] = distrib_i(gen); +template +void fillTensorRandom(ov::Tensor& tensor, + T rand_min = std::numeric_limits::min(), + T rand_max = std::numeric_limits::max()) { + std::mt19937 gen(0); + size_t tensor_size = tensor.get_size(); + if (0 == tensor_size) { + throw std::runtime_error( + "Models with dynamic shapes aren't supported. Input tensors must have specific shapes before inference"); } - - std::memcpy(tensor.data(), values.data(), sizeof(U) * values.size()); - - return tensor; + T* data = tensor.data(); + uniformDistribution distribution(rand_min, rand_max); + for (size_t i = 0; i < tensor_size; i++) + data[i] = static_cast(distribution(gen)); } @@ -141,26 +141,34 @@ void fillBlobImInfo(InferenceEngine::Blob::Ptr &inputBlob, template void fillTensors(ov::InferRequest &infer_request, std::vector &inputs) { for (size_t i = 0; i < inputs.size(); ++i) { - ov::Tensor input_tensor; - - if (inputs[i].get_element_type() == ov::element::f32) { - input_tensor = fillTensorRandom(inputs[i]); - } else if (inputs[i].get_element_type() == ov::element::f64) { - input_tensor = fillTensorRandom(inputs[i]); - } else if (inputs[i].get_element_type() == ov::element::f16) { - input_tensor = fillTensorRandom(inputs[i]); - } else if (inputs[i].get_element_type() == ov::element::i32) { - input_tensor = fillTensorRandom(inputs[i]); - } else if (inputs[i].get_element_type() == ov::element::i64) { - input_tensor = fillTensorRandom(inputs[i]); - } else if (inputs[i].get_element_type() == ov::element::u8) { - input_tensor = fillTensorRandom(inputs[i]); - } else if (inputs[i].get_element_type() == ov::element::i8) { - input_tensor = fillTensorRandom(inputs[i]); - } else if (inputs[i].get_element_type() == ov::element::u16) { - input_tensor = fillTensorRandom(inputs[i]); - } else if (inputs[i].get_element_type() == ov::element::i16) { - input_tensor = fillTensorRandom(inputs[i]); + auto input_tensor = infer_request.get_tensor(inputs[i]); + auto type = inputs[i].get_element_type(); + if (type == ov::element::f32) { + fillTensorRandom(input_tensor); + } else if (type == ov::element::f64) { + fillTensorRandom(input_tensor); + } else if (type == ov::element::f16) { + fillTensorRandom(input_tensor); + } else if (type == ov::element::i32) { + fillTensorRandom(input_tensor); + } else if (type == ov::element::i64) { + fillTensorRandom(input_tensor); + } else if ((type == ov::element::u8) || (type == ov::element::boolean)) { + // uniform_int_distribution is not allowed in the C++17 + // standard and vs2017/19 + fillTensorRandom(input_tensor); + } else if (type == ov::element::i8) { + // uniform_int_distribution is not allowed in the C++17 standard + // and vs2017/19 + fillTensorRandom(input_tensor, + std::numeric_limits::min(), + std::numeric_limits::max()); + } else if (type == ov::element::u16) { + fillTensorRandom(input_tensor); + } else if (type == ov::element::i16) { + fillTensorRandom(input_tensor); + } else if (type == ov::element::boolean) { + fillTensorRandom(input_tensor, 0, 1); } else { throw std::logic_error( "Input precision is not supported for " + inputs[i].get_element_type().get_type_name()); diff --git a/tests/stress_tests/.automation/memleaks_tests/nightly_configs/desktop_test_config.xml b/tests/stress_tests/.automation/memleaks_tests/nightly_configs/desktop_test_config.xml index 3058ceaa5f51a6..cca3ec23df13c8 100644 --- a/tests/stress_tests/.automation/memleaks_tests/nightly_configs/desktop_test_config.xml +++ b/tests/stress_tests/.automation/memleaks_tests/nightly_configs/desktop_test_config.xml @@ -24,6 +24,14 @@ + + + + + + + + diff --git a/tests/stress_tests/.automation/memleaks_tests/precommit_configs/desktop_test_config.xml b/tests/stress_tests/.automation/memleaks_tests/precommit_configs/desktop_test_config.xml index 4909b6411f1fa9..29d54db3f3c142 100644 --- a/tests/stress_tests/.automation/memleaks_tests/precommit_configs/desktop_test_config.xml +++ b/tests/stress_tests/.automation/memleaks_tests/precommit_configs/desktop_test_config.xml @@ -8,4 +8,12 @@ + + + + + + + + diff --git a/tests/stress_tests/.automation/memleaks_tests/weekly_configs/desktop_test_config.xml b/tests/stress_tests/.automation/memleaks_tests/weekly_configs/desktop_test_config.xml index d9240cc239aaec..57fd6c160caa60 100644 --- a/tests/stress_tests/.automation/memleaks_tests/weekly_configs/desktop_test_config.xml +++ b/tests/stress_tests/.automation/memleaks_tests/weekly_configs/desktop_test_config.xml @@ -23,7 +23,15 @@ - + + + + + + + + + From 068cd4473d076c8a985899a0c62fe1acbf251c3a Mon Sep 17 00:00:00 2001 From: Oleg Pipikin Date: Tue, 19 Sep 2023 09:40:29 +0200 Subject: [PATCH 17/46] Refactor AdaPool, BatchToSpace, and BatchNorm shared tests (#19597) * Refactor AdaPool, BatchToSpace, and BatchNorm shared tests --- .../single_layer_tests/adaptive_pooling.cpp | 65 +++++++++-------- .../single_layer_tests/batch_norm.cpp | 36 +++++----- .../single_layer_tests/batch_to_space.cpp | 71 +++++++------------ .../single_layer_tests/adaptive_pooling.hpp | 2 +- .../single_op_tests/adaptive_pooling.hpp | 15 ++++ .../include/single_op_tests/batch_norm.hpp | 15 ++++ .../single_op_tests/batch_to_space.hpp | 17 +++++ .../single_op/adaptive_pooling.hpp | 27 +++++++ .../single_op/batch_norm.hpp | 27 +++++++ .../single_op/batch_to_space.hpp | 32 +++++++++ .../single_op/comparison.hpp | 2 - .../single_op/gru_sequence.hpp | 3 - .../src/base/utils/generate_inputs.cpp | 45 ++++++++++++ .../src/single_op/adaptive_pooling.cpp | 60 ++++++++++++++++ .../src/single_op/batch_norm.cpp | 61 ++++++++++++++++ .../src/single_op/batch_to_space.cpp | 53 ++++++++++++++ .../src/single_op/comparison.cpp | 36 +--------- .../src/single_op/gru_sequence.cpp | 29 +++----- 18 files changed, 440 insertions(+), 156 deletions(-) create mode 100644 src/tests/functional/plugin/shared/include/single_op_tests/adaptive_pooling.hpp create mode 100644 src/tests/functional/plugin/shared/include/single_op_tests/batch_norm.hpp create mode 100644 src/tests/functional/plugin/shared/include/single_op_tests/batch_to_space.hpp create mode 100644 src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/adaptive_pooling.hpp create mode 100644 src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/batch_norm.hpp create mode 100644 src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/batch_to_space.hpp create mode 100644 src/tests/functional/shared_test_classes/src/single_op/adaptive_pooling.cpp create mode 100644 src/tests/functional/shared_test_classes/src/single_op/batch_norm.cpp create mode 100644 src/tests/functional/shared_test_classes/src/single_op/batch_to_space.cpp diff --git a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/adaptive_pooling.cpp b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/adaptive_pooling.cpp index d4d87b825e7164..837844e4fcf625 100644 --- a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/adaptive_pooling.cpp +++ b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/adaptive_pooling.cpp @@ -4,55 +4,62 @@ #include -#include "single_layer_tests/adaptive_pooling.hpp" +#include "single_op_tests/adaptive_pooling.hpp" #include "common_test_utils/test_constants.hpp" -using namespace LayerTestsDefinitions; +namespace { +using ov::test::AdaPoolLayerTest; +const std::vector types = { + ov::element::f16, + ov::element::f32 +}; -const std::vector netPRCs = { - InferenceEngine::Precision::FP16, - InferenceEngine::Precision::FP32 +const std::vector> input_shapes_3d_static = { + {{ 1, 2, 1}}, + {{ 1, 1, 3 }}, + {{ 3, 17, 5 }} }; -const auto AdaPool3DCases = ::testing::Combine( - ::testing::ValuesIn( - std::vector> { - { 1, 2, 1}, - { 1, 1, 3 }, - { 3, 17, 5 }}), +const auto ada_pool_3d_cases = ::testing::Combine( + ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(input_shapes_3d_static)), ::testing::ValuesIn(std::vector>{ {1}, {3}, {5} }), ::testing::ValuesIn(std::vector{"max", "avg"}), - ::testing::ValuesIn(netPRCs), + ::testing::ValuesIn(types), ::testing::Values(ov::test::utils::DEVICE_CPU) ); -INSTANTIATE_TEST_SUITE_P(smoke_TestsAdaPool3D, AdaPoolLayerTest, AdaPool3DCases, AdaPoolLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TestsAdaPool3D, AdaPoolLayerTest, ada_pool_3d_cases, AdaPoolLayerTest::getTestCaseName); + +const std::vector> input_shapes_4d_static = { + {{ 1, 2, 1, 2 }}, + {{ 1, 1, 3, 2 }}, + {{ 3, 17, 5, 1 }} +}; -const auto AdaPool4DCases = ::testing::Combine( - ::testing::ValuesIn( - std::vector> { - { 1, 2, 1, 2}, - { 1, 1, 3, 2}, - { 3, 17, 5, 1}}), +const auto ada_pool_4d_cases = ::testing::Combine( + ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(input_shapes_4d_static)), ::testing::ValuesIn(std::vector>{ {1, 1}, {3, 5}, {5, 5} }), ::testing::ValuesIn(std::vector{"max", "avg"}), - ::testing::ValuesIn(netPRCs), + ::testing::ValuesIn(types), ::testing::Values(ov::test::utils::DEVICE_CPU) ); -INSTANTIATE_TEST_SUITE_P(smoke_TestsAdaPool4D, AdaPoolLayerTest, AdaPool4DCases, AdaPoolLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TestsAdaPool4D, AdaPoolLayerTest, ada_pool_4d_cases, AdaPoolLayerTest::getTestCaseName); + +const std::vector> input_shapes_5d_static = { + {{ 1, 2, 1, 2, 2 }}, + {{ 1, 1, 3, 2, 3 }}, + {{ 3, 17, 5, 1, 2 }} +}; -const auto AdaPool5DCases = ::testing::Combine( - ::testing::ValuesIn( - std::vector> { - { 1, 2, 1, 2, 2}, - { 1, 1, 3, 2, 3}, - { 3, 17, 5, 1, 2}}), +const auto ada_pool_5d_cases = ::testing::Combine( + ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(input_shapes_5d_static)), ::testing::ValuesIn(std::vector>{ {1, 1, 1}, {3, 5, 3}, {5, 5, 5} }), ::testing::ValuesIn(std::vector{"max", "avg"}), - ::testing::ValuesIn(netPRCs), + ::testing::ValuesIn(types), ::testing::Values(ov::test::utils::DEVICE_CPU) ); -INSTANTIATE_TEST_SUITE_P(smoke_TestsAdaPool5D, AdaPoolLayerTest, AdaPool5DCases, AdaPoolLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TestsAdaPool5D, AdaPoolLayerTest, ada_pool_5d_cases, AdaPoolLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/batch_norm.cpp b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/batch_norm.cpp index 467e32c26689d2..a7850b4e94329c 100644 --- a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/batch_norm.cpp +++ b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/batch_norm.cpp @@ -4,14 +4,14 @@ #include -#include "single_layer_tests/batch_norm.hpp" - -using namespace LayerTestsDefinitions; +#include "single_op_tests/batch_norm.hpp" namespace { -const std::vector netPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16 +using ov::test::BatchNormLayerTest; + +const std::vector model_type = { + ov::element::f32, + ov::element::f16 }; const std::vector epsilon = { @@ -20,30 +20,26 @@ const std::vector epsilon = { 1e-5, 1e-4 }; -const std::vector> inputShapes = { - {1, 3}, - {2, 5}, - {1, 3, 10}, - {1, 3, 1, 1}, - {2, 5, 4, 4}, +const std::vector> input_shapes_static = { + {{1, 3}}, + {{2, 5}}, + {{1, 3, 10}}, + {{1, 3, 1, 1}}, + {{2, 5, 4, 4}}, }; -const auto batchNormParams = testing::Combine( +const auto batch_norm_params = testing::Combine( testing::ValuesIn(epsilon), - testing::ValuesIn(netPrecisions), - testing::Values(InferenceEngine::Precision::UNSPECIFIED), - testing::Values(InferenceEngine::Precision::UNSPECIFIED), - testing::Values(InferenceEngine::Layout::ANY), - testing::Values(InferenceEngine::Layout::ANY), - testing::ValuesIn(inputShapes), + testing::ValuesIn(model_type), + testing::ValuesIn(ov::test::static_shapes_to_test_representation(input_shapes_static)), testing::Values(ov::test::utils::DEVICE_CPU) ); INSTANTIATE_TEST_SUITE_P( smoke_BatchNorm, BatchNormLayerTest, - batchNormParams, + batch_norm_params, BatchNormLayerTest::getTestCaseName ); diff --git a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/batch_to_space.cpp b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/batch_to_space.cpp index 2883915a91055f..dc7c4f41afb1c8 100644 --- a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/batch_to_space.cpp +++ b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/batch_to_space.cpp @@ -2,23 +2,20 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - -#include "single_layer_tests/batch_to_space.hpp" +#include "single_op_tests/batch_to_space.hpp" #include "common_test_utils/test_constants.hpp" -using namespace LayerTestsDefinitions; - namespace { +using ov::test::BatchToSpaceLayerTest; -const std::vector net_precisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::I32 +const std::vector net_types = { + ov::element::f32, + ov::element::i32 }; -const std::vector> data_shapes_2D = { - {12, 4}, - {48, 3} +const std::vector> data_shapes_2D_static = { + {{12, 4}}, + {{48, 3}} }; const std::vector> block_shapes_2D = { @@ -35,12 +32,8 @@ const auto batch_to_space_2d_tests = ::testing::Combine( ::testing::ValuesIn(block_shapes_2D), ::testing::ValuesIn(crops_2D), ::testing::ValuesIn(crops_2D), - ::testing::ValuesIn(data_shapes_2D), - ::testing::ValuesIn(net_precisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(data_shapes_2D_static)), + ::testing::ValuesIn(net_types), ::testing::Values(ov::test::utils::DEVICE_CPU)); INSTANTIATE_TEST_SUITE_P( @@ -49,10 +42,10 @@ INSTANTIATE_TEST_SUITE_P( batch_to_space_2d_tests, BatchToSpaceLayerTest::getTestCaseName); -const std::vector> data_shapes_4D = { - {4, 1, 2, 2}, - {4, 3, 2, 2}, - {8, 1, 3, 2} +const std::vector> data_shapes_4D_static = { + {{4, 1, 2, 2}}, + {{4, 3, 2, 2}}, + {{8, 1, 3, 2}} }; const std::vector> block_shapes_4D = { @@ -76,24 +69,16 @@ const auto batch_to_space_4d_spatial_dims_tests = ::testing::Combine( ::testing::Values(block_shapes_4D[0]), ::testing::ValuesIn(crops_begin_4D), ::testing::ValuesIn(crops_end_4D), - ::testing::ValuesIn(data_shapes_4D), - ::testing::ValuesIn(net_precisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(data_shapes_4D_static)), + ::testing::ValuesIn(net_types), ::testing::Values(ov::test::utils::DEVICE_CPU)); const auto batch_to_space_4d_channel_dim_tests = ::testing::Combine( ::testing::Values(block_shapes_4D[1]), ::testing::Values(crops_begin_4D[0]), ::testing::Values(crops_end_4D[0]), - ::testing::ValuesIn(data_shapes_4D), - ::testing::ValuesIn(net_precisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(data_shapes_4D_static)), + ::testing::ValuesIn(net_types), ::testing::Values(ov::test::utils::DEVICE_CPU)); INSTANTIATE_TEST_SUITE_P( @@ -108,8 +93,8 @@ INSTANTIATE_TEST_SUITE_P( batch_to_space_4d_channel_dim_tests, BatchToSpaceLayerTest::getTestCaseName); -const std::vector> data_shapes_5D = { - {12, 1, 2, 1, 2} +const std::vector> data_shapes_5D_static = { + {{12, 1, 2, 1, 2}} }; const std::vector> block_shapes_5D = { @@ -133,24 +118,16 @@ const auto batch_to_space_5d_spatial_dims_tests = ::testing::Combine( ::testing::Values(block_shapes_5D[0]), ::testing::ValuesIn(crops_begin_5D), ::testing::ValuesIn(crops_end_5D), - ::testing::ValuesIn(data_shapes_5D), - ::testing::ValuesIn(net_precisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(data_shapes_5D_static)), + ::testing::ValuesIn(net_types), ::testing::Values(ov::test::utils::DEVICE_CPU)); const auto batch_to_space_5d_channel_dim_tests = ::testing::Combine( ::testing::Values(block_shapes_5D[1]), ::testing::Values(crops_begin_5D[0]), ::testing::Values(crops_end_5D[0]), - ::testing::ValuesIn(data_shapes_5D), - ::testing::ValuesIn(net_precisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(data_shapes_5D_static)), + ::testing::ValuesIn(net_types), ::testing::Values(ov::test::utils::DEVICE_CPU)); INSTANTIATE_TEST_SUITE_P( diff --git a/src/tests/functional/plugin/shared/include/single_layer_tests/adaptive_pooling.hpp b/src/tests/functional/plugin/shared/include/single_layer_tests/adaptive_pooling.hpp index f4d41b2b122294..3caf98b7566cfd 100644 --- a/src/tests/functional/plugin/shared/include/single_layer_tests/adaptive_pooling.hpp +++ b/src/tests/functional/plugin/shared/include/single_layer_tests/adaptive_pooling.hpp @@ -9,7 +9,7 @@ namespace LayerTestsDefinitions { TEST_P(AdaPoolLayerTest, CompareWithRefs) { -Run(); + Run(); } } // namespace LayerTestsDefinitions diff --git a/src/tests/functional/plugin/shared/include/single_op_tests/adaptive_pooling.hpp b/src/tests/functional/plugin/shared/include/single_op_tests/adaptive_pooling.hpp new file mode 100644 index 00000000000000..74b49d5f66387f --- /dev/null +++ b/src/tests/functional/plugin/shared/include/single_op_tests/adaptive_pooling.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/single_op/adaptive_pooling.hpp" + +namespace ov { +namespace test { +TEST_P(AdaPoolLayerTest, Inference) { + run(); +} +} // namespace test +} // namespace ov diff --git a/src/tests/functional/plugin/shared/include/single_op_tests/batch_norm.hpp b/src/tests/functional/plugin/shared/include/single_op_tests/batch_norm.hpp new file mode 100644 index 00000000000000..d7cad68321cbe3 --- /dev/null +++ b/src/tests/functional/plugin/shared/include/single_op_tests/batch_norm.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/single_op/batch_norm.hpp" + +namespace ov { +namespace test { +TEST_P(BatchNormLayerTest, Inference) { + run(); +} +} // namespace test +} // namespace ov diff --git a/src/tests/functional/plugin/shared/include/single_op_tests/batch_to_space.hpp b/src/tests/functional/plugin/shared/include/single_op_tests/batch_to_space.hpp new file mode 100644 index 00000000000000..d894fd039ab61c --- /dev/null +++ b/src/tests/functional/plugin/shared/include/single_op_tests/batch_to_space.hpp @@ -0,0 +1,17 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/single_op/batch_to_space.hpp" + +namespace ov { +namespace test { + +TEST_P(BatchToSpaceLayerTest, Inference) { + run(); +}; + +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/adaptive_pooling.hpp b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/adaptive_pooling.hpp new file mode 100644 index 00000000000000..5f3e5932a41a70 --- /dev/null +++ b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/adaptive_pooling.hpp @@ -0,0 +1,27 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/base/ov_subgraph.hpp" + +namespace ov { +namespace test { +using adapoolParams = std::tuple< + std::vector, // feature map shape + std::vector, // pooled spatial shape + std::string, // pooling mode + ov::element::Type, // model type + std::string>; // device name + +class AdaPoolLayerTest : public testing::WithParamInterface, + virtual public ov::test::SubgraphBaseTest { +public: + static std::string getTestCaseName(const testing::TestParamInfo& obj); + +protected: + void SetUp() override; +}; +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/batch_norm.hpp b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/batch_norm.hpp new file mode 100644 index 00000000000000..f28b24d088a900 --- /dev/null +++ b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/batch_norm.hpp @@ -0,0 +1,27 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/base/ov_subgraph.hpp" + +namespace ov { +namespace test { +typedef std::tuple< + double, // epsilon + ov::element::Type, // Model type + std::vector, // Input shape + std::string // Target device name +> BatchNormLayerTestParams; + +class BatchNormLayerTest : public testing::WithParamInterface, + virtual public ov::test::SubgraphBaseTest { +public: + static std::string getTestCaseName(const testing::TestParamInfo& obj); +protected: + void SetUp() override; +}; + +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/batch_to_space.hpp b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/batch_to_space.hpp new file mode 100644 index 00000000000000..07ac5c21542603 --- /dev/null +++ b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/batch_to_space.hpp @@ -0,0 +1,32 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +#include "shared_test_classes/base/ov_subgraph.hpp" + +namespace ov { +namespace test { +using batchToSpaceParamsTuple = typename std::tuple< + std::vector, // block shape + std::vector, // crops begin + std::vector, // crops end + std::vector, // Input shapes + ov::element::Type, // Model type + std::string>; // Device name>; + +class BatchToSpaceLayerTest : public testing::WithParamInterface, + virtual public ov::test::SubgraphBaseTest { +public: + static std::string getTestCaseName(const testing::TestParamInfo &obj); + +protected: + void SetUp() override; +}; +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/comparison.hpp b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/comparison.hpp index 0e29e65f22c122..d3eb67f907dcb7 100644 --- a/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/comparison.hpp +++ b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/comparison.hpp @@ -26,10 +26,8 @@ typedef std::tuple< class ComparisonLayerTest : public testing::WithParamInterface, virtual public ov::test::SubgraphBaseTest { - ngraph::helpers::ComparisonTypes comparison_op_type; protected: void SetUp() override; - void generate_inputs(const std::vector& targetInputStaticShapes) override; public: static std::string getTestCaseName(const testing::TestParamInfo &obj); }; diff --git a/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/gru_sequence.hpp b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/gru_sequence.hpp index 0b2b053cd4880f..507739669a22e5 100644 --- a/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/gru_sequence.hpp +++ b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/gru_sequence.hpp @@ -30,9 +30,6 @@ class GRUSequenceTest : public testing::WithParamInterface, protected: void SetUp() override; - void generate_inputs(const std::vector& targetInputStaticShapes) override; - ov::test::utils::SequenceTestsMode m_mode; - int64_t m_max_seq_len = 0; }; } // namespace test } // namespace ov diff --git a/src/tests/functional/shared_test_classes/src/base/utils/generate_inputs.cpp b/src/tests/functional/shared_test_classes/src/base/utils/generate_inputs.cpp index 369b6dedcd7a68..7a7e2bc4a89879 100644 --- a/src/tests/functional/shared_test_classes/src/base/utils/generate_inputs.cpp +++ b/src/tests/functional/shared_test_classes/src/base/utils/generate_inputs.cpp @@ -963,6 +963,51 @@ ov::runtime::Tensor generate(const return tensor; } +namespace comparison { +void fill_tensor(ov::Tensor& tensor) { + auto data_ptr = static_cast(tensor.data()); + auto data_ptr_int = static_cast(tensor.data()); + auto range = tensor.get_size(); + auto start = -static_cast(range) / 2.f; + testing::internal::Random random(1); + for (size_t i = 0; i < range; i++) { + if (i % 7 == 0) { + data_ptr[i] = std::numeric_limits::infinity(); + } else if (i % 7 == 1) { + data_ptr[i] = -std::numeric_limits::infinity(); + } else if (i % 7 == 2) { + data_ptr_int[i] = 0x7F800000 + random.Generate(range); + } else if (i % 7 == 3) { + data_ptr[i] = std::numeric_limits::quiet_NaN(); + } else if (i % 7 == 5) { + data_ptr[i] = -std::numeric_limits::quiet_NaN(); + } else { + data_ptr[i] = start + static_cast(random.Generate(range)); + } + } +} +} // namespace comparison + +ov::runtime::Tensor generate(const + std::shared_ptr& node, + size_t port, + const ov::element::Type& elemType, + const ov::Shape& targetShape) { + ov::Tensor tensor(elemType, targetShape); + comparison::fill_tensor(tensor); + return tensor; +} + +ov::runtime::Tensor generate(const + std::shared_ptr& node, + size_t port, + const ov::element::Type& elemType, + const ov::Shape& targetShape) { + ov::Tensor tensor{elemType, targetShape}; + comparison::fill_tensor(tensor); + return tensor; +} + template ov::runtime::Tensor generateInput(const std::shared_ptr& node, size_t port, diff --git a/src/tests/functional/shared_test_classes/src/single_op/adaptive_pooling.cpp b/src/tests/functional/shared_test_classes/src/single_op/adaptive_pooling.cpp new file mode 100644 index 00000000000000..17a848c8475ff1 --- /dev/null +++ b/src/tests/functional/shared_test_classes/src/single_op/adaptive_pooling.cpp @@ -0,0 +1,60 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/single_op/adaptive_pooling.hpp" + +namespace ov { +namespace test { + +std::string AdaPoolLayerTest::getTestCaseName(const testing::TestParamInfo& obj) { + std::vector shapes; + std::vector pooled_spatial_shape; + + std::string pooling_mode; + ov::element::Type model_type; + std::string target_device; + std::tie(shapes, pooled_spatial_shape, pooling_mode, model_type, target_device) = obj.param; + + std::ostringstream result; + + result << "IS=("; + for (const auto& shape : shapes) { + result << ov::test::utils::partialShape2str({shape.first}) << "_"; + } + result << ")_TS=("; + for (const auto& shape : shapes) { + for (const auto& item : shape.second) { + result << ov::test::utils::vec2str(item) << "_"; + } + } + result << "pooled_spatial_shape=" << ov::test::utils::vec2str(pooled_spatial_shape) << "_"; + result << "mode=" << pooling_mode << "_"; + result << "IT=" << model_type.get_type_name() << "_"; + result << "dev=" << target_device; + return result.str(); +} + +void AdaPoolLayerTest::SetUp() { + std::vector shapes; + std::vector pooled_spatial_shape; + std::string pooling_mode; + ov::element::Type model_type; + std::tie(shapes, pooled_spatial_shape, pooling_mode, model_type, targetDevice) = this->GetParam(); + init_input_shapes(shapes); + + ov::ParameterVector params{std::make_shared(model_type, inputDynamicShapes.front())}; + + ov::Shape pooled_shape = {pooled_spatial_shape.size()}; + auto pooled_param = std::make_shared(ov::element::i32, pooled_shape, pooled_spatial_shape); + + // we cannot create abstract Op to use polymorphism + auto adapoolMax = std::make_shared(params[0], pooled_param, ov::element::i32); + auto adapoolAvg = std::make_shared(params[0], pooled_param); + + function = (pooling_mode == "max" ? + std::make_shared(adapoolMax->outputs(), params, "AdaPoolMax") : + std::make_shared(adapoolAvg->outputs(), params, "AdaPoolAvg")); +} +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/src/single_op/batch_norm.cpp b/src/tests/functional/shared_test_classes/src/single_op/batch_norm.cpp new file mode 100644 index 00000000000000..f2df32ba5048f4 --- /dev/null +++ b/src/tests/functional/shared_test_classes/src/single_op/batch_norm.cpp @@ -0,0 +1,61 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/single_op/batch_norm.hpp" + +#include "common_test_utils/ov_tensor_utils.hpp" + +namespace ov { +namespace test { +std::string BatchNormLayerTest::getTestCaseName(const testing::TestParamInfo& obj) { + ov::element::Type model_type; + std::vector shapes; + double epsilon; + std::string target_device; + std::tie(epsilon, model_type, shapes, target_device) = obj.param; + + std::ostringstream result; + result << "IS=("; + for (const auto& shape : shapes) { + result << ov::test::utils::partialShape2str({shape.first}) << "_"; + } + result << ")_TS=("; + for (const auto& shape : shapes) { + for (const auto& item : shape.second) { + result << ov::test::utils::vec2str(item) << "_"; + } + } + result << "inT=" << model_type.get_type_name() << "_"; + result << "epsilon=" << epsilon << "_"; + result << "trgDev=" << target_device; + return result.str(); +} + +void BatchNormLayerTest::SetUp() { + ov::element::Type model_type; + std::vector shapes; + double epsilon; + std::tie(epsilon, model_type, shapes, targetDevice) = this->GetParam(); + init_input_shapes(shapes); + ov::ParameterVector params {std::make_shared(model_type, inputDynamicShapes.front())}; + + auto constant_shape = ov::Shape{params[0]->get_shape().at(1)}; + auto gamma_tensor = ov::test::utils::create_and_fill_tensor(model_type, constant_shape, 1, 0); + auto gamma = std::make_shared(gamma_tensor); + + auto beta_tensor = ov::test::utils::create_and_fill_tensor(model_type, constant_shape, 1, 0); + auto beta = std::make_shared(beta_tensor); + + auto mean_tensor = ov::test::utils::create_and_fill_tensor(model_type, constant_shape, 1, 0); + auto mean = std::make_shared(mean_tensor); + + // Fill the vector for variance with positive values + auto variance_tensor = ov::test::utils::create_and_fill_tensor(model_type, constant_shape, 10, 0); + auto variance = std::make_shared(variance_tensor); + auto batch_norm = std::make_shared(params[0], gamma, beta, mean, variance, epsilon); + + function = std::make_shared(ov::OutputVector{batch_norm}, params, "BatchNormInference"); +} +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/src/single_op/batch_to_space.cpp b/src/tests/functional/shared_test_classes/src/single_op/batch_to_space.cpp new file mode 100644 index 00000000000000..b814d07304d964 --- /dev/null +++ b/src/tests/functional/shared_test_classes/src/single_op/batch_to_space.cpp @@ -0,0 +1,53 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/single_op/batch_to_space.hpp" + +namespace ov { +namespace test { +std::string BatchToSpaceLayerTest::getTestCaseName(const testing::TestParamInfo &obj) { + std::vector shapes; + std::vector block_shape, crops_begin, crops_end; + ov::element::Type model_type; + std::string target_name; + std::tie(block_shape, crops_begin, crops_end, shapes, model_type, target_name) = obj.param; + std::ostringstream result; + result << "IS=("; + for (const auto& shape : shapes) { + result << ov::test::utils::partialShape2str({shape.first}) << "_"; + } + result << ")_TS=("; + for (const auto& shape : shapes) { + for (const auto& item : shape.second) { + result << ov::test::utils::vec2str(item) << "_"; + } + } + result << "inT=" << model_type.get_type_name() << "_"; + result << "BS=" << ov::test::utils::vec2str(block_shape) << "_"; + result << "CB=" << ov::test::utils::vec2str(crops_begin) << "_"; + result << "CE=" << ov::test::utils::vec2str(crops_end) << "_"; + result << "trgDev=" << target_name << "_"; + return result.str(); +} + +void BatchToSpaceLayerTest::SetUp() { + std::vector shapes; + std::vector block_shape, crops_begin, crops_end; + ov::element::Type model_type; + std::tie(block_shape, crops_begin, crops_end, shapes, model_type, targetDevice) = this->GetParam(); + init_input_shapes(shapes); + + ov::ParameterVector params{std::make_shared(model_type, inputDynamicShapes.front())}; + + auto const_shape = ov::Shape{inputDynamicShapes.front().size()}; + auto block_shape_node = std::make_shared(ov::element::i64, const_shape, block_shape.data()); + auto crops_begin_node = std::make_shared(ov::element::i64, const_shape, crops_begin.data()); + auto crops_end_node = std::make_shared(ov::element::i64, const_shape, crops_end.data()); + + auto b2s = std::make_shared(params[0], block_shape_node, crops_begin_node, crops_end_node); + ov::OutputVector results{std::make_shared(b2s)}; + function = std::make_shared(results, params, "BatchToSpace"); +} +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/src/single_op/comparison.cpp b/src/tests/functional/shared_test_classes/src/single_op/comparison.cpp index 7dacd12bc9d74c..f7ea71c95bb4b3 100644 --- a/src/tests/functional/shared_test_classes/src/single_op/comparison.cpp +++ b/src/tests/functional/shared_test_classes/src/single_op/comparison.cpp @@ -51,6 +51,7 @@ void ComparisonLayerTest::SetUp() { InputLayerType second_input_type; std::map additional_config; ov::element::Type model_type; + ngraph::helpers::ComparisonTypes comparison_op_type; std::tie(shapes, comparison_op_type, second_input_type, @@ -74,40 +75,5 @@ void ComparisonLayerTest::SetUp() { auto comparisonNode = ngraph::builder::makeComparison(inputs[0], second_input, comparison_op_type); function = std::make_shared(comparisonNode, inputs, "Comparison"); } - -void ComparisonLayerTest::generate_inputs(const std::vector& target_input_static_shapes) { - if (comparison_op_type == ComparisonTypes::IS_FINITE || comparison_op_type == ComparisonTypes::IS_NAN) { - inputs.clear(); - auto params = function->get_parameters(); - OPENVINO_ASSERT(target_input_static_shapes.size() >= params.size()); - for (int i = 0; i < params.size(); i++) { - ov::Tensor tensor(params[i]->get_element_type(), target_input_static_shapes[i]); - auto data_ptr = static_cast(tensor.data()); - auto data_ptr_int = static_cast(tensor.data()); - auto range = tensor.get_size(); - auto start = -static_cast(range) / 2.f; - testing::internal::Random random(1); - for (size_t i = 0; i < range; i++) { - if (i % 7 == 0) { - data_ptr[i] = std::numeric_limits::infinity(); - } else if (i % 7 == 1) { - data_ptr[i] = -std::numeric_limits::infinity(); - } else if (i % 7 == 2) { - data_ptr_int[i] = 0x7F800000 + random.Generate(range); - } else if (i % 7 == 3) { - data_ptr[i] = std::numeric_limits::quiet_NaN(); - } else if (i % 7 == 5) { - data_ptr[i] = -std::numeric_limits::quiet_NaN(); - } else { - data_ptr[i] = start + static_cast(random.Generate(range)); - } - } - inputs.insert({params[i], tensor}); - } - } else { - SubgraphBaseTest::generate_inputs(target_input_static_shapes); - } -} - } // namespace test } // namespace ov diff --git a/src/tests/functional/shared_test_classes/src/single_op/gru_sequence.cpp b/src/tests/functional/shared_test_classes/src/single_op/gru_sequence.cpp index 54e7140830d2ec..e98b04c5aa8ffc 100644 --- a/src/tests/functional/shared_test_classes/src/single_op/gru_sequence.cpp +++ b/src/tests/functional/shared_test_classes/src/single_op/gru_sequence.cpp @@ -61,7 +61,8 @@ void GRUSequenceTest::SetUp() { bool linear_before_reset; ov::op::RecurrentSequenceDirection direction; InputLayerType wbr_type; - std::tie(m_mode, shapes, activations, clip, linear_before_reset, direction, wbr_type, + ov::test::utils::SequenceTestsMode mode; + std::tie(mode, shapes, activations, clip, linear_before_reset, direction, wbr_type, inType, targetDevice) = this->GetParam(); outType = inType; init_input_shapes(shapes); @@ -87,15 +88,15 @@ void GRUSequenceTest::SetUp() { const auto& b_shape = ov::Shape{num_directions, (linear_before_reset ? 4 : 3) * hidden_size}; std::shared_ptr seq_lengths_node; - if (m_mode == SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM || - m_mode == SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM || - m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM) { + if (mode == SequenceTestsMode::CONVERT_TO_TI_MAX_SEQ_LEN_PARAM || + mode == SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_PARAM || + mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM) { auto param = std::make_shared(ov::element::i64, inputDynamicShapes[2]); param->set_friendly_name("seq_lengths"); params.push_back(param); seq_lengths_node = param; - } else if (m_mode == SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST || - m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST) { + } else if (mode == SequenceTestsMode::CONVERT_TO_TI_RAND_SEQ_LEN_CONST || + mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST) { auto tensor = ov::test::utils::create_and_fill_tensor(ov::element::i64, targetStaticShapes[0][2], seq_lengths, 0); seq_lengths_node = std::make_shared(tensor); } else { @@ -131,9 +132,9 @@ void GRUSequenceTest::SetUp() { std::make_shared(gru_sequence->output(1))}; function = std::make_shared(results, params, "gru_sequence"); - bool is_pure_sequence = (m_mode == SequenceTestsMode::PURE_SEQ || - m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM || - m_mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST); + bool is_pure_sequence = (mode == SequenceTestsMode::PURE_SEQ || + mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_PARAM || + mode == SequenceTestsMode::PURE_SEQ_RAND_SEQ_LEN_CONST); if (!is_pure_sequence) { ov::pass::Manager manager; if (direction == ov::op::RecurrentSequenceDirection::BIDIRECTIONAL) @@ -147,15 +148,5 @@ void GRUSequenceTest::SetUp() { EXPECT_EQ(ti_found, false); } } - -void GRUSequenceTest::generate_inputs(const std::vector& target_input_static_shapes) { - inputs.clear(); - auto params = function->get_parameters(); - OPENVINO_ASSERT(target_input_static_shapes.size() >= params.size()); - for (int i = 0; i < params.size(); i++) { - auto tensor = ov::test::utils::create_and_fill_tensor(params[i]->get_element_type(), target_input_static_shapes[i], m_max_seq_len, 0); - inputs.insert({params[i], tensor}); - } -} } // namespace test } // namespace ov From 9c908f5245588ee677bdeacec796d21059be7453 Mon Sep 17 00:00:00 2001 From: Ilya Churaev Date: Tue, 19 Sep 2023 11:46:11 +0400 Subject: [PATCH 18/46] Migrate template backend to new api (#19843) * Added set_element_type for tensor * Moved template backend to new API * Revert "Added set_element_type for tensor" This reverts commit 27608d2ea0acdf0f9fe3504b95e83f988f63c3a9. * Fixed build * Fixed more errors * Fixed loop implementation * Fixed ONNX tests * Small change * Fixed set_shape for host tensor * Fixed ReadValue Assign tests * Fixed template tests * Fixed build * Fix Windows build * Fixed more errors * Fixed CTCLoss * Fixed comments * Removed all comments * Fixed tensors update * Try to fix tests --- src/core/CMakeLists.txt | 1 + src/core/include/openvino/op/loop.hpp | 5 +- src/core/reference/CMakeLists.txt | 1 + .../include/openvino/reference/abs.hpp | 1 + .../openvino/reference/adaptive_max_pool.hpp | 1 + .../openvino/reference/convert_color_nv12.hpp | 60 +- .../include/openvino/reference/ctc_loss.hpp | 2 + .../include/openvino/reference/einsum.hpp | 2 +- .../include/openvino/reference/fft.hpp | 10 +- .../include/openvino/reference/function.hpp | 2 +- .../openvino/reference/hard_sigmoid.hpp | 1 + .../include/openvino/reference/if.hpp | 4 +- .../include/openvino/reference/is_finite.hpp | 1 + .../include/openvino/reference/is_inf.hpp | 3 + .../include/openvino/reference/is_nan.hpp | 1 + .../include/openvino/reference/loop.hpp | 4 +- .../include/openvino/reference/lstm_cell.hpp | 1 + .../reference/non_max_suppression.hpp | 4 +- .../openvino/reference/roi_pooling.hpp | 3 + .../openvino/reference/tensor_iterator.hpp | 11 +- src/core/reference/src/op/einsum.cpp | 377 ++++---- src/core/reference/src/op/fft.cpp | 13 +- src/core/reference/src/op/function.cpp | 11 +- src/core/reference/src/op/if.cpp | 15 +- src/core/reference/src/op/loop.cpp | 86 +- .../reference/src/op/non_max_suppression.cpp | 46 +- src/core/reference/src/op/tensor_iterator.cpp | 48 +- src/core/reference/src/op/tile.cpp | 2 - src/core/src/node.cpp | 9 +- src/core/src/op/loop.cpp | 5 +- src/core/src/runtime/host_tensor.cpp | 12 +- src/inference/src/dev/make_tensor.cpp | 2 + src/plugins/template/backend/backend.cpp | 2 - .../template/backend/evaluates_map.cpp | 64 +- .../template/backend/evaluates_map.hpp | 26 +- src/plugins/template/backend/executable.hpp | 4 +- .../template/backend/int_executable.cpp | 77 +- .../template/backend/int_executable.hpp | 5 +- src/plugins/template/backend/ops/abs.cpp | 92 +- .../backend/ops/adaptive_avg_pool.cpp | 123 +-- .../backend/ops/adaptive_max_pool.cpp | 143 ++- src/plugins/template/backend/ops/assign.cpp | 60 +- src/plugins/template/backend/ops/avg_pool.cpp | 93 +- .../template/backend/ops/batch_norm.cpp | 260 ++--- .../backend/ops/binary_convolution.cpp | 147 ++- .../template/backend/ops/bucketize.cpp | 271 +++--- src/plugins/template/backend/ops/ceiling.cpp | 91 +- src/plugins/template/backend/ops/convert.cpp | 208 ++-- .../backend/ops/convert_color_nv12.cpp | 403 +++----- .../template/backend/ops/convolution.cpp | 148 ++- .../backend/ops/convolution_backprop_data.cpp | 158 ++- .../backend/ops/ctc_greedy_decoder.cpp | 129 +-- .../ops/ctc_greedy_decoder_seq_len.cpp | 203 ++-- src/plugins/template/backend/ops/ctc_loss.cpp | 162 ++-- src/plugins/template/backend/ops/cum_sum.cpp | 113 ++- .../backend/ops/deformable_convolution.cpp | 367 +++---- .../backend/ops/deformable_psroi_pooling.cpp | 161 ++- .../template/backend/ops/detection_output.cpp | 274 ++---- src/plugins/template/backend/ops/einsum.cpp | 82 +- src/plugins/template/backend/ops/elu.cpp | 89 +- .../backend/ops/embedding_bag_offsets_sum.cpp | 155 ++- .../backend/ops/embedding_bag_packed_sum.cpp | 156 ++- .../backend/ops/embedding_segments_sum.cpp | 155 ++- src/plugins/template/backend/ops/equal.cpp | 105 +- .../template/backend/ops/evaluate_node.hpp | 82 +- src/plugins/template/backend/ops/exp.cpp | 87 +- ...xperimental_detectron_detection_output.cpp | 198 ++-- ...imental_detectron_prior_grid_generator.cpp | 207 ++-- ...mental_detectron_proposal_single_image.cpp | 142 ++- ...mental_detectron_roi_feature_extractor.cpp | 201 ++-- .../ops/experimental_detectron_topk_rois.cpp | 177 ++-- .../backend/ops/extract_image_patches.cpp | 153 ++- src/plugins/template/backend/ops/fft.cpp | 182 ++-- src/plugins/template/backend/ops/gather.cpp | 103 +- .../template/backend/ops/gather_elements.cpp | 151 ++- .../template/backend/ops/gather_nd.cpp | 234 +++-- .../template/backend/ops/gather_tree.cpp | 97 +- src/plugins/template/backend/ops/gelu.cpp | 180 ++-- .../backend/ops/generate_proposal.cpp | 144 ++- src/plugins/template/backend/ops/greater.cpp | 106 +- .../template/backend/ops/grid_sample.cpp | 130 +-- src/plugins/template/backend/ops/grn.cpp | 88 +- .../backend/ops/group_convolution.cpp | 148 ++- .../ops/group_convolution_backprop_data.cpp | 199 ++-- .../backend/ops/group_normalization.cpp | 41 +- src/plugins/template/backend/ops/gru_cell.cpp | 248 ++--- .../template/backend/ops/hard_sigmoid.cpp | 132 +-- src/plugins/template/backend/ops/if.cpp | 154 +-- .../template/backend/ops/interpolate.cpp | 340 +++---- src/plugins/template/backend/ops/irdft.cpp | 101 +- .../template/backend/ops/is_finite.cpp | 146 ++- src/plugins/template/backend/ops/is_inf.cpp | 125 ++- src/plugins/template/backend/ops/is_nan.cpp | 121 ++- src/plugins/template/backend/ops/log.cpp | 87 +- .../template/backend/ops/log_softmax.cpp | 125 +-- src/plugins/template/backend/ops/lrn.cpp | 89 +- .../template/backend/ops/lstm_cell.cpp | 237 +++-- .../template/backend/ops/matrix_nms.cpp | 189 ++-- src/plugins/template/backend/ops/mod.cpp | 93 +- .../template/backend/ops/multiclass_nms.cpp | 271 ++---- src/plugins/template/backend/ops/mvn.cpp | 194 ++-- .../backend/ops/non_max_suppression.cpp | 913 +++++++----------- .../template/backend/ops/normalize_l2.cpp | 121 +-- .../template/backend/ops/ops_evaluates.hpp | 792 ++++++++------- src/plugins/template/backend/ops/pad.cpp | 93 +- src/plugins/template/backend/ops/prelu.cpp | 95 +- src/plugins/template/backend/ops/proposal.cpp | 214 ++-- .../template/backend/ops/psroi_pooling.cpp | 101 +- src/plugins/template/backend/ops/rdft.cpp | 100 +- .../template/backend/ops/read_value.cpp | 80 +- .../template/backend/ops/region_yolo.cpp | 123 +-- src/plugins/template/backend/ops/relu.cpp | 87 +- .../template/backend/ops/reorg_yolo.cpp | 83 +- .../template/backend/ops/reverse_sequence.cpp | 185 ++-- src/plugins/template/backend/ops/rnn_cell.cpp | 109 +-- .../template/backend/ops/roi_align.cpp | 108 +-- .../template/backend/ops/roi_pooling.cpp | 128 +-- src/plugins/template/backend/ops/roll.cpp | 96 +- .../backend/ops/scatter_nd_update.cpp | 137 +-- src/plugins/template/backend/ops/selu.cpp | 97 +- .../template/backend/ops/sequences.cpp | 847 +++++++--------- src/plugins/template/backend/ops/sigmoid.cpp | 91 +- src/plugins/template/backend/ops/sign.cpp | 87 +- src/plugins/template/backend/ops/softsign.cpp | 121 ++- .../backend/ops/squared_difference.cpp | 127 +-- src/plugins/template/backend/ops/tanh.cpp | 92 +- .../template/backend/ops/tensor_iterator.cpp | 130 +-- src/plugins/template/backend/ops/unique.cpp | 137 ++- .../template/backend/opset_int_tbl.hpp | 54 +- 129 files changed, 7002 insertions(+), 9318 deletions(-) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 03580613532e7b..c12a30d5a6f639 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -8,6 +8,7 @@ set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) add_definitions(-DIN_OV_CORE_LIBRARY) set(OV_CORE_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/include) +set(OV_CORE_DEV_API_PATH ${CMAKE_CURRENT_SOURCE_DIR}/dev_api) file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp) diff --git a/src/core/include/openvino/op/loop.hpp b/src/core/include/openvino/op/loop.hpp index cb174d588b7bc3..c1ad30e5308e4a 100644 --- a/src/core/include/openvino/op/loop.hpp +++ b/src/core/include/openvino/op/loop.hpp @@ -10,6 +10,7 @@ #include "openvino/op/constant.hpp" #include "openvino/op/parameter.hpp" #include "openvino/op/util/sub_graph_base.hpp" +#include "openvino/runtime/tensor.hpp" namespace ov { namespace op { @@ -61,9 +62,7 @@ class OPENVINO_API Loop : public op::util::SubGraphOp { bool visit_attributes(AttributeVisitor& visitor) override; std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; - OPENVINO_SUPPRESS_DEPRECATED_START - bool evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const override; - OPENVINO_SUPPRESS_DEPRECATED_END + bool evaluate(ov::TensorVector& outputs, const ov::TensorVector& inputs) const override; bool has_evaluate() const override; protected: diff --git a/src/core/reference/CMakeLists.txt b/src/core/reference/CMakeLists.txt index dbd126d84a4bf0..0a6c16313d7ccb 100644 --- a/src/core/reference/CMakeLists.txt +++ b/src/core/reference/CMakeLists.txt @@ -35,6 +35,7 @@ endif() target_include_directories(${TARGET_NAME} PUBLIC $ + $ $) target_include_directories(${TARGET_NAME} SYSTEM PRIVATE diff --git a/src/core/reference/include/openvino/reference/abs.hpp b/src/core/reference/include/openvino/reference/abs.hpp index c58e70c5b4de02..426634a63a2d34 100644 --- a/src/core/reference/include/openvino/reference/abs.hpp +++ b/src/core/reference/include/openvino/reference/abs.hpp @@ -4,6 +4,7 @@ #pragma once +#include #include #include diff --git a/src/core/reference/include/openvino/reference/adaptive_max_pool.hpp b/src/core/reference/include/openvino/reference/adaptive_max_pool.hpp index 9aa0c3afa2af83..69c8ef2c940834 100644 --- a/src/core/reference/include/openvino/reference/adaptive_max_pool.hpp +++ b/src/core/reference/include/openvino/reference/adaptive_max_pool.hpp @@ -10,6 +10,7 @@ #include "ngraph/axis_vector.hpp" #include "ngraph/shape.hpp" +#include "openvino/reference/adaptive_avg_pool.hpp" namespace ov { namespace reference { diff --git a/src/core/reference/include/openvino/reference/convert_color_nv12.hpp b/src/core/reference/include/openvino/reference/convert_color_nv12.hpp index 4e8db24eb29668..a42aff6184c17f 100644 --- a/src/core/reference/include/openvino/reference/convert_color_nv12.hpp +++ b/src/core/reference/include/openvino/reference/convert_color_nv12.hpp @@ -107,12 +107,12 @@ void color_convert_i420(const T* arg_y, } } -OPENVINO_SUPPRESS_DEPRECATED_START -template +template inline bool color_convert_nv12(const std::shared_ptr& op, - const ov::HostTensorVector& outputs, - const ov::HostTensorVector& inputs, + ov::TensorVector& outputs, + const ov::TensorVector& inputs, ov::op::util::ConvertColorNV12Base::ColorConversion type) { + using ET = typename ov::element_type_traits::value_type; static const size_t N_DIM = 0; static const size_t H_DIM = 1; static const size_t W_DIM = 2; @@ -122,17 +122,17 @@ inline bool color_convert_nv12(const std::shared_ptr& op, auto single_plane = op->get_input_size() == 1; const auto& y_tensor = inputs[0]; - auto batch_size = y_tensor->get_shape()[N_DIM]; - auto image_w = y_tensor->get_shape()[W_DIM]; - auto image_h = y_tensor->get_shape()[H_DIM]; + auto batch_size = y_tensor.get_shape()[N_DIM]; + auto image_w = y_tensor.get_shape()[W_DIM]; + auto image_h = y_tensor.get_shape()[H_DIM]; if (single_plane) { image_h = image_h * 2 / 3; } - outputs[0]->set_shape({batch_size, image_h, image_w, 3}); // 3 is RGB + outputs[0].set_shape({batch_size, image_h, image_w, 3}); // 3 is RGB if (single_plane) { - color_convert_nv12(y_tensor->get_data_ptr(), - y_tensor->get_data_ptr() + image_w * image_h, - outputs[0]->get_data_ptr(), + color_convert_nv12(y_tensor.data(), + y_tensor.data() + image_w * image_h, + outputs[0].data(), batch_size, image_h, image_w, @@ -141,9 +141,9 @@ inline bool color_convert_nv12(const std::shared_ptr& op, type); } else { const auto& uv_tensor = inputs[1]; - color_convert_nv12(y_tensor->get_data_ptr(), - uv_tensor->get_data_ptr(), - outputs[0]->get_data_ptr(), + color_convert_nv12(y_tensor.data(), + uv_tensor.data(), + outputs[0].data(), batch_size, image_h, image_w, @@ -154,11 +154,12 @@ inline bool color_convert_nv12(const std::shared_ptr& op, return true; } -template +template inline bool color_convert_i420(const std::shared_ptr& op, - const ov::HostTensorVector& outputs, - const ov::HostTensorVector& inputs, + ov::TensorVector& outputs, + const ov::TensorVector& inputs, ov::op::util::ConvertColorI420Base::ColorConversion type) { + using ET = typename ov::element_type_traits::value_type; static const size_t N_DIM = 0; static const size_t H_DIM = 1; static const size_t W_DIM = 2; @@ -168,18 +169,18 @@ inline bool color_convert_i420(const std::shared_ptr& op, auto single_plane = op->get_input_size() == 1; const auto& y_tensor = inputs[0]; - auto batch_size = y_tensor->get_shape()[N_DIM]; - auto image_w = y_tensor->get_shape()[W_DIM]; - auto image_h = y_tensor->get_shape()[H_DIM]; + auto batch_size = y_tensor.get_shape()[N_DIM]; + auto image_w = y_tensor.get_shape()[W_DIM]; + auto image_h = y_tensor.get_shape()[H_DIM]; if (single_plane) { image_h = image_h * 2 / 3; } - outputs[0]->set_shape({batch_size, image_h, image_w, 3}); // 3 is RGB + outputs[0].set_shape({batch_size, image_h, image_w, 3}); // 3 is RGB if (single_plane) { - color_convert_i420(y_tensor->get_data_ptr(), - y_tensor->get_data_ptr() + image_w * image_h, - y_tensor->get_data_ptr() + 5 * image_w * image_h / 4, - outputs[0]->get_data_ptr(), + color_convert_i420(y_tensor.data(), + y_tensor.data() + image_w * image_h, + y_tensor.data() + 5 * image_w * image_h / 4, + outputs[0].data(), batch_size, image_h, image_w, @@ -189,10 +190,10 @@ inline bool color_convert_i420(const std::shared_ptr& op, } else { const auto& u_tensor = inputs[1]; const auto& v_tensor = inputs[2]; - color_convert_i420(y_tensor->get_data_ptr(), - u_tensor->get_data_ptr(), - v_tensor->get_data_ptr(), - outputs[0]->get_data_ptr(), + color_convert_i420(y_tensor.data(), + u_tensor.data(), + v_tensor.data(), + outputs[0].data(), batch_size, image_h, image_w, @@ -203,6 +204,5 @@ inline bool color_convert_i420(const std::shared_ptr& op, return true; } -OPENVINO_SUPPRESS_DEPRECATED_END } // namespace reference } // namespace ov diff --git a/src/core/reference/include/openvino/reference/ctc_loss.hpp b/src/core/reference/include/openvino/reference/ctc_loss.hpp index 03fae356ad69a7..1b16b352eb4870 100644 --- a/src/core/reference/include/openvino/reference/ctc_loss.hpp +++ b/src/core/reference/include/openvino/reference/ctc_loss.hpp @@ -6,6 +6,8 @@ #include +#include + #include "ngraph/shape_util.hpp" namespace ov { diff --git a/src/core/reference/include/openvino/reference/einsum.hpp b/src/core/reference/include/openvino/reference/einsum.hpp index 667a923739ce9c..8e477959bcba37 100644 --- a/src/core/reference/include/openvino/reference/einsum.hpp +++ b/src/core/reference/include/openvino/reference/einsum.hpp @@ -11,6 +11,6 @@ namespace ov { namespace reference { -void einsum(const HostTensorVector& outputs, const HostTensorVector& inputs, const std::string& equation); +void einsum(ov::TensorVector& outputs, const ov::TensorVector& inputs, const std::string& equation); } // namespace reference } // namespace ov diff --git a/src/core/reference/include/openvino/reference/fft.hpp b/src/core/reference/include/openvino/reference/fft.hpp index f35ef8ce79b981..474da3734157ed 100644 --- a/src/core/reference/include/openvino/reference/fft.hpp +++ b/src/core/reference/include/openvino/reference/fft.hpp @@ -23,13 +23,9 @@ #include #include #include -#include #include -#include "ngraph/node.hpp" -#include "ngraph/op/util/op_types.hpp" -#include "ngraph/ops.hpp" -#include "ngraph/shape_util.hpp" +#include "openvino/runtime/tensor.hpp" namespace ov { namespace reference { @@ -43,8 +39,8 @@ void fft(const float* input_data, const Shape& output_shape, FFTKind fft_kind); -void fft_postprocessing(const HostTensorVector& outputs, - const ngraph::element::Type output_type, +void fft_postprocessing(ov::TensorVector& outputs, + const ov::element::Type output_type, const std::vector& fft_result); std::vector canonicalize_axes(const int64_t* axes_data, diff --git a/src/core/reference/include/openvino/reference/function.hpp b/src/core/reference/include/openvino/reference/function.hpp index 575821e81b4a0f..24c10da48b40b8 100644 --- a/src/core/reference/include/openvino/reference/function.hpp +++ b/src/core/reference/include/openvino/reference/function.hpp @@ -12,6 +12,6 @@ namespace ov { namespace reference { -void function(const std::shared_ptr& function, const HostTensorVector& inputs, HostTensorVector& outputs); +void function(const std::shared_ptr& function, const ov::TensorVector& inputs, ov::TensorVector& outputs); } } // namespace ov diff --git a/src/core/reference/include/openvino/reference/hard_sigmoid.hpp b/src/core/reference/include/openvino/reference/hard_sigmoid.hpp index 4dd92870791bdb..dd2cb98df1da4c 100644 --- a/src/core/reference/include/openvino/reference/hard_sigmoid.hpp +++ b/src/core/reference/include/openvino/reference/hard_sigmoid.hpp @@ -4,6 +4,7 @@ #pragma once +#include #include #include diff --git a/src/core/reference/include/openvino/reference/if.hpp b/src/core/reference/include/openvino/reference/if.hpp index aaa47d0624ba29..27fc71ed393027 100644 --- a/src/core/reference/include/openvino/reference/if.hpp +++ b/src/core/reference/include/openvino/reference/if.hpp @@ -13,7 +13,7 @@ namespace reference { void if_reference(const std::vector>& body, const std::vector& out_descs, const std::vector& input_descs, - const HostTensorVector& out, - const HostTensorVector& args); + ov::TensorVector& out, + const ov::TensorVector& args); } } // namespace ov diff --git a/src/core/reference/include/openvino/reference/is_finite.hpp b/src/core/reference/include/openvino/reference/is_finite.hpp index 21677d0f9f9066..302da8485d3c83 100644 --- a/src/core/reference/include/openvino/reference/is_finite.hpp +++ b/src/core/reference/include/openvino/reference/is_finite.hpp @@ -4,6 +4,7 @@ #pragma once +#include #include #include diff --git a/src/core/reference/include/openvino/reference/is_inf.hpp b/src/core/reference/include/openvino/reference/is_inf.hpp index 156dafcfe6e9b0..210248ff2fcd2b 100644 --- a/src/core/reference/include/openvino/reference/is_inf.hpp +++ b/src/core/reference/include/openvino/reference/is_inf.hpp @@ -4,9 +4,12 @@ #pragma once +#include #include #include +#include "openvino/op/is_inf.hpp" + namespace ov { namespace reference { template diff --git a/src/core/reference/include/openvino/reference/is_nan.hpp b/src/core/reference/include/openvino/reference/is_nan.hpp index 47eed0e9944800..7b96e3abb08a79 100644 --- a/src/core/reference/include/openvino/reference/is_nan.hpp +++ b/src/core/reference/include/openvino/reference/is_nan.hpp @@ -4,6 +4,7 @@ #pragma once +#include #include #include diff --git a/src/core/reference/include/openvino/reference/loop.hpp b/src/core/reference/include/openvino/reference/loop.hpp index f233aaf0089576..19e16c2067d564 100644 --- a/src/core/reference/include/openvino/reference/loop.hpp +++ b/src/core/reference/include/openvino/reference/loop.hpp @@ -15,7 +15,7 @@ void loop(const std::shared_ptr& body, const op::util::OutputDescriptionVector& out_descs, const op::util::InputDescriptionVector& input_descs, const op::v5::Loop::SpecialBodyPorts& special_ports, - const HostTensorVector& out, - const HostTensorVector& args); + ov::TensorVector& out, + const ov::TensorVector& args); } } // namespace ov diff --git a/src/core/reference/include/openvino/reference/lstm_cell.hpp b/src/core/reference/include/openvino/reference/lstm_cell.hpp index b82eef98ba95d6..1a21f21cb3e497 100644 --- a/src/core/reference/include/openvino/reference/lstm_cell.hpp +++ b/src/core/reference/include/openvino/reference/lstm_cell.hpp @@ -6,6 +6,7 @@ #include +#include "openvino/op/lstm_cell.hpp" #include "openvino/reference/add.hpp" #include "openvino/reference/clamp.hpp" #include "openvino/reference/matmul.hpp" diff --git a/src/core/reference/include/openvino/reference/non_max_suppression.hpp b/src/core/reference/include/openvino/reference/non_max_suppression.hpp index ca4d9ef49c2955..b9e37e28c6a365 100644 --- a/src/core/reference/include/openvino/reference/non_max_suppression.hpp +++ b/src/core/reference/include/openvino/reference/non_max_suppression.hpp @@ -36,7 +36,7 @@ void non_max_suppression5(const float* boxes_data, int64_t* valid_outputs, const bool sort_result_descending); -void nms5_postprocessing(const HostTensorVector& outputs, +void nms5_postprocessing(ov::TensorVector& outputs, const ngraph::element::Type output_type, const std::vector& selected_indices, const std::vector& selected_scores, @@ -58,7 +58,7 @@ void non_max_suppression(const float* boxes_data, int64_t* valid_outputs, const bool sort_result_descending); -void nms_postprocessing(const HostTensorVector& outputs, +void nms_postprocessing(ov::TensorVector& outputs, const ngraph::element::Type output_type, const std::vector& selected_indices, const std::vector& selected_scores, diff --git a/src/core/reference/include/openvino/reference/roi_pooling.hpp b/src/core/reference/include/openvino/reference/roi_pooling.hpp index 7efa4daf38467d..5dbe13d1de51b6 100644 --- a/src/core/reference/include/openvino/reference/roi_pooling.hpp +++ b/src/core/reference/include/openvino/reference/roi_pooling.hpp @@ -4,6 +4,9 @@ #pragma once +#include +#include + #include "ngraph/shape.hpp" namespace ov { diff --git a/src/core/reference/include/openvino/reference/tensor_iterator.hpp b/src/core/reference/include/openvino/reference/tensor_iterator.hpp index f4ff4d8919ee76..05a66f2e640eb3 100644 --- a/src/core/reference/include/openvino/reference/tensor_iterator.hpp +++ b/src/core/reference/include/openvino/reference/tensor_iterator.hpp @@ -5,18 +5,21 @@ #pragma once #include -#include + +#include "openvino/core/model.hpp" +#include "openvino/op/util/sub_graph_base.hpp" +#include "openvino/runtime/tensor.hpp" namespace ov { namespace reference { using custom_evaluate_function = std::function< - void(const std::shared_ptr& function, const HostTensorVector& inputs, HostTensorVector& outputs)>; + void(const std::shared_ptr& function, const ov::TensorVector& inputs, ov::TensorVector& outputs)>; void tensor_iterator(uint64_t num_iterations, const std::shared_ptr& body, const op::util::OutputDescriptionVector& out_descs, const op::util::InputDescriptionVector& input_descs, - const HostTensorVector& out, - const HostTensorVector& args, + ov::TensorVector& out, + const ov::TensorVector& args, const custom_evaluate_function& evaluate = nullptr); } // namespace reference } // namespace ov diff --git a/src/core/reference/src/op/einsum.cpp b/src/core/reference/src/op/einsum.cpp index 1901073f184a8a..125e33e3aa6b49 100644 --- a/src/core/reference/src/op/einsum.cpp +++ b/src/core/reference/src/op/einsum.cpp @@ -5,9 +5,8 @@ #include "openvino/reference/einsum.hpp" #include -#include -#include "ngraph/shape.hpp" +#include "openvino/op/einsum.hpp" #include "openvino/reference/broadcast.hpp" #include "openvino/reference/matmul.hpp" #include "openvino/reference/multiply.hpp" @@ -16,7 +15,6 @@ #include "openvino/reference/transpose.hpp" #include "openvino/reference/utils/span.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START namespace ov { namespace reference { namespace { @@ -27,7 +25,7 @@ namespace { std::vector> compute_einsum_path(size_t num_inputs) { // TODO: implement algorithm for finding (pseudo-)optimal einsum_path std::vector> einsum_path; - NGRAPH_CHECK(num_inputs > 0); + OPENVINO_ASSERT(num_inputs > 0); for (size_t input_ind = num_inputs - 1; input_ind > 0; --input_ind) { einsum_path.push_back(std::make_pair(0, input_ind)); } @@ -96,7 +94,7 @@ std::string generate_grouping_subscript(const std::string& input_subscript, return input_subscript; } - auto labels = ngraph::opset7::Einsum::extract_labels(input_subscript); + auto labels = ov::op::v7::Einsum::extract_labels(input_subscript); std::string required_subscript = ""; for (auto index : labels_inds) { required_subscript += labels[index]; @@ -108,15 +106,15 @@ std::string generate_grouping_subscript(const std::string& input_subscript, std::unordered_map compute_label_dim_map(const Rank& input_rank, const std::string& input_subscript) { constexpr char ellipsis[] = "..."; - auto labels = ngraph::opset7::Einsum::extract_labels(input_subscript); + auto labels = ov::op::v7::Einsum::extract_labels(input_subscript); size_t input_rank_length = labels.size(); - NGRAPH_CHECK(input_rank.is_static() || (std::find(labels.begin(), labels.end(), ellipsis) == labels.end()), - "Input rank cannot be dynamic in case of ellipsis in input subscript"); + OPENVINO_ASSERT(input_rank.is_static() || (std::find(labels.begin(), labels.end(), ellipsis) == labels.end()), + "Input rank cannot be dynamic in case of ellipsis in input subscript"); if (input_rank.is_static()) { input_rank_length = input_rank.get_length(); } std::unordered_map resulted_map; - NGRAPH_CHECK(input_rank_length >= labels.size()); + OPENVINO_ASSERT(input_rank_length >= labels.size()); size_t num_broadcasted_dims = input_rank_length - labels.size() + 1; size_t current_dim = 0; @@ -146,7 +144,7 @@ std::unordered_map compute_label_dim_map(const Ran /// range [s_begin;s_end) /// Shape compute_sub_shape(const Shape& input_shape, size_t begin, size_t end, bool is_product = false) { - NGRAPH_CHECK(end <= input_shape.size()); + OPENVINO_ASSERT(end <= input_shape.size()); if (end <= begin) { // return empty shape return Shape(); @@ -179,17 +177,17 @@ void compute_ranges(const Rank& input_rank, constexpr char ellipsis[] = "..."; size_t common_rank = common_labels.size(); if (std::find(common_labels.begin(), common_labels.end(), ellipsis) != common_labels.end()) { - NGRAPH_CHECK(label_to_dim_map.find(ellipsis) != label_to_dim_map.end()); + OPENVINO_ASSERT(label_to_dim_map.find(ellipsis) != label_to_dim_map.end()); common_rank += label_to_dim_map[ellipsis].size() - 1; } size_t sep_rank = sep_labels.size(); if (std::find(sep_labels.begin(), sep_labels.end(), ellipsis) != sep_labels.end()) { - NGRAPH_CHECK(label_to_dim_map.find(ellipsis) != label_to_dim_map.end()); + OPENVINO_ASSERT(label_to_dim_map.find(ellipsis) != label_to_dim_map.end()); sep_rank += label_to_dim_map[ellipsis].size() - 1; } size_t reduced_rank = reduced_labels.size(); if (std::find(reduced_labels.begin(), reduced_labels.end(), ellipsis) != reduced_labels.end()) { - NGRAPH_CHECK(label_to_dim_map.find(ellipsis) != label_to_dim_map.end()); + OPENVINO_ASSERT(label_to_dim_map.find(ellipsis) != label_to_dim_map.end()); reduced_rank += label_to_dim_map[ellipsis].size() - 1; } @@ -255,15 +253,15 @@ Shape compute_matmul_output_shape(const Shape& common_sub_shape, /// inputs with indices input_ind1 and input_ind2 and inserted new input and /// the corresponsing subscript in the tail /// -void update_operands(HostTensorVector& inputs, +void update_operands(ov::TensorVector& inputs, std::vector& input_subscripts, size_t input_ind1, size_t input_ind2, - const HostTensorPtr& new_input, + const ov::Tensor& new_input, const std::string& new_subscript) { - NGRAPH_CHECK(input_ind1 < input_ind2); - NGRAPH_CHECK(input_ind2 < inputs.size()); - NGRAPH_CHECK(input_ind2 < input_subscripts.size()); + OPENVINO_ASSERT(input_ind1 < input_ind2); + OPENVINO_ASSERT(input_ind2 < inputs.size()); + OPENVINO_ASSERT(input_ind2 < input_subscripts.size()); inputs.erase(inputs.begin() + input_ind2); inputs.erase(inputs.begin() + input_ind1); inputs.push_back(new_input); @@ -275,26 +273,28 @@ void update_operands(HostTensorVector& inputs, /// \brief Unsqueeze input by given dimensions if a vector of unsqueezing /// dimensions is not empty template -HostTensorPtr unsqueeze_input(const HostTensorPtr& input, std::vector& unsqueeze_axes) { +ov::Tensor unsqueeze_input(const ov::Tensor& input, std::vector& unsqueeze_axes) { if (unsqueeze_axes.empty()) { return input; } - Shape input_shape = input->get_shape(); + Shape input_shape = input.get_shape(); Shape output_shape = input_shape; std::sort(unsqueeze_axes.begin(), unsqueeze_axes.end()); for (auto unsqueeze_axis : unsqueeze_axes) { - NGRAPH_CHECK(unsqueeze_axis >= 0); - NGRAPH_CHECK(static_cast(unsqueeze_axis) <= output_shape.size()); + OPENVINO_ASSERT(unsqueeze_axis >= 0); + OPENVINO_ASSERT(static_cast(unsqueeze_axis) <= output_shape.size()); output_shape.insert(output_shape.begin() + unsqueeze_axis, 1); } - HostTensorPtr output = std::shared_ptr(new HostTensor(input->get_element_type(), output_shape)); - const AxisVector order = ngraph::get_default_order(input->get_shape()); - const auto element_type = input->get_element_type(); + auto output = ov::Tensor(input.get_element_type(), output_shape); + OPENVINO_SUPPRESS_DEPRECATED_START + const AxisVector order = ngraph::get_default_order(input.get_shape()); + OPENVINO_SUPPRESS_DEPRECATED_END + const auto element_type = input.get_element_type(); - reference::reshape(reinterpret_cast(input->get_data_ptr()), - reinterpret_cast(output->get_data_ptr()), + reference::reshape(reinterpret_cast(input.data()), + reinterpret_cast(output.data()), input_shape, order, output_shape, @@ -307,31 +307,31 @@ HostTensorPtr unsqueeze_input(const HostTensorPtr& input, std::vector& /// equation and reduce dimensions corresponding to such labels /// template -void reduce_input(HostTensorVector& inputs, +void reduce_input(ov::TensorVector& inputs, std::vector& input_subscripts, const std::string& output_subscript, size_t input_ind) { // perform sanity check for arguments auto num_inputs = inputs.size(); - NGRAPH_CHECK(num_inputs == input_subscripts.size(), "Each input must have own subscript."); - NGRAPH_CHECK(input_ind < num_inputs, "Input index is out of range."); + OPENVINO_ASSERT(num_inputs == input_subscripts.size(), "Each input must have own subscript."); + OPENVINO_ASSERT(input_ind < num_inputs, "Input index is out of range."); const auto& input_ptr = inputs[input_ind]; const auto& input_subscript = input_subscripts[input_ind]; - const auto input_shape = input_ptr->get_shape(); + const auto input_shape = input_ptr.get_shape(); // compute output shape and axes to reduce - ngraph::Shape output_shape; - ngraph::AxisSet reduced_axes; - auto labels = ngraph::opset7::Einsum::extract_labels(input_subscripts[input_ind]); - auto label_dim_map = compute_label_dim_map(input_ptr->get_partial_shape().rank(), input_subscript); + ov::Shape output_shape; + ov::AxisSet reduced_axes; + auto labels = ov::op::v7::Einsum::extract_labels(input_subscripts[input_ind]); + auto label_dim_map = compute_label_dim_map(input_ptr.get_shape().size(), input_subscript); std::string new_input_subscript = ""; for (const auto& label : labels) { // check if the current label is met in the other input subscripts // or the output subscript bool is_dim_reduced = is_dimension_reduced(input_subscripts, output_subscript, label, {input_ind}); - NGRAPH_CHECK(label_dim_map.find(label) != label_dim_map.end()); + OPENVINO_ASSERT(label_dim_map.find(label) != label_dim_map.end()); auto label_dims = label_dim_map[label]; // if label is not met, dimension corresponding to the label is to reduce @@ -350,9 +350,9 @@ void reduce_input(HostTensorVector& inputs, return; } - HostTensorPtr output_ptr = std::shared_ptr(new HostTensor(input_ptr->get_element_type(), output_shape)); + auto output_ptr = ov::Tensor(input_ptr.get_element_type(), output_shape); - reference::sum(input_ptr->get_data_ptr(), output_ptr->get_data_ptr(), input_shape, reduced_axes); + reference::sum(input_ptr.data(), output_ptr.data(), input_shape, reduced_axes); // update a vector of inputs and input subscripts inputs[input_ind] = output_ptr; @@ -362,14 +362,14 @@ void reduce_input(HostTensorVector& inputs, /// \brief Transpose input to layout specified through the required subscript /// template -void transpose_input(HostTensorVector& inputs, +void transpose_input(ov::TensorVector& inputs, std::vector& input_subscripts, const std::string& required_subscript, size_t input_ind) { // perform sanity check for arguments auto num_inputs = inputs.size(); - NGRAPH_CHECK(num_inputs == input_subscripts.size(), "Each input must have own subscript."); - NGRAPH_CHECK(input_ind < num_inputs, "Input index is out of range."); + OPENVINO_ASSERT(num_inputs == input_subscripts.size(), "Each input must have own subscript."); + OPENVINO_ASSERT(input_ind < num_inputs, "Input index is out of range."); // generate permutation vector by searching for bijection between // input_subscripts and required_subscript @@ -384,29 +384,29 @@ void transpose_input(HostTensorVector& inputs, // find permutation that establishes bijection between the input subscript // and the required one - auto label_dim_map = compute_label_dim_map(input_ptr->get_partial_shape().rank(), input_subscript); - auto labels = ngraph::opset7::Einsum::extract_labels(input_subscript); - auto required_labels = ngraph::opset7::Einsum::extract_labels(required_subscript); - NGRAPH_CHECK(labels.size() == required_labels.size()); + auto label_dim_map = compute_label_dim_map(input_ptr.get_shape().size(), input_subscript); + auto labels = ov::op::v7::Einsum::extract_labels(input_subscript); + auto required_labels = ov::op::v7::Einsum::extract_labels(required_subscript); + OPENVINO_ASSERT(labels.size() == required_labels.size()); for (const auto& required_label : required_labels) { - NGRAPH_CHECK(label_dim_map.find(required_label) != label_dim_map.end()); + OPENVINO_ASSERT(label_dim_map.find(required_label) != label_dim_map.end()); auto label_dims = label_dim_map[required_label]; permutation.insert(permutation.end(), label_dims.begin(), label_dims.end()); } - const auto input_shape = input_ptr->get_shape(); - const auto element_type = input_ptr->get_element_type(); + const auto input_shape = input_ptr.get_shape(); + const auto element_type = input_ptr.get_element_type(); Shape output_shape(input_shape.size()); std::transform(permutation.begin(), permutation.end(), output_shape.begin(), [&](const int64_t& v) { - NGRAPH_CHECK(v >= 0, "Negative values for transpose axes order are not supported."); - NGRAPH_CHECK(v < int64_t(input_shape.size()), "Transpose axis ", v, " is out of shape range."); + OPENVINO_ASSERT(v >= 0, "Negative values for transpose axes order are not supported."); + OPENVINO_ASSERT(v < int64_t(input_shape.size()), "Transpose axis ", v, " is out of shape range."); return input_shape[v]; }); - HostTensorPtr output_ptr = std::shared_ptr(new HostTensor(element_type, output_shape)); + auto output_ptr = ov::Tensor(element_type, output_shape); - reference::transpose(reinterpret_cast(input_ptr->get_data_ptr()), - reinterpret_cast(output_ptr->get_data_ptr()), + reference::transpose(reinterpret_cast(input_ptr.data()), + reinterpret_cast(output_ptr.data()), input_shape, element_type.size(), permutation.data(), @@ -421,15 +421,15 @@ void transpose_input(HostTensorVector& inputs, /// same shape of both operands in the common (or batch) dimensionsy. /// template -void broadcast_input(HostTensorVector& inputs, +void broadcast_input(ov::TensorVector& inputs, size_t input_ind, const Shape& new_common_shape, const Shape& separate_shape, const Shape& reduced_shape, bool is_separate_first) { - NGRAPH_CHECK(input_ind < inputs.size()); - HostTensorPtr& input = inputs[input_ind]; - const Shape old_shape = input->get_shape(); + OPENVINO_ASSERT(input_ind < inputs.size()); + ov::Tensor& input = inputs[input_ind]; + const Shape old_shape = input.get_shape(); Shape new_shape; new_shape.insert(new_shape.end(), new_common_shape.begin(), new_common_shape.end()); if (is_separate_first) { @@ -440,22 +440,22 @@ void broadcast_input(HostTensorVector& inputs, new_shape.insert(new_shape.end(), separate_shape.begin(), separate_shape.end()); } - if (input->get_shape() == new_shape) { + if (input.get_shape() == new_shape) { return; } - NGRAPH_CHECK(old_shape.size() <= new_shape.size()); + OPENVINO_ASSERT(old_shape.size() <= new_shape.size()); - HostTensorPtr output = std::shared_ptr(new HostTensor(input->get_element_type(), new_shape)); + auto output = ov::Tensor(input.get_element_type(), new_shape); std::vector broadcast_axes(old_shape.size()); std::iota(broadcast_axes.begin(), broadcast_axes.end(), new_shape.size() - old_shape.size()); - reference::broadcast(reinterpret_cast(input->get_data_ptr()), - reinterpret_cast(output->get_data_ptr()), - input->get_shape(), - output->get_shape(), + reference::broadcast(reinterpret_cast(input.data()), + reinterpret_cast(output.data()), + input.get_shape(), + output.get_shape(), broadcast_axes, - input->get_element_type().size()); + input.get_element_type().size()); input = output; } @@ -465,21 +465,21 @@ void broadcast_input(HostTensorVector& inputs, /// identity /// template -HostTensorPtr build_identity(const HostTensorPtr& input_ptr, const ov::TensorLabel& repeated_label_dims) { +ov::Tensor build_identity(const ov::Tensor& input, const ov::TensorLabel& repeated_label_dims) { // allocate HostTensor for building identity tensor - NGRAPH_CHECK(repeated_label_dims.size() > 1); - Shape input_shape = input_ptr->get_shape(); + OPENVINO_ASSERT(repeated_label_dims.size() > 1); + Shape input_shape = input.get_shape(); Shape identity_shape(input_shape.size(), 1); size_t repeated_label_dim_size = input_shape[repeated_label_dims[0]]; for (auto dim : repeated_label_dims) { - NGRAPH_CHECK(dim < input_shape.size()); - NGRAPH_CHECK(repeated_label_dim_size == input_shape[dim]); + OPENVINO_ASSERT(dim < input_shape.size()); + OPENVINO_ASSERT(repeated_label_dim_size == input_shape[dim]); identity_shape[dim] = repeated_label_dim_size; } - HostTensorPtr identity = std::shared_ptr(new HostTensor(input_ptr->get_element_type(), identity_shape)); + auto identity = ov::Tensor(input.get_element_type(), identity_shape); - T* identity_data_ptr = identity->get_data_ptr(); - size_t data_size = shape_size(identity_shape) * identity->get_element_type().size(); + T* identity_data_ptr = identity.data(); + size_t data_size = shape_size(identity_shape) * identity.get_element_type().size(); std::memset(identity_data_ptr, 0, data_size); // Identity[k,k,...,k] element is placed in k*p^(n-1) + ... + k*p + k position, @@ -507,35 +507,32 @@ HostTensorPtr build_identity(const HostTensorPtr& input_ptr, const ov::TensorLab /// repeated label /// template -HostTensorPtr build_multi_identity(const HostTensorPtr& input_ptr, - const std::vector& repeated_labels, - std::unordered_map& label_dim_map) { - Shape input_shape = input_ptr->get_shape(); +ov::Tensor build_multi_identity(const ov::Tensor& input, + const std::vector& repeated_labels, + std::unordered_map& label_dim_map) { + Shape input_shape = input.get_shape(); // initially set multi-identity with identity for the first repeated label - NGRAPH_CHECK(repeated_labels.size() > 0); + OPENVINO_ASSERT(repeated_labels.size() > 0); auto first_repeated_label = repeated_labels[0]; - NGRAPH_CHECK(label_dim_map.find(first_repeated_label) != label_dim_map.end()); + OPENVINO_ASSERT(label_dim_map.find(first_repeated_label) != label_dim_map.end()); auto repeated_label_dims = label_dim_map[first_repeated_label]; - HostTensorPtr multi_identity = build_identity(input_ptr, repeated_label_dims); + ov::Tensor multi_identity = build_identity(input, repeated_label_dims); for (size_t label_ind = 1; label_ind < repeated_labels.size(); ++label_ind) { - NGRAPH_CHECK(label_dim_map.find(repeated_labels[label_ind]) != label_dim_map.end()); + OPENVINO_ASSERT(label_dim_map.find(repeated_labels[label_ind]) != label_dim_map.end()); repeated_label_dims = label_dim_map[repeated_labels[label_ind]]; - HostTensorPtr identity = build_identity(input_ptr, repeated_label_dims); - - PartialShape output_shape = multi_identity->get_partial_shape(); - PartialShape::broadcast_merge_into(output_shape, - identity->get_partial_shape(), - ngraph::op::AutoBroadcastType::NUMPY); - HostTensorPtr mul_output = - std::shared_ptr(new HostTensor(identity->get_element_type(), output_shape.get_shape())); - reference::multiply(multi_identity->get_data_ptr(), - identity->get_data_ptr(), - mul_output->get_data_ptr(), - multi_identity->get_shape(), - identity->get_shape(), - ngraph::op::AutoBroadcastType::NUMPY); + ov::Tensor identity = build_identity(input, repeated_label_dims); + + PartialShape output_shape = multi_identity.get_shape(); + PartialShape::broadcast_merge_into(output_shape, identity.get_shape(), ov::op::AutoBroadcastType::NUMPY); + auto mul_output = ov::Tensor(identity.get_element_type(), output_shape.get_shape()); + reference::multiply(multi_identity.data(), + identity.data(), + mul_output.data(), + multi_identity.get_shape(), + identity.get_shape(), + ov::op::AutoBroadcastType::NUMPY); multi_identity = mul_output; } return multi_identity; @@ -545,28 +542,28 @@ HostTensorPtr build_multi_identity(const HostTensorPtr& input_ptr, /// labels) is diagonal /// template -void extract_diagonal(HostTensorVector& inputs, std::vector& input_subscripts, size_t input_ind) { +void extract_diagonal(ov::TensorVector& inputs, std::vector& input_subscripts, size_t input_ind) { // perform sanity check for arguments auto num_inputs = inputs.size(); - NGRAPH_CHECK(num_inputs == input_subscripts.size(), "Each input must have own subscript."); - NGRAPH_CHECK(input_ind < num_inputs, "Input index is out of range."); + OPENVINO_ASSERT(num_inputs == input_subscripts.size(), "Each input must have own subscript."); + OPENVINO_ASSERT(input_ind < num_inputs, "Input index is out of range."); const auto& input_ptr = inputs[input_ind]; const auto& input_subscript = input_subscripts[input_ind]; - const auto input_shape = input_ptr->get_shape(); + const auto input_shape = input_ptr.get_shape(); std::string resultant_subscript = ""; constexpr char ellipsis[] = "..."; - auto labels = ngraph::opset7::Einsum::extract_labels(input_subscript); - auto label_dim_map = compute_label_dim_map(input_ptr->get_partial_shape().rank(), input_subscript); + auto labels = ov::op::v7::Einsum::extract_labels(input_subscript); + auto label_dim_map = compute_label_dim_map(input_ptr.get_shape().size(), input_subscript); std::vector repeated_labels; Shape result_shape; AxisSet reduced_axes; for (const auto& label : labels) { if (resultant_subscript.find(label) == std::string::npos) { - NGRAPH_CHECK(label_dim_map.find(label) != label_dim_map.end()); + OPENVINO_ASSERT(label_dim_map.find(label) != label_dim_map.end()); auto dims = label_dim_map[label]; - NGRAPH_CHECK(dims.size() > 0); + OPENVINO_ASSERT(dims.size() > 0); if (label != ellipsis && dims.size() > 1) { // repeated label is found for (size_t dim_ind = 1; dim_ind < dims.size(); ++dim_ind) { @@ -578,7 +575,7 @@ void extract_diagonal(HostTensorVector& inputs, std::vector& input_ } resultant_subscript += label; for (auto dim : dims) { - NGRAPH_CHECK(dim < input_shape.size()); + OPENVINO_ASSERT(dim < input_shape.size()); result_shape.push_back(input_shape[dim]); } } @@ -587,18 +584,18 @@ void extract_diagonal(HostTensorVector& inputs, std::vector& input_ return; } - HostTensorPtr multi_identity = build_multi_identity(input_ptr, repeated_labels, label_dim_map); + ov::Tensor multi_identity = build_multi_identity(input_ptr, repeated_labels, label_dim_map); - HostTensorPtr mul_output = input_ptr; - reference::multiply(input_ptr->get_data_ptr(), - multi_identity->get_data_ptr(), - mul_output->get_data_ptr(), - input_ptr->get_shape(), - multi_identity->get_shape(), - ngraph::op::AutoBroadcastType::NUMPY); + ov::Tensor mul_output = input_ptr; + reference::multiply(input_ptr.data(), + multi_identity.data(), + mul_output.data(), + input_ptr.get_shape(), + multi_identity.get_shape(), + ov::op::AutoBroadcastType::NUMPY); - HostTensorPtr result = std::shared_ptr(new HostTensor(input_ptr->get_element_type(), result_shape)); - reference::sum(mul_output->get_data_ptr(), result->get_data_ptr(), mul_output->get_shape(), reduced_axes); + auto result = ov::Tensor(input_ptr.get_element_type(), result_shape); + reference::sum(mul_output.data(), result.data(), mul_output.get_shape(), reduced_axes); inputs[input_ind] = result; input_subscripts[input_ind] = resultant_subscript; } @@ -608,11 +605,11 @@ void extract_diagonal(HostTensorVector& inputs, std::vector& input_ /// acceptable by MatMul /// template -HostTensorPtr reshape_input_for_matmul(const HostTensorPtr& input, - const Shape& common_sub_shape, - const Shape& separate_sub_shape, - const Shape& reduced_sub_shape_prod, - bool is_separate_first) { +ov::Tensor reshape_input_for_matmul(const ov::Tensor& input, + const Shape& common_sub_shape, + const Shape& separate_sub_shape, + const Shape& reduced_sub_shape_prod, + bool is_separate_first) { Shape new_shape; new_shape.insert(new_shape.end(), common_sub_shape.begin(), common_sub_shape.end()); @@ -643,17 +640,19 @@ HostTensorPtr reshape_input_for_matmul(const HostTensorPtr& input, // when new shape is equal to the current one, // there is no need in reshape - if (new_shape == input->get_shape()) { + if (new_shape == input.get_shape()) { return input; } - const auto element_type = input->get_element_type(); - const auto input_shape = input->get_shape(); - HostTensorPtr output = std::shared_ptr(new HostTensor(element_type, new_shape)); + const auto element_type = input.get_element_type(); + const auto input_shape = input.get_shape(); + auto output = ov::Tensor(element_type, new_shape); + OPENVINO_SUPPRESS_DEPRECATED_START const AxisVector order = ngraph::get_default_order(input_shape); + OPENVINO_SUPPRESS_DEPRECATED_END - reference::reshape(reinterpret_cast(input->get_data_ptr()), - reinterpret_cast(output->get_data_ptr()), + reference::reshape(reinterpret_cast(input.data()), + reinterpret_cast(output.data()), input_shape, order, new_shape, @@ -667,7 +666,7 @@ HostTensorPtr reshape_input_for_matmul(const HostTensorPtr& input, /// inputs along with their input subscripts /// template -void contract_two_inputs(HostTensorVector& inputs, +void contract_two_inputs(ov::TensorVector& inputs, std::vector& input_subscripts, const std::string& output_subscript, size_t input_ind1, @@ -680,8 +679,8 @@ void contract_two_inputs(HostTensorVector& inputs, // perform sanity check for arguments auto num_inputs = inputs.size(); - NGRAPH_CHECK(num_inputs == input_subscripts.size(), "Each input must have own subscript."); - NGRAPH_CHECK(input_ind2 < num_inputs && input_ind1 != input_ind2, "Incorrect input index is specified."); + OPENVINO_ASSERT(num_inputs == input_subscripts.size(), "Each input must have own subscript."); + OPENVINO_ASSERT(input_ind2 < num_inputs && input_ind1 != input_ind2, "Incorrect input index is specified."); const auto& input1 = inputs[input_ind1]; const auto& input2 = inputs[input_ind2]; @@ -705,9 +704,9 @@ void contract_two_inputs(HostTensorVector& inputs, // corresponding label are met in neither the output subscript nor the input // subscripts for other Einsum inputs excluding two given inputs auto& input_subscript1 = input_subscripts[input_ind1]; - auto labels1 = ngraph::opset7::Einsum::extract_labels(input_subscript1); + auto labels1 = ov::op::v7::Einsum::extract_labels(input_subscript1); auto& input_subscript2 = input_subscripts[input_ind2]; - auto labels2 = ngraph::opset7::Einsum::extract_labels(input_subscript2); + auto labels2 = ov::op::v7::Einsum::extract_labels(input_subscript2); std::string common_part = ""; std::string separate_part1 = ""; std::string separate_part2 = ""; @@ -756,27 +755,27 @@ void contract_two_inputs(HostTensorVector& inputs, // for further unsqueezing transpose_input(inputs, input_subscripts, convenient_subscript, input_ind2); - auto separate_labels1 = ngraph::opset7::Einsum::extract_labels(separate_part1); - auto separate_labels2 = ngraph::opset7::Einsum::extract_labels(separate_part2); - auto label_to_dim_map1 = compute_label_dim_map(input1->get_partial_shape().rank(), input_subscript1); - auto label_to_dim_map2 = compute_label_dim_map(input2->get_partial_shape().rank(), input_subscript2); + auto separate_labels1 = ov::op::v7::Einsum::extract_labels(separate_part1); + auto separate_labels2 = ov::op::v7::Einsum::extract_labels(separate_part2); + auto label_to_dim_map1 = compute_label_dim_map(input1.get_shape().size(), input_subscript1); + auto label_to_dim_map2 = compute_label_dim_map(input2.get_shape().size(), input_subscript2); // unsqueeze the first operand with new dimensions in the tail // and the number of them is equal to the number of separate labels in the // second subscript - int64_t input_rank1 = input1->get_shape().size(); + int64_t input_rank1 = input1.get_shape().size(); int64_t unsqueeze_dim = input_rank1; std::vector unsqueeze_axis1; std::vector unsqueeze_axis2; for (const auto& sep_label2 : separate_labels2) { - NGRAPH_CHECK(label_to_dim_map2.find(sep_label2) != label_to_dim_map2.end()); + OPENVINO_ASSERT(label_to_dim_map2.find(sep_label2) != label_to_dim_map2.end()); auto label_dims = label_to_dim_map2[sep_label2]; for (size_t dim_ind = 0; dim_ind < label_dims.size(); ++dim_ind) { unsqueeze_axis1.push_back(unsqueeze_dim + static_cast(dim_ind)); } } for (const auto& sep_label1 : separate_labels1) { - NGRAPH_CHECK(label_to_dim_map1.find(sep_label1) != label_to_dim_map1.end()); + OPENVINO_ASSERT(label_to_dim_map1.find(sep_label1) != label_to_dim_map1.end()); auto label_dims = label_to_dim_map1[sep_label1]; for (auto label_dim : label_dims) { unsqueeze_axis2.push_back(label_dim); @@ -784,22 +783,21 @@ void contract_two_inputs(HostTensorVector& inputs, } // unsqueeze input operands for elementwise-multiplication with broadcasting - HostTensorPtr unsqueeze_output1 = unsqueeze_input(input1, unsqueeze_axis1); - HostTensorPtr unsqueeze_output2 = unsqueeze_input(input2, unsqueeze_axis2); + ov::Tensor unsqueeze_output1 = unsqueeze_input(input1, unsqueeze_axis1); + ov::Tensor unsqueeze_output2 = unsqueeze_input(input2, unsqueeze_axis2); // multiply both operands with broadcasting - PartialShape output_shape = unsqueeze_output1->get_partial_shape(); + PartialShape output_shape = unsqueeze_output1.get_shape(); PartialShape::broadcast_merge_into(output_shape, - unsqueeze_output2->get_partial_shape(), - ngraph::op::AutoBroadcastType::NUMPY); - HostTensorPtr mul_output = std::shared_ptr( - new HostTensor(unsqueeze_output1->get_element_type(), output_shape.get_shape())); - reference::multiply(unsqueeze_output1->get_data_ptr(), - unsqueeze_output2->get_data_ptr(), - mul_output->get_data_ptr(), - unsqueeze_output1->get_shape(), - unsqueeze_output2->get_shape(), - ngraph::op::AutoBroadcastType::NUMPY); + unsqueeze_output2.get_shape(), + ov::op::AutoBroadcastType::NUMPY); + auto mul_output = ov::Tensor(unsqueeze_output1.get_element_type(), output_shape.get_shape()); + reference::multiply(unsqueeze_output1.data(), + unsqueeze_output2.data(), + mul_output.data(), + unsqueeze_output1.get_shape(), + unsqueeze_output2.get_shape(), + ov::op::AutoBroadcastType::NUMPY); // update input operand and input subscript for Einsum operation update_operands(inputs, input_subscripts, input_ind1, input_ind2, mul_output, resultant_subscript); @@ -830,11 +828,11 @@ void contract_two_inputs(HostTensorVector& inputs, // [B1, ..., Bm, X1, Y] or [B1, ..., Bm, Y, X2], where B1, ..., Bm are common // dimensions, X1 and X2 are collapsed dimensions for separate labels and Y is // collapsed dimension for reduced labels - Shape input_shape1 = input1->get_shape(); - Shape input_shape2 = input2->get_shape(); + Shape input_shape1 = input1.get_shape(); + Shape input_shape2 = input2.get_shape(); size_t common_dims_begin, common_dims_end, reduced_dims_begin, reduced_dims_end, separate1_dims_begin, separate1_dims_end; - compute_ranges(input1->get_partial_shape().rank(), + compute_ranges(input1.get_shape().size(), input_subscript1, common_labels, sep_labels1, @@ -849,7 +847,7 @@ void contract_two_inputs(HostTensorVector& inputs, size_t common_dims_begin2, common_dims_end2, reduced_dims_begin2, reduced_dims_end2, separate2_dims_begin, separate2_dims_end; - compute_ranges(input2->get_partial_shape().rank(), + compute_ranges(input2.get_shape().size(), input_subscript2, common_labels, sep_labels2, @@ -888,29 +886,28 @@ void contract_two_inputs(HostTensorVector& inputs, reduced_sub_shape, is_separate_first2); - HostTensorPtr matmul_operand1 = reshape_input_for_matmul(input1, - common_sub_shape, - separate1_sub_shape, - reduced_sub_shape_prod, - is_separate_first1); - HostTensorPtr matmul_operand2 = reshape_input_for_matmul(input2, - common_sub_shape, - separate2_sub_shape, - reduced_sub_shape_prod, - is_separate_first2); + ov::Tensor matmul_operand1 = reshape_input_for_matmul(input1, + common_sub_shape, + separate1_sub_shape, + reduced_sub_shape_prod, + is_separate_first1); + ov::Tensor matmul_operand2 = reshape_input_for_matmul(input2, + common_sub_shape, + separate2_sub_shape, + reduced_sub_shape_prod, + is_separate_first2); // step 3. apply MatMul operation for formatted inputs Shape matmul_output_shape = compute_matmul_output_shape(common_sub_shape, separate1_sub_shape, separate2_sub_shape); - HostTensorPtr matmul_output = - std::shared_ptr(new HostTensor(matmul_operand1->get_element_type(), matmul_output_shape)); + auto matmul_output = ov::Tensor(matmul_operand1.get_element_type(), matmul_output_shape); bool transpose_a = (is_separate_first1 ? false : true); bool transpose_b = (is_separate_first2 ? true : false); - reference::matmul(matmul_operand1->get_data_ptr(), - matmul_operand2->get_data_ptr(), - matmul_output->get_data_ptr(), - matmul_operand1->get_shape(), - matmul_operand2->get_shape(), + reference::matmul(matmul_operand1.data(), + matmul_operand2.data(), + matmul_output.data(), + matmul_operand1.get_shape(), + matmul_operand2.get_shape(), matmul_output_shape, transpose_a, transpose_b); @@ -928,38 +925,39 @@ void contract_two_inputs(HostTensorVector& inputs, back_shape.insert(back_shape.end(), separate1_sub_shape.begin(), separate1_sub_shape.end()); back_shape.insert(back_shape.end(), separate2_sub_shape.begin(), separate2_sub_shape.end()); - HostTensorPtr contract_output = - std::shared_ptr(new HostTensor(matmul_output->get_element_type(), back_shape)); - const AxisVector order = ngraph::get_default_order(matmul_output->get_shape()); - reference::reshape(reinterpret_cast(matmul_output->get_data_ptr()), - reinterpret_cast(contract_output->get_data_ptr()), - matmul_output->get_shape(), + auto contract_output = ov::Tensor(matmul_output.get_element_type(), back_shape); + OPENVINO_SUPPRESS_DEPRECATED_START + const AxisVector order = ngraph::get_default_order(matmul_output.get_shape()); + OPENVINO_SUPPRESS_DEPRECATED_END + reference::reshape(reinterpret_cast(matmul_output.data()), + reinterpret_cast(contract_output.data()), + matmul_output.get_shape(), order, back_shape, - matmul_output->get_element_type().size()); + matmul_output.get_element_type().size()); update_operands(inputs, input_subscripts, input_ind1, input_ind2, contract_output, resultant_subscript); } template -void einsum_impl(const HostTensorVector& inputs, const HostTensorVector& outputs, const std::string& equation) { +void einsum_impl(const ov::TensorVector& inputs, ov::TensorVector& outputs, const std::string& equation) { std::vector input_subscripts; std::string output_subscript; - ngraph::opset7::Einsum::parse_equation(equation, input_subscripts, output_subscript); + ov::op::v7::Einsum::parse_equation(equation, input_subscripts, output_subscript); // compute einsum path that is used to contract a pair of operands // in more optimal order size_t num_inputs = inputs.size(); auto einsum_path = compute_einsum_path(num_inputs); - HostTensorVector int_inputs = inputs; + ov::TensorVector int_inputs = inputs; // contract inputs by Einsum until just one is remained for (auto const& inds_pair : einsum_path) { contract_two_inputs(int_inputs, input_subscripts, output_subscript, inds_pair.first, inds_pair.second); } - NGRAPH_CHECK(int_inputs.size() == 1); + OPENVINO_ASSERT(int_inputs.size() == 1); // extract diagonal for the single operand extract_diagonal(int_inputs, input_subscripts, 0); @@ -970,26 +968,23 @@ void einsum_impl(const HostTensorVector& inputs, const HostTensorVector& outputs // transpose dimensions to layout required by the output subscript transpose_input(int_inputs, input_subscripts, output_subscript, 0); - auto output_shape = int_inputs[0]->get_shape(); - const auto& element_type = int_inputs[0]->get_element_type(); - const auto& buf_size = shape_size(output_shape) * element_type.size(); - outputs[0]->write(int_inputs[0]->get_data_ptr(), buf_size); + int_inputs[0].copy_to(outputs[0]); } } // namespace -void einsum(const HostTensorVector& outputs, const HostTensorVector& inputs, const std::string& equation) { - NGRAPH_CHECK(inputs.size() > 0, "Einsum must accept at least one input."); - auto input_type = inputs[0]->get_element_type(); +void einsum(ov::TensorVector& outputs, const ov::TensorVector& inputs, const std::string& equation) { + OPENVINO_ASSERT(inputs.size() > 0, "Einsum must accept at least one input."); + auto input_type = inputs[0].get_element_type(); for (size_t input_ind = 1; input_ind < inputs.size(); ++input_ind) { - NGRAPH_CHECK(inputs[input_ind]->get_element_type() == input_type, "Input types must be the same."); + OPENVINO_ASSERT(inputs[input_ind].get_element_type() == input_type, "Input types must be the same."); } if (input_type == element::Type_t::f32) { einsum_impl(inputs, outputs, equation); } else if (input_type == element::Type_t::i32) { einsum_impl(inputs, outputs, equation); } else { - NGRAPH_CHECK(false, "Unsupported input type for Einsum operation."); + OPENVINO_ASSERT(false, "Unsupported input type for Einsum operation."); } } diff --git a/src/core/reference/src/op/fft.cpp b/src/core/reference/src/op/fft.cpp index 012969f278f8f5..9c88b21fd8d1b8 100644 --- a/src/core/reference/src/op/fft.cpp +++ b/src/core/reference/src/op/fft.cpp @@ -25,7 +25,6 @@ #include #include -#include "ngraph/shape.hpp" #include "openvino/reference/utils/fft_common.hpp" namespace ov { @@ -446,32 +445,30 @@ void fft(const float* input_data, } } -OPENVINO_SUPPRESS_DEPRECATED_START -void fft_postprocessing(const HostTensorVector& outputs, - const ngraph::element::Type output_type, +void fft_postprocessing(ov::TensorVector& outputs, + const ov::element::Type output_type, const std::vector& fft_result) { size_t fft_result_size = fft_result.size(); switch (output_type) { case element::Type_t::bf16: { - bfloat16* result_ptr = outputs[0]->get_data_ptr(); + bfloat16* result_ptr = outputs[0].data(); for (size_t i = 0; i < fft_result_size; ++i) { result_ptr[i] = bfloat16(fft_result[i]); } } break; case element::Type_t::f16: { - float16* result_ptr = outputs[0]->get_data_ptr(); + float16* result_ptr = outputs[0].data(); for (size_t i = 0; i < fft_result_size; ++i) { result_ptr[i] = float16(fft_result[i]); } } break; case element::Type_t::f32: { - float* result_ptr = outputs[0]->get_data_ptr(); + float* result_ptr = outputs[0].data(); memcpy(result_ptr, fft_result.data(), fft_result_size * sizeof(float)); } break; default:; } } -OPENVINO_SUPPRESS_DEPRECATED_END } // namespace reference } // namespace ov diff --git a/src/core/reference/src/op/function.cpp b/src/core/reference/src/op/function.cpp index cfd370e38a5c80..a0bedfa1241728 100644 --- a/src/core/reference/src/op/function.cpp +++ b/src/core/reference/src/op/function.cpp @@ -11,18 +11,21 @@ #include "ngraph/runtime/tensor.hpp" #include "openvino/core/deprecated.hpp" #include "openvino/reference/concat.hpp" +#include "shape_util.hpp" namespace ov { namespace reference { -OPENVINO_SUPPRESS_DEPRECATED_START -void function(const std::shared_ptr& function, const HostTensorVector& inputs, HostTensorVector& outputs) { +void function(const std::shared_ptr& function, const ov::TensorVector& inputs, ov::TensorVector& outputs) { const auto& results = function->get_results(); outputs.reserve(results.size()); for (size_t i = 0; i < results.size(); ++i) { - outputs.push_back(std::make_shared()); + OPENVINO_SUPPRESS_DEPRECATED_START + auto shape = results[i]->get_output_partial_shape(0).is_static() ? results[i]->get_output_shape(0) + : ov::util::make_dynamic_shape(); + OPENVINO_SUPPRESS_DEPRECATED_END + outputs.push_back(ov::Tensor(results[i]->get_element_type(), shape)); } function->evaluate(outputs, inputs); } -OPENVINO_SUPPRESS_DEPRECATED_END } // namespace reference } // namespace ov diff --git a/src/core/reference/src/op/if.cpp b/src/core/reference/src/op/if.cpp index 3fe42b61719809..25a04a7057f106 100644 --- a/src/core/reference/src/op/if.cpp +++ b/src/core/reference/src/op/if.cpp @@ -7,20 +7,19 @@ #include "ngraph/op/if.hpp" #include "openvino/reference/function.hpp" -OPENVINO_SUPPRESS_DEPRECATED_START namespace ov { namespace reference { void if_reference(const std::vector>& bodies, const std::vector& out_descs, const std::vector& input_descs, - const HostTensorVector& out, - const HostTensorVector& args) { + ov::TensorVector& out, + const ov::TensorVector& args) { NGRAPH_CHECK(args.size() > 0, "If operation must have input condition value"); - auto condition_value = args[0]->get_data_ptr()[0]; + auto condition_value = args[0].data()[0]; auto branch_index = (condition_value) ? op::v8::If::THEN_BODY_INDEX : op::v8::If::ELSE_BODY_INDEX; - HostTensorVector inputs_to_body; - HostTensorVector outs_from_body; + ov::TensorVector inputs_to_body; + ov::TensorVector outs_from_body; inputs_to_body.resize(input_descs[branch_index].size()); auto inputs_size = args.size(); auto output_size = out.size(); @@ -36,8 +35,8 @@ void if_reference(const std::vector>& bodies, "Incorrect associating! If has not output with id ", out_descr->m_output_index); auto res = outs_from_body[out_descr->m_body_value_index]; - out[out_descr->m_output_index]->set_shape(res->get_shape()); - out[out_descr->m_output_index]->write(res->get_data_ptr(), res->get_size_in_bytes()); + out[out_descr->m_output_index].set_shape(res.get_shape()); + res.copy_to(out[out_descr->m_output_index]); } } } // namespace reference diff --git a/src/core/reference/src/op/loop.cpp b/src/core/reference/src/op/loop.cpp index 0a1ee146664a74..0582f18f438e59 100644 --- a/src/core/reference/src/op/loop.cpp +++ b/src/core/reference/src/op/loop.cpp @@ -4,12 +4,13 @@ #include "openvino/reference/loop.hpp" +#include + #include "openvino/op/tensor_iterator.hpp" #include "openvino/reference/concat.hpp" #include "openvino/reference/function.hpp" #include "openvino/reference/split.hpp" - -OPENVINO_SUPPRESS_DEPRECATED_START +#include "openvino/runtime/tensor.hpp" namespace ov { namespace reference { @@ -17,8 +18,8 @@ void loop(const std::shared_ptr& func, const op::util::OutputDescriptionVector& out_descs, const op::util::InputDescriptionVector& input_descs, const op::v5::Loop::SpecialBodyPorts& special_ports, - const HostTensorVector& out, - const HostTensorVector& args) { + ov::TensorVector& out, + const ov::TensorVector& args) { const auto& cur_iter_idx = special_ports.current_iteration_input_idx; auto val = std::find_if(input_descs.begin(), input_descs.end(), @@ -32,9 +33,9 @@ void loop(const std::shared_ptr& func, // should allocate input_descs.size() + 1 inputs and set default value (0) for // current_iteration input. int64_t inputs_count = input_descs.size() + (cur_iter_idx >= 0 ? !cur_iter_initial_value_exist : 0); - HostTensorVector inputs_to_body; + ov::TensorVector inputs_to_body; for (int64_t i = 0; i < inputs_count; ++i) - inputs_to_body.push_back(std::make_shared(element::dynamic, PartialShape::dynamic())); + inputs_to_body.push_back(ov::Tensor()); if (cur_iter_idx >= 0 && !cur_iter_initial_value_exist) { const auto& cur_iter = func->get_parameters().at(cur_iter_idx); if (cur_iter->get_partial_shape().is_dynamic()) { @@ -45,8 +46,10 @@ void loop(const std::shared_ptr& func, auto init = std::make_shared(func->get_parameters().at(cur_iter_idx)->get_element_type(), func->get_parameters().at(cur_iter_idx)->get_shape(), 0); - inputs_to_body.at(cur_iter_idx)->initialize(init); - // reinterpret_cast(inputs_to_body.at(cur_iter_idx).data())[0] = 0; + ov::Tensor in_tensor(func->get_parameters().at(cur_iter_idx)->get_element_type(), + func->get_parameters().at(cur_iter_idx)->get_shape()); + std::memset(in_tensor.data(), 0, in_tensor.get_byte_size()); + inputs_to_body.at(cur_iter_idx) = in_tensor; } // Port map processing: inputs and back edges @@ -65,19 +68,19 @@ void loop(const std::shared_ptr& func, // Get TripCount int64_t trip_count = 0; - if (args[0]->get_element_type() == ngraph::element::i32) { - auto* trip_count_p = args[0]->get_data_ptr(); + if (args[0].get_element_type() == ov::element::i32) { + auto* trip_count_p = args[0].data(); trip_count = trip_count_p[0]; - } else if (args[0]->get_element_type() == ngraph::element::i64) { - auto* trip_count_p = args[0]->get_data_ptr(); + } else if (args[0].get_element_type() == ov::element::i64) { + auto* trip_count_p = args[0].data(); trip_count = trip_count_p[0]; } else { - NGRAPH_CHECK(false, "Unsupported element type for trip_count input. Expected int32 or int64."); + OPENVINO_THROW("Unsupported element type for trip_count input. Expected int32 or int64."); } - NGRAPH_CHECK(trip_count != 0, "Zero count of iteration not supported"); + OPENVINO_ASSERT(trip_count != 0, "Zero count of iteration not supported"); // Loop iterations - auto exec_condition = args[1]->get_data_ptr(); + auto exec_condition = args[1].data(); if (exec_condition[0]) { // Find all ConcatOutputDescription std::vector> concat_outputs; @@ -89,28 +92,28 @@ void loop(const std::shared_ptr& func, // Slicing std::vector> slice_inputs; - std::vector sliced_values; + std::vector sliced_values; int slice_in_idx = 0; for (const auto& desc : input_descs) { if (const auto& slice_desc = std::dynamic_pointer_cast(desc)) { - const auto el_size = args[slice_desc->m_input_index]->get_element_type().size(); + const auto el_size = args[slice_desc->m_input_index].get_element_type().size(); slice_inputs.push_back(slice_desc); - auto shape = args[slice_desc->m_input_index]->get_shape(); + auto shape = args[slice_desc->m_input_index].get_shape(); uint64_t num_iterations = shape.at(slice_desc->m_axis); shape.at(slice_desc->m_axis) = 1; - sliced_values.emplace_back(HostTensorVector()); + sliced_values.emplace_back(ov::TensorVector()); for (uint64_t i = 0; i < num_iterations; ++i) { sliced_values.back().emplace_back( - std::make_shared(args[slice_desc->m_input_index]->get_element_type(), shape)); + ov::Tensor(args[slice_desc->m_input_index].get_element_type(), shape)); } std::vector pointers_to_data(num_iterations); for (size_t j = 0; j < pointers_to_data.size(); ++j) { pointers_to_data[slice_desc->m_stride > 0 ? j : (pointers_to_data.size() - j - 1)] = - sliced_values[slice_in_idx][j]->get_data_ptr(); + static_cast(sliced_values[slice_in_idx][j].data()); } - reference::split(args[slice_desc->m_input_index]->get_data_ptr(), - args[slice_desc->m_input_index]->get_shape(), + reference::split(static_cast(args[slice_desc->m_input_index].data()), + args[slice_desc->m_input_index].get_shape(), el_size, slice_desc->m_axis, num_iterations, @@ -120,8 +123,8 @@ void loop(const std::shared_ptr& func, } // Allocate vectors for store output values - std::vector values_to_concat(concat_outputs.size()); - HostTensorVector body_outputs; + std::vector values_to_concat(concat_outputs.size()); + ov::TensorVector body_outputs; // Negative value means infinity count of iterations trip_count = trip_count >= 0 ? trip_count : std::numeric_limits::max(); @@ -145,7 +148,7 @@ void loop(const std::shared_ptr& func, bool body_exec_condition(false); if (static_cast(body_outputs.size()) > special_ports.body_condition_output_idx && body_outputs[special_ports.body_condition_output_idx]) - body_outputs[special_ports.body_condition_output_idx]->read(&body_exec_condition, sizeof(bool)); + body_exec_condition = body_outputs[special_ports.body_condition_output_idx].data()[0]; if (!body_exec_condition) break; @@ -155,21 +158,24 @@ void loop(const std::shared_ptr& func, const auto& cur_iter_param = func->get_parameters().at(cur_iter_idx); int64_t iter_num = cur_iter + 1; if (cur_iter_param->get_element_type() == element::i64) - inputs_to_body.at(cur_iter_idx)->write(&iter_num, cur_iter_param->get_element_type().size()); + std::memcpy(inputs_to_body.at(cur_iter_idx).data(), + &iter_num, + cur_iter_param->get_element_type().size()); else if (cur_iter_param->get_element_type() == element::i32) { int32_t iter_num_i32 = static_cast(iter_num); - inputs_to_body.at(cur_iter_idx)->write(&iter_num_i32, cur_iter_param->get_element_type().size()); + std::memcpy(inputs_to_body.at(cur_iter_idx).data(), + &iter_num_i32, + cur_iter_param->get_element_type().size()); } else - NGRAPH_CHECK(false, - "Unsupported element type for current iteration " - "input. Expected int32 or int64."); + OPENVINO_THROW("Unsupported element type for current iteration " + "input. Expected int32 or int64."); } // Back-edge processing bool need_validate = false; for (auto& back_edge : back_edges) { - const auto& input_shape = inputs_to_body[back_edge.param_idx]->get_shape(); - const auto& result_shape = body_outputs[back_edge.result_idx]->get_shape(); + const auto& input_shape = inputs_to_body[back_edge.param_idx].get_shape(); + const auto& result_shape = body_outputs[back_edge.result_idx].get_shape(); // when output shape does not equal to input shape in a back-edge, such as // Parameter(out:1)->| // |->Concat(out:2)->Result(out:2) @@ -190,8 +196,8 @@ void loop(const std::shared_ptr& func, for (const auto& desc : out_descs) { if (const auto& body_desc = std::dynamic_pointer_cast(desc)) { const auto& res = body_outputs[body_desc->m_body_value_index]; - out[body_desc->m_output_index]->set_shape(res->get_shape()); - out[body_desc->m_output_index]->write(res->get_data_ptr(), res->get_size_in_bytes()); + out[body_desc->m_output_index].set_shape(res.get_shape()); + res.copy_to(out[body_desc->m_output_index]); } } @@ -201,21 +207,21 @@ void loop(const std::shared_ptr& func, auto shape = func->get_results().at(concat_desc->m_body_value_index)->get_shape(); std::vector shapes_to_concat(values_to_concat[i].size(), shape); shape.at(concat_desc->m_axis) = values_to_concat[i].size(); - out[concat_desc->m_output_index]->set_shape(shape); + out[concat_desc->m_output_index].set_shape(shape); std::vector pointers_on_values; pointers_on_values.reserve(values_to_concat[i].size()); for (const auto& vec : values_to_concat[i]) { - pointers_on_values.push_back(vec->get_data_ptr()); + pointers_on_values.push_back(static_cast(vec.data())); } reference::concat(pointers_on_values, - out[concat_desc->m_output_index]->get_data_ptr(), + static_cast(out[concat_desc->m_output_index].data()), shapes_to_concat, shape, concat_desc->m_axis, - out[concat_desc->m_output_index]->get_element_type().size()); + out[concat_desc->m_output_index].get_element_type().size()); } } else { - NGRAPH_CHECK(false, "ExecutionCondition is false. Zero count of iteration not supported."); + OPENVINO_THROW("ExecutionCondition is false. Zero count of iteration not supported."); } } } // namespace reference diff --git a/src/core/reference/src/op/non_max_suppression.cpp b/src/core/reference/src/op/non_max_suppression.cpp index e0032c3f5b4ecb..1dc7373bc17654 100644 --- a/src/core/reference/src/op/non_max_suppression.cpp +++ b/src/core/reference/src/op/non_max_suppression.cpp @@ -2,15 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // -#include "ngraph/op/non_max_suppression.hpp" +#include "openvino/op/non_max_suppression.hpp" #include #include #include #include -#include "ngraph/shape.hpp" #include "openvino/reference/non_max_suppression.hpp" +#include "openvino/runtime/tensor.hpp" namespace ov { namespace reference { @@ -366,35 +366,33 @@ void non_max_suppression(const float* boxes_data, } } -OPENVINO_SUPPRESS_DEPRECATED_START -void nms_postprocessing(const HostTensorVector& outputs, - const ngraph::element::Type output_type, +void nms_postprocessing(ov::TensorVector& outputs, + const ov::element::Type output_type, const std::vector& selected_indices, const std::vector& selected_scores, int64_t valid_outputs, - const ngraph::element::Type selected_scores_type) { - outputs[0]->set_element_type(output_type); - outputs[0]->set_shape(Shape{static_cast(valid_outputs), 3}); + const ov::element::Type selected_scores_type) { + // outputs[0].set_element_type(output_type); + outputs[0].set_shape(Shape{static_cast(valid_outputs), 3}); size_t num_of_outputs = outputs.size(); if (num_of_outputs >= 2) { - outputs[1]->set_element_type(selected_scores_type); - outputs[1]->set_shape(Shape{static_cast(valid_outputs), 3}); + // outputs[1].set_element_type(selected_scores_type); + outputs[1].set_shape(Shape{static_cast(valid_outputs), 3}); } if (num_of_outputs >= 3) { - outputs[2]->set_element_type(output_type); - outputs[2]->set_shape(Shape{1}); + outputs[2].set_shape(Shape{1}); } size_t selected_size = valid_outputs * 3; - if (output_type == ngraph::element::i64) { - int64_t* indices_ptr = outputs[0]->get_data_ptr(); + if (output_type == ov::element::i64) { + int64_t* indices_ptr = outputs[0].data(); memcpy(indices_ptr, selected_indices.data(), selected_size * sizeof(int64_t)); } else { - int32_t* indices_ptr = outputs[0]->get_data_ptr(); + int32_t* indices_ptr = outputs[0].data(); for (size_t i = 0; i < selected_size; ++i) { indices_ptr[i] = static_cast(selected_indices[i]); } @@ -408,19 +406,19 @@ void nms_postprocessing(const HostTensorVector& outputs, switch (selected_scores_type) { case element::Type_t::bf16: { - bfloat16* scores_ptr = outputs[1]->get_data_ptr(); + bfloat16* scores_ptr = outputs[1].data(); for (size_t i = 0; i < selected_scores_size; ++i) { scores_ptr[i] = bfloat16(selected_scores[i]); } } break; case element::Type_t::f16: { - float16* scores_ptr = outputs[1]->get_data_ptr(); + float16* scores_ptr = outputs[1].data(); for (size_t i = 0; i < selected_scores_size; ++i) { scores_ptr[i] = float16(selected_scores[i]); } } break; case element::Type_t::f32: { - float* scores_ptr = outputs[1]->get_data_ptr(); + float* scores_ptr = outputs[1].data(); memcpy(scores_ptr, selected_scores.data(), selected_size * sizeof(float)); } break; default:; @@ -430,21 +428,21 @@ void nms_postprocessing(const HostTensorVector& outputs, return; } - if (output_type == ngraph::element::i64) { - int64_t* valid_outputs_ptr = outputs[2]->get_data_ptr(); + if (output_type == ov::element::i64) { + int64_t* valid_outputs_ptr = outputs[2].data(); *valid_outputs_ptr = valid_outputs; } else { - int32_t* valid_outputs_ptr = outputs[2]->get_data_ptr(); + int32_t* valid_outputs_ptr = outputs[2].data(); *valid_outputs_ptr = static_cast(valid_outputs); } } -void nms5_postprocessing(const HostTensorVector& outputs, - const ngraph::element::Type output_type, +void nms5_postprocessing(ov::TensorVector& outputs, + const ov::element::Type output_type, const std::vector& selected_indices, const std::vector& selected_scores, int64_t valid_outputs, - const ngraph::element::Type selected_scores_type) { + const ov::element::Type selected_scores_type) { nms_postprocessing(outputs, output_type, selected_indices, selected_scores, valid_outputs, selected_scores_type); } } // namespace reference diff --git a/src/core/reference/src/op/tensor_iterator.cpp b/src/core/reference/src/op/tensor_iterator.cpp index 26646536372c98..6ac83923f5b9a8 100644 --- a/src/core/reference/src/op/tensor_iterator.cpp +++ b/src/core/reference/src/op/tensor_iterator.cpp @@ -4,23 +4,25 @@ #include "openvino/reference/tensor_iterator.hpp" +#include "openvino/op/loop.hpp" +#include "openvino/op/tensor_iterator.hpp" #include "openvino/reference/concat.hpp" #include "openvino/reference/function.hpp" #include "openvino/reference/split.hpp" +#include "openvino/runtime/tensor.hpp" -OPENVINO_SUPPRESS_DEPRECATED_START namespace ov { namespace reference { void tensor_iterator(uint64_t num_iterations, const std::shared_ptr& func, const op::util::OutputDescriptionVector& out_descs, const op::util::InputDescriptionVector& input_descs, - const HostTensorVector& out, - const HostTensorVector& args, + ov::TensorVector& out, + const ov::TensorVector& args, const custom_evaluate_function& evaluate) { - HostTensorVector inputs_to_body; + ov::TensorVector inputs_to_body; for (size_t i = 0; i < input_descs.size(); ++i) - inputs_to_body.push_back(std::make_shared(element::dynamic, PartialShape::dynamic())); + inputs_to_body.push_back(ov::Tensor()); // Port map processing: inputs and back edges struct BackEdge { @@ -30,12 +32,12 @@ void tensor_iterator(uint64_t num_iterations, std::vector back_edges; for (const auto& desc : input_descs) { inputs_to_body[desc->m_body_parameter_index] = args[desc->m_input_index]; - if (const auto& merged_desc = std::dynamic_pointer_cast(desc)) { + if (const auto& merged_desc = std::dynamic_pointer_cast(desc)) { back_edges.push_back({merged_desc->m_body_parameter_index, merged_desc->m_body_value_index}); } } // Find all ConcatOutputDescription - std::vector> concat_outputs; + std::vector> concat_outputs; for (const auto& desc : out_descs) { if (const auto& concat_desc = std::dynamic_pointer_cast(desc)) { @@ -45,26 +47,26 @@ void tensor_iterator(uint64_t num_iterations, // Slicing std::vector> slice_inputs; - std::vector sliced_values; + std::vector sliced_values; int slice_in_idx = 0; for (const auto& desc : input_descs) { if (const auto& slice_desc = std::dynamic_pointer_cast(desc)) { - const auto el_size = args[slice_desc->m_input_index]->get_element_type().size(); + const auto el_size = args[slice_desc->m_input_index].get_element_type().size(); slice_inputs.push_back(slice_desc); - auto shape = args[slice_desc->m_input_index]->get_shape(); + auto shape = args[slice_desc->m_input_index].get_shape(); shape.at(slice_desc->m_axis) = 1; - sliced_values.emplace_back(HostTensorVector()); + sliced_values.emplace_back(ov::TensorVector()); for (uint64_t i = 0; i < num_iterations; ++i) { sliced_values.back().emplace_back( - std::make_shared(args[slice_desc->m_input_index]->get_element_type(), shape)); + ov::Tensor(args[slice_desc->m_input_index].get_element_type(), shape)); } std::vector pointers_to_data(num_iterations); for (size_t j = 0; j < pointers_to_data.size(); ++j) { pointers_to_data[slice_desc->m_stride > 0 ? j : (pointers_to_data.size() - j - 1)] = - sliced_values[slice_in_idx][j]->get_data_ptr(); + static_cast(sliced_values[slice_in_idx][j].data()); } - reference::split(args[slice_desc->m_input_index]->get_data_ptr(), - args[slice_desc->m_input_index]->get_shape(), + reference::split(static_cast(args[slice_desc->m_input_index].data()), + args[slice_desc->m_input_index].get_shape(), el_size, slice_desc->m_axis, num_iterations, @@ -74,8 +76,8 @@ void tensor_iterator(uint64_t num_iterations, } // Allocate vectors for store output values - std::vector values_to_concat(concat_outputs.size()); - HostTensorVector body_outputs; + std::vector values_to_concat(concat_outputs.size()); + ov::TensorVector body_outputs; for (uint64_t cur_iter = 0; cur_iter < num_iterations; ++cur_iter) { // Copy new values for sliced inputs @@ -107,8 +109,8 @@ void tensor_iterator(uint64_t num_iterations, if (const auto& body_desc = std::dynamic_pointer_cast(desc)) { // Copy output values from the last iteration const auto& res = body_outputs[body_desc->m_body_value_index]; - out[body_desc->m_output_index]->set_shape(res->get_shape()); - out[body_desc->m_output_index]->write(res->get_data_ptr(), res->get_size_in_bytes()); + out[body_desc->m_output_index].set_shape(res.get_shape()); + res.copy_to(out[body_desc->m_output_index]); } } @@ -120,20 +122,20 @@ void tensor_iterator(uint64_t num_iterations, auto shape = func->get_results().at(concat_desc->m_body_value_index)->get_shape(); std::vector shapes_to_concat(values_to_concat[i].size(), shape); shape.at(concat_desc->m_axis) = values_to_concat[i].size(); - out[concat_desc->m_output_index]->set_shape(shape); + out[concat_desc->m_output_index].set_shape(shape); std::vector pointers_on_values; pointers_on_values.reserve(values_to_concat[i].size()); for (size_t j = 0; j < values_to_concat[i].size(); ++j) { size_t idx = concat_desc->m_stride > 0 ? j : (values_to_concat[i].size() - j - 1); if (values_to_concat[i].size() > idx && values_to_concat[i][idx]) - pointers_on_values.push_back(values_to_concat[i][idx]->get_data_ptr()); + pointers_on_values.push_back(static_cast(values_to_concat[i][idx].data())); } reference::concat(pointers_on_values, - out[concat_desc->m_output_index]->get_data_ptr(), + static_cast(out[concat_desc->m_output_index].data()), shapes_to_concat, shape, concat_desc->m_axis, - out[concat_desc->m_output_index]->get_element_type().size()); + out[concat_desc->m_output_index].get_element_type().size()); } } } // namespace reference diff --git a/src/core/reference/src/op/tile.cpp b/src/core/reference/src/op/tile.cpp index b027613d980623..f88e56392a26a8 100644 --- a/src/core/reference/src/op/tile.cpp +++ b/src/core/reference/src/op/tile.cpp @@ -9,8 +9,6 @@ #include #include -#include "ngraph/check.hpp" - using namespace ov; namespace { diff --git a/src/core/src/node.cpp b/src/core/src/node.cpp index 10ebc91b976d92..1cce81d2f9fb7d 100644 --- a/src/core/src/node.cpp +++ b/src/core/src/node.cpp @@ -740,7 +740,14 @@ inline void update_output_tensors(ov::TensorVector& output_values, const ngraph: if (!tensor && outputs[i]->get_partial_shape().is_static()) { tensor = ov::Tensor(outputs[i]->get_element_type(), outputs[i]->get_shape()); } - output_values[i] = tensor; + if (output_values[i]) { + // Copy value to the original tensor + output_values[i].set_shape(tensor.get_shape()); + tensor.copy_to(output_values[i]); + } else { + // Tensor is not initialized, so create the new tensor + output_values[i] = tensor; + } } } } diff --git a/src/core/src/op/loop.cpp b/src/core/src/op/loop.cpp index 419e564b19f35e..ef623af65814b6 100644 --- a/src/core/src/op/loop.cpp +++ b/src/core/src/op/loop.cpp @@ -12,6 +12,7 @@ #include "ngraph/graph_util.hpp" #include "ngraph/opsets/opset5.hpp" #include "openvino/reference/loop.hpp" +#include "openvino/runtime/tensor.hpp" using namespace std; using namespace ngraph; @@ -347,8 +348,7 @@ Output op::v5::Loop::get_concatenated_slices(const Output& value, return SubGraphOp::get_concatenated_slices(value, start, stride, part_size, end, axis); } -OPENVINO_SUPPRESS_DEPRECATED_START -bool op::v5::Loop::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const { +bool op::v5::Loop::evaluate(ov::TensorVector& outputs, const ov::TensorVector& inputs) const { OV_OP_SCOPE(v5_Loop_evaluate); ov::reference::loop(m_bodies[0], m_output_descriptions[0], @@ -358,7 +358,6 @@ bool op::v5::Loop::evaluate(const HostTensorVector& outputs, const HostTensorVec inputs); return true; } -OPENVINO_SUPPRESS_DEPRECATED_END bool op::v5::Loop::has_evaluate() const { OV_OP_SCOPE(v5_Loop_has_evaluate); diff --git a/src/core/src/runtime/host_tensor.cpp b/src/core/src/runtime/host_tensor.cpp index 712b6df02203c0..28ad2526b82529 100644 --- a/src/core/src/runtime/host_tensor.cpp +++ b/src/core/src/runtime/host_tensor.cpp @@ -139,11 +139,13 @@ void runtime::HostTensor::set_element_type(const element::Type& element_type) { } void runtime::HostTensor::set_shape(const Shape& shape) { - NGRAPH_CHECK(PartialShape(shape).refines(get_partial_shape()), - "Allocation shape ", - shape, - " must be compatible with the partial shape: ", - get_partial_shape()); + NGRAPH_CHECK( + PartialShape(shape).refines(get_partial_shape()) || + (m_descriptor->m_partial_shape.is_static() && m_descriptor->m_partial_shape.to_shape() == ov::Shape{0}), + "Allocation shape ", + shape, + " must be compatible with the partial shape: ", + get_partial_shape()); m_descriptor->m_partial_shape = shape; m_descriptor->m_shape_changed = true; } diff --git a/src/inference/src/dev/make_tensor.cpp b/src/inference/src/dev/make_tensor.cpp index ddd0ea293966c0..94ddf723eabc4c 100644 --- a/src/inference/src/dev/make_tensor.cpp +++ b/src/inference/src/dev/make_tensor.cpp @@ -188,6 +188,8 @@ class AllocatedTensor : public ViewTensor { } void set_shape(ov::Shape new_shape) override { + if (m_shape == new_shape) + return; auto old_byte_size = get_byte_size(); m_shape = std::move(new_shape); if (get_byte_size() > old_byte_size) { diff --git a/src/plugins/template/backend/backend.cpp b/src/plugins/template/backend/backend.cpp index 7605b8b5fb110a..a8153bfca2ee7f 100644 --- a/src/plugins/template/backend/backend.cpp +++ b/src/plugins/template/backend/backend.cpp @@ -7,8 +7,6 @@ #include #include "int_backend.hpp" -#include "ngraph/file_util.hpp" -#include "ngraph/util.hpp" #include "openvino/core/except.hpp" #include "openvino/util/file_util.hpp" diff --git a/src/plugins/template/backend/evaluates_map.cpp b/src/plugins/template/backend/evaluates_map.cpp index 2bb18904e6a45b..f88efae92d0f35 100644 --- a/src/plugins/template/backend/evaluates_map.cpp +++ b/src/plugins/template/backend/evaluates_map.cpp @@ -6,26 +6,25 @@ #include "ops/ops_evaluates.hpp" -OPENVINO_SUPPRESS_DEPRECATED_START -std::vector get_floats(const std::shared_ptr& input, const ngraph::Shape& shape) { - size_t input_size = ngraph::shape_size(shape); +std::vector get_floats(const ov::Tensor& input, const ov::Shape& shape) { + size_t input_size = ov::shape_size(shape); std::vector result(input_size); - switch (input->get_element_type()) { - case ngraph::element::Type_t::bf16: { - ngraph::bfloat16* p = input->get_data_ptr(); + switch (input.get_element_type()) { + case ov::element::bf16: { + ov::bfloat16* p = input.data(); for (size_t i = 0; i < input_size; ++i) { result[i] = float(p[i]); } } break; - case ngraph::element::Type_t::f16: { - ngraph::float16* p = input->get_data_ptr(); + case ov::element::f16: { + ov::float16* p = input.data(); for (size_t i = 0; i < input_size; ++i) { result[i] = float(p[i]); } } break; - case ngraph::element::Type_t::f32: { - float* p = input->get_data_ptr(); + case ov::element::f32: { + float* p = input.data(); memcpy(result.data(), p, input_size * sizeof(float)); } break; default: @@ -36,55 +35,55 @@ std::vector get_floats(const std::shared_ptr& input, return result; } -std::vector get_integers(const std::shared_ptr& input, const ngraph::Shape& shape) { - size_t input_size = ngraph::shape_size(shape); +std::vector get_integers(const ov::Tensor& input, const ov::Shape& shape) { + size_t input_size = ov::shape_size(shape); std::vector result(input_size); - switch (input->get_element_type()) { - case ngraph::element::Type_t::i8: { - auto p = input->get_data_ptr(); + switch (input.get_element_type()) { + case ov::element::Type_t::i8: { + auto p = input.data(); for (size_t i = 0; i < input_size; ++i) { result[i] = int64_t(p[i]); } } break; - case ngraph::element::Type_t::i16: { - auto p = input->get_data_ptr(); + case ov::element::Type_t::i16: { + auto p = input.data(); for (size_t i = 0; i < input_size; ++i) { result[i] = int64_t(p[i]); } } break; - case ngraph::element::Type_t::i32: { - auto p = input->get_data_ptr(); + case ov::element::Type_t::i32: { + auto p = input.data(); for (size_t i = 0; i < input_size; ++i) { result[i] = int64_t(p[i]); } } break; - case ngraph::element::Type_t::i64: { - auto p = input->get_data_ptr(); + case ov::element::Type_t::i64: { + auto p = input.data(); for (size_t i = 0; i < input_size; ++i) { result[i] = int64_t(p[i]); } } break; - case ngraph::element::Type_t::u8: { - auto p = input->get_data_ptr(); + case ov::element::Type_t::u8: { + auto p = input.data(); for (size_t i = 0; i < input_size; ++i) { result[i] = int64_t(p[i]); } } break; - case ngraph::element::Type_t::u16: { - auto p = input->get_data_ptr(); + case ov::element::Type_t::u16: { + auto p = input.data(); for (size_t i = 0; i < input_size; ++i) { result[i] = int64_t(p[i]); } } break; - case ngraph::element::Type_t::u32: { - auto p = input->get_data_ptr(); + case ov::element::Type_t::u32: { + auto p = input.data(); for (size_t i = 0; i < input_size; ++i) { result[i] = int64_t(p[i]); } } break; - case ngraph::element::Type_t::u64: { - auto p = input->get_data_ptr(); + case ov::element::Type_t::u64: { + auto p = input.data(); for (size_t i = 0; i < input_size; ++i) { result[i] = int64_t(p[i]); } @@ -97,16 +96,15 @@ std::vector get_integers(const std::shared_ptr& inp return result; } -std::vector get_signal_size(const std::vector>& inputs, - size_t num_of_axes) { +std::vector get_signal_size(const ov::TensorVector& inputs, size_t num_of_axes) { if (inputs.size() == 3) { - return get_integers(inputs[2], inputs[2]->get_shape()); + return get_integers(inputs[2], inputs[2].get_shape()); } return std::vector(num_of_axes, static_cast(-1)); } -ngraph::runtime::interpreter::EvaluatorsMap& ngraph::runtime::interpreter::get_evaluators_map() { +ov::runtime::interpreter::EvaluatorsMap& ov::runtime::interpreter::get_evaluators_map() { static runtime::interpreter::EvaluatorsMap evaluatorsMap{ #define _OPENVINO_OP_REG(NAME, NAMESPACE) {NAMESPACE::NAME::get_type_info_static(), evaluate_node}, diff --git a/src/plugins/template/backend/evaluates_map.hpp b/src/plugins/template/backend/evaluates_map.hpp index d141a3896202ea..7fb249229e3365 100644 --- a/src/plugins/template/backend/evaluates_map.hpp +++ b/src/plugins/template/backend/evaluates_map.hpp @@ -3,23 +3,27 @@ // #pragma once -#include "ngraph/node.hpp" -std::vector get_floats(const std::shared_ptr& input, const ngraph::Shape& shape); +#include -std::vector get_integers(const std::shared_ptr& input, const ngraph::Shape& shape); +#include "openvino/core/node.hpp" +#include "openvino/core/shape.hpp" +#include "openvino/runtime/tensor.hpp" -std::vector get_signal_size(const std::vector>& inputs, - size_t num_of_axes); +std::vector get_floats(const ov::Tensor& input, const ov::Shape& shape); -namespace ngraph { +std::vector get_integers(const ov::Tensor& input, const ov::Shape& shape); + +std::vector get_signal_size(const ov::TensorVector& inputs, size_t num_of_axes); + +namespace ov { namespace runtime { namespace interpreter { -using EvaluatorsMap = std::map& node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs)>>; +using EvaluatorsMap = std::map< + ov::NodeTypeInfo, + std::function< + bool(const std::shared_ptr& node, ov::TensorVector& outputs, const ov::TensorVector& inputs)>>; EvaluatorsMap& get_evaluators_map(); } // namespace interpreter } // namespace runtime -} // namespace ngraph +} // namespace ov diff --git a/src/plugins/template/backend/executable.hpp b/src/plugins/template/backend/executable.hpp index 4e9e00cab52642..2259cc5192a4c0 100644 --- a/src/plugins/template/backend/executable.hpp +++ b/src/plugins/template/backend/executable.hpp @@ -52,11 +52,11 @@ class Executable { void validate(const std::vector& outputs, const std::vector& inputs); /// \brief Query the input Parameters - /// \returns an ngraph::op::ParameterVector of all input parameters + /// \returns an ov::op::ParameterVector of all input parameters const ov::ParameterVector& get_parameters() const; /// \brief Query the output Results - /// \returns an ngraph::ResultVector of all input parameters + /// \returns an ov::ResultVector of all input parameters const ov::ResultVector& get_results() const; /// \brief Query the internal model diff --git a/src/plugins/template/backend/int_executable.cpp b/src/plugins/template/backend/int_executable.cpp index f7a06f407cb42c..f866d77b6528b6 100644 --- a/src/plugins/template/backend/int_executable.cpp +++ b/src/plugins/template/backend/int_executable.cpp @@ -6,72 +6,15 @@ #include #include -#include #include "evaluates_map.hpp" #include "openvino/core/except.hpp" #include "openvino/op/parameter.hpp" #include "openvino/op/result.hpp" #include "openvino/op/util/op_types.hpp" +#include "openvino/op/util/variable_context.hpp" #include "perf_counter.hpp" -#include "tensor_conversion_util.hpp" - -OPENVINO_SUPPRESS_DEPRECATED_START -namespace { - -class DynamicTensor : public ngraph::runtime::HostTensor { -private: - ov::Tensor tensor; - -public: - DynamicTensor(const ov::element::Type& type) : ngraph::runtime::HostTensor(type, ov::PartialShape::dynamic()) {} - - ov::Tensor get_tensor() { - return tensor; - } - -protected: - void allocate_buffer() override { - OPENVINO_ASSERT(get_partial_shape().is_static(), - "Attempt to allocate buffer for tensor with partial shape: ", - get_partial_shape()); - OPENVINO_ASSERT(get_element_type().is_static(), - "Attempt to allocate buffer for tensor with dynamic type: ", - get_element_type()); - m_buffer_size = m_descriptor->size(); - tensor = ov::Tensor(get_element_type(), get_partial_shape().get_shape()); - m_memory_pointer = tensor.data(); - m_aligned_buffer_pool = m_memory_pointer; - } -}; - -inline ngraph::HostTensorPtr make_tmp_host_tensor(const ov::Tensor& t) { - if (!t) { - return std::make_shared(ov::element::dynamic); - } else if (t.get_shape() == ov::Shape{0, std::numeric_limits::max()}) { - return std::make_shared(t.get_element_type()); - } else { - return std::make_shared(t.get_element_type(), t.get_shape(), t.data()); - } -} -inline ngraph::HostTensorVector create_tmp_tensors(const ov::TensorVector& tensors) { - ngraph::HostTensorVector result; - result.reserve(tensors.size()); - for (const auto& tensor : tensors) { - result.push_back(make_tmp_host_tensor(tensor)); - } - return result; -} - -inline void update_output_tensors(ov::TensorVector& output_values, const ngraph::HostTensorVector& outputs) { - OPENVINO_ASSERT(output_values.size() == outputs.size()); - for (size_t i = 0; i < outputs.size(); i++) { - if (auto dyn_output = std::dynamic_pointer_cast(outputs[i])) { - output_values[i] = dyn_output->get_tensor(); - } - } -} -} // namespace +#include "shape_util.hpp" class TemporaryOverrideOutputs { std::shared_ptr model; @@ -184,10 +127,11 @@ bool ov::runtime::interpreter::INTExecutable::call(std::vector& outp auto it = tensor_map.find(tensor); auto output = op->output(i); if (op::util::is_output(op) || it == tensor_map.end() || !it->second) { - host_tensor = ov::Tensor(output.get_element_type(), - output.get_partial_shape().is_dynamic() - ? ov::Shape{0, std::numeric_limits::max()} - : output.get_shape()); + OPENVINO_SUPPRESS_DEPRECATED_START + host_tensor = ov::Tensor( + output.get_element_type(), + output.get_partial_shape().is_dynamic() ? ov::util::make_dynamic_shape() : output.get_shape()); + OPENVINO_SUPPRESS_DEPRECATED_END } else { host_tensor = it->second; } @@ -268,17 +212,14 @@ std::vector ov::runtime::interpreter::INTExecutable::create_output_t bool ov::runtime::interpreter::INTExecutable::evaluate_node(const std::shared_ptr& node, ov::TensorVector& outputs, const ov::TensorVector& inputs) const { - auto& map = ngraph::runtime::interpreter::get_evaluators_map(); + auto& map = ov::runtime::interpreter::get_evaluators_map(); auto it = map.find(node->get_type_info()); bool res = false; - const auto tensor_inputs = create_tmp_tensors(inputs); - auto tensor_outputs = create_tmp_tensors(outputs); OPENVINO_ASSERT(it != map.end(), "Interpreter backend doesn't implement evaluate method for OP ", node->get_type_info().name); - res = it->second(node, tensor_outputs, tensor_inputs); + res = it->second(node, outputs, inputs); OPENVINO_ASSERT(res, "Running evaluate method for OP ", node->get_type_info().name, " failed!"); - update_output_tensors(outputs, tensor_outputs); return res; } diff --git a/src/plugins/template/backend/int_executable.hpp b/src/plugins/template/backend/int_executable.hpp index 1be052349f3e9e..6a98dac4d992c6 100644 --- a/src/plugins/template/backend/int_executable.hpp +++ b/src/plugins/template/backend/int_executable.hpp @@ -72,11 +72,8 @@ class INTExecutable : public Executable { std::vector scores_data; size_t out_shape_size; bool sort_result_descending; - ngraph::element::Type output_type; + ov::element::Type output_type; }; - - InfoForNMS5 get_info_for_nms5_eval(const ov::op::v5::NonMaxSuppression* nms5, - const std::vector>& inputs); }; } // namespace interpreter diff --git a/src/plugins/template/backend/ops/abs.cpp b/src/plugins/template/backend/ops/abs.cpp index b72163d1bb8f57..a23c6d91387e10 100644 --- a/src/plugins/template/backend/ops/abs.cpp +++ b/src/plugins/template/backend/ops/abs.cpp @@ -2,65 +2,59 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluate_node.hpp" #include "openvino/reference/abs.hpp" -// clang-format on -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::abs(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); +#include "evaluate_node.hpp" + +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::abs(inputs[0].data(), outputs[0].data(), ov::shape_size(inputs[0].get_shape())); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/adaptive_avg_pool.cpp b/src/plugins/template/backend/ops/adaptive_avg_pool.cpp index 789460103b92b6..0bd4d1a6fddf8d 100644 --- a/src/plugins/template/backend/ops/adaptive_avg_pool.cpp +++ b/src/plugins/template/backend/ops/adaptive_avg_pool.cpp @@ -6,93 +6,60 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::adaptive_avg_pool(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::adaptive_avg_pool(inputs[0].data(), + outputs[0].data(), + inputs[0].get_shape(), op->get_output_shape(0)); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/adaptive_max_pool.cpp b/src/plugins/template/backend/ops/adaptive_max_pool.cpp index e70fc9195a2d65..52aec1ea410556 100644 --- a/src/plugins/template/backend/ops/adaptive_max_pool.cpp +++ b/src/plugins/template/backend/ops/adaptive_max_pool.cpp @@ -2,108 +2,73 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluate_node.hpp" -#include "openvino/reference/adaptive_avg_pool.hpp" #include "openvino/reference/adaptive_max_pool.hpp" -// clang-format on -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - if (op->get_index_element_type() == ngraph::element::i32) { - ov::reference::adaptive_max_pool(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), - inputs[0]->get_shape(), +#include "evaluate_node.hpp" + +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + if (op->get_index_element_type() == ov::element::i32) { + ov::reference::adaptive_max_pool(inputs[0].data(), + outputs[0].data(), + outputs[1].data(), + inputs[0].get_shape(), op->get_output_shape(0)); - } else if (op->get_index_element_type() == ngraph::element::i64) { - ov::reference::adaptive_max_pool(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), - inputs[0]->get_shape(), + } else if (op->get_index_element_type() == ov::element::i64) { + ov::reference::adaptive_max_pool(inputs[0].data(), + outputs[0].data(), + outputs[1].data(), + inputs[0].get_shape(), op->get_output_shape(0)); } return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/assign.cpp b/src/plugins/template/backend/ops/assign.cpp index 8cdef6c7677e9c..3f4b5f108d5662 100644 --- a/src/plugins/template/backend/ops/assign.cpp +++ b/src/plugins/template/backend/ops/assign.cpp @@ -4,61 +4,21 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - outputs[0]->set_unary(inputs[0]); - void* input = inputs[0]->get_data_ptr(); - outputs[0]->write(input, outputs[0]->get_size_in_bytes()); +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + outputs[0].set_shape(inputs[0].get_shape()); + inputs[0].copy_to(outputs[0]); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); - switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); - } + return evaluate(ov::as_type_ptr(node), outputs, inputs); } diff --git a/src/plugins/template/backend/ops/avg_pool.cpp b/src/plugins/template/backend/ops/avg_pool.cpp index b6f3a6a9803eca..03d610fcd1ae70 100644 --- a/src/plugins/template/backend/ops/avg_pool.cpp +++ b/src/plugins/template/backend/ops/avg_pool.cpp @@ -6,14 +6,14 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::avg_pool(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::avg_pool(inputs[0].data(), + outputs[0].data(), + inputs[0].get_shape(), op->get_output_shape(0), op->get_kernel(), op->get_strides(), @@ -24,50 +24,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/batch_norm.cpp b/src/plugins/template/backend/ops/batch_norm.cpp index 012fc449186bf9..7a7821070818f6 100644 --- a/src/plugins/template/backend/ops/batch_norm.cpp +++ b/src/plugins/template/backend/ops/batch_norm.cpp @@ -6,192 +6,126 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; ov::reference::batch_norm_inference(static_cast(op->get_eps_value()), - inputs[2]->get_data_ptr(), - inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[3]->get_data_ptr(), - inputs[4]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[2]->get_shape()); + inputs[2].data(), + inputs[0].data(), + inputs[1].data(), + inputs[3].data(), + inputs[4].data(), + outputs[0].data(), + inputs[2].get_shape()); return true; } -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; ov::reference::batch_norm_inference(static_cast(static_cast(op->get_eps_value())), - inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - inputs[3]->get_data_ptr(), - inputs[4]->get_data_ptr(), - outputs[0]->get_data_ptr(), + inputs[0].data(), + inputs[1].data(), + inputs[2].data(), + inputs[3].data(), + inputs[4].data(), + outputs[0].data(), op->get_input_shape(0)); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/binary_convolution.cpp b/src/plugins/template/backend/ops/binary_convolution.cpp index 4b09df85a80bdd..1974c749d19826 100644 --- a/src/plugins/template/backend/ops/binary_convolution.cpp +++ b/src/plugins/template/backend/ops/binary_convolution.cpp @@ -7,19 +7,19 @@ #include "evaluate_node.hpp" namespace bin_conv_v1 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T_IN = typename ngraph::element_type_traits::value_type; - using T_F = typename ngraph::element_type_traits::value_type; +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T_IN = typename ov::element_type_traits::value_type; + using T_F = typename ov::element_type_traits::value_type; - const auto in_data_ptr = inputs[0]->get_data_ptr(); - const auto filter_data_ptr = inputs[1]->get_data_ptr(); - auto out_data_ptr = outputs[0]->get_data_ptr(); - const auto in_shape = inputs[0]->get_shape(); - const auto filter_shape = inputs[1]->get_shape(); - const auto out_shape = outputs[0]->get_shape(); + const auto in_data_ptr = static_cast(inputs[0].data()); + const auto filter_data_ptr = static_cast(inputs[1].data()); + auto out_data_ptr = static_cast(outputs[0].data()); + const auto in_shape = inputs[0].get_shape(); + const auto filter_shape = inputs[1].get_shape(); + const auto out_shape = outputs[0].get_shape(); ov::reference::binary_convolution(in_data_ptr, filter_data_ptr, @@ -35,96 +35,63 @@ inline void evaluate(const std::shared_ptr& o } } // namespace bin_conv_v1 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[1]->get_element_type()) { - case ngraph::element::Type_t::u1: - bin_conv_v1::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[1].get_element_type()) { + case ov::element::u1: + bin_conv_v1::evaluate(op, outputs, inputs); break; default: - throw std::runtime_error("BinaryConvolution supports only u1 element type for filters input"); + OPENVINO_THROW("BinaryConvolution supports only u1 element type for filters input"); break; } return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/bucketize.cpp b/src/plugins/template/backend/ops/bucketize.cpp index b55f7cda250a8f..ca9119fe19255a 100644 --- a/src/plugins/template/backend/ops/bucketize.cpp +++ b/src/plugins/template/backend/ops/bucketize.cpp @@ -7,139 +7,139 @@ #include "evaluate_node.hpp" namespace bucketize_v3 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - using T3 = typename ngraph::element_type_traits::value_type; +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + using T3 = typename ov::element_type_traits::value_type; - ov::reference::bucketize(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), + ov::reference::bucketize(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), op->get_input_shape(0), op->get_input_shape(1), op->get_with_right_bound()); } -static inline constexpr uint16_t getElementMask(ngraph::element::Type_t type1, ngraph::element::Type_t type2) { +static inline constexpr uint16_t getElementMask(ov::element::Type_t type1, ov::element::Type_t type2) { return (static_cast(type1)) | (static_cast(type2) << 8); } } // namespace bucketize_v3 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { switch (bucketize_v3::getElementMask(op->get_input_element_type(0), op->get_input_element_type(1))) { - case bucketize_v3::getElementMask(ngraph::element::Type_t::f32, ngraph::element::Type_t::f32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f32, ov::element::f32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::f32, ngraph::element::Type_t::f16): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f32, ov::element::f16): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::f32, ngraph::element::Type_t::i32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f32, ov::element::i32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::f32, ngraph::element::Type_t::i64): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f32, ov::element::i64): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::f32, ngraph::element::Type_t::i8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f32, ov::element::i8): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::f32, ngraph::element::Type_t::u8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f32, ov::element::u8): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::f16, ngraph::element::Type_t::f32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f16, ov::element::f32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::f16, ngraph::element::Type_t::f16): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f16, ov::element::f16): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::f16, ngraph::element::Type_t::i32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f16, ov::element::i32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::f16, ngraph::element::Type_t::i64): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f16, ov::element::i64): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::f16, ngraph::element::Type_t::i8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f16, ov::element::i8): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::f16, ngraph::element::Type_t::u8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::f16, ov::element::u8): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i32, ngraph::element::Type_t::f32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i32, ov::element::f32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i32, ngraph::element::Type_t::f16): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i32, ov::element::f16): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i32, ngraph::element::Type_t::i32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i32, ov::element::i32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i32, ngraph::element::Type_t::i64): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i32, ov::element::i64): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i32, ngraph::element::Type_t::i8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i32, ov::element::i8): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i32, ngraph::element::Type_t::u8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i32, ov::element::u8): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i64, ngraph::element::Type_t::f32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i64, ov::element::f32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i64, ngraph::element::Type_t::f16): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i64, ov::element::f16): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i64, ngraph::element::Type_t::i32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i64, ov::element::i32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i64, ngraph::element::Type_t::i64): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i64, ov::element::i64): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i64, ngraph::element::Type_t::i8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i64, ov::element::i8): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i64, ngraph::element::Type_t::u8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i64, ov::element::u8): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i8, ngraph::element::Type_t::f32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i8, ov::element::f32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i8, ngraph::element::Type_t::f16): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i8, ov::element::f16): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i8, ngraph::element::Type_t::i32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i8, ov::element::i32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i8, ngraph::element::Type_t::i64): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i8, ov::element::i64): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i8, ngraph::element::Type_t::i8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i8, ov::element::i8): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::i8, ngraph::element::Type_t::u8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::i8, ov::element::u8): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::u8, ngraph::element::Type_t::f32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::u8, ov::element::f32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::u8, ngraph::element::Type_t::f16): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::u8, ov::element::f16): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::u8, ngraph::element::Type_t::i32): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::u8, ov::element::i32): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::u8, ngraph::element::Type_t::i64): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::u8, ov::element::i64): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::u8, ngraph::element::Type_t::i8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::u8, ov::element::i8): + bucketize_v3::evaluate(op, outputs, inputs); break; - case bucketize_v3::getElementMask(ngraph::element::Type_t::u8, ngraph::element::Type_t::u8): - bucketize_v3::evaluate(op, outputs, inputs); + case bucketize_v3::getElementMask(ov::element::u8, ov::element::u8): + bucketize_v3::evaluate(op, outputs, inputs); break; default: return false; @@ -148,70 +148,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/ceiling.cpp b/src/plugins/template/backend/ops/ceiling.cpp index 19c3127a43c523..3278219a3e6b6b 100644 --- a/src/plugins/template/backend/ops/ceiling.cpp +++ b/src/plugins/template/backend/ops/ceiling.cpp @@ -6,62 +6,57 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::ceiling(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::ceiling(inputs[0].data(), outputs[0].data(), ov::shape_size(inputs[0].get_shape())); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/convert.cpp b/src/plugins/template/backend/ops/convert.cpp index 319818a5727854..71f6f3cc87a152 100644 --- a/src/plugins/template/backend/ops/convert.cpp +++ b/src/plugins/template/backend/ops/convert.cpp @@ -7,79 +7,76 @@ #include "evaluate_node.hpp" namespace convert_like_v1 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - outputs[0]->set_shape(inputs[0]->get_shape()); - size_t element_count = ngraph::shape_size(outputs[0]->get_shape()); +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T_I = typename ov::element_type_traits::value_type; + using T_O = typename ov::element_type_traits::value_type; + outputs[0].set_shape(inputs[0].get_shape()); + size_t element_count = ov::shape_size(outputs[0].get_shape()); - if (((ti == ngraph::element::u1) || (to == ngraph::element::u1)) || - ((ti == ngraph::element::u4) || (to == ngraph::element::u4)) || - ((ti == ngraph::element::i4) || (to == ngraph::element::i4))) { - ov::reference::detail::lp_convert(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - element_count, - ti, - to); + if (((ti == ov::element::u1) || (to == ov::element::u1)) || ((ti == ov::element::u4) || (to == ov::element::u4)) || + ((ti == ov::element::i4) || (to == ov::element::i4))) { + ov::reference::detail::lp_convert(inputs[0].data(), outputs[0].data(), element_count, ti, to); } else { - ov::reference::convert(inputs[0]->get_data_ptr(), outputs[0]->get_data_ptr(), element_count); + ov::reference::convert(inputs[0].data(), outputs[0].data(), element_count); } } } // namespace convert_like_v1 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[0]->get_element_type()) { - case ngraph::element::Type_t::boolean: - convert_like_v1::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[0].get_element_type()) { + case ov::element::boolean: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::u1: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::u1: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::u4: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::u4: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::u8: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::u8: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::u16: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::u16: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::u32: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::u32: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::u64: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::u64: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i4: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::i4: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i8: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::i8: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i16: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::i16: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i32: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::i32: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i64: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::i64: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::bf16: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::bf16: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::f16: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::f16: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::f32: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::f32: + convert_like_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::f64: - convert_like_v1::evaluate(op, outputs, inputs); + case ov::element::f64: + convert_like_v1::evaluate(op, outputs, inputs); break; default: return false; @@ -88,80 +85,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/convert_color_nv12.cpp b/src/plugins/template/backend/ops/convert_color_nv12.cpp index 3b9996da285192..f2b571f73cacfb 100644 --- a/src/plugins/template/backend/ops/convert_color_nv12.cpp +++ b/src/plugins/template/backend/ops/convert_color_nv12.cpp @@ -7,9 +7,9 @@ #include "evaluate_node.hpp" template -inline bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +inline bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { return ov::reference::color_convert_nv12(op, outputs, inputs, @@ -17,9 +17,9 @@ inline bool evaluate(const std::shared_ptr& op, } template -inline bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +inline bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { return ov::reference::color_convert_nv12(op, outputs, inputs, @@ -27,9 +27,9 @@ inline bool evaluate(const std::shared_ptr& op, } template -inline bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +inline bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { return ov::reference::color_convert_i420(op, outputs, inputs, @@ -37,9 +37,9 @@ inline bool evaluate(const std::shared_ptr& op, } template -inline bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +inline bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { return ov::reference::color_convert_i420(op, outputs, inputs, @@ -47,68 +47,46 @@ inline bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); @@ -116,68 +94,46 @@ bool evaluate_node(std::shared_ptr node } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); @@ -185,68 +141,46 @@ bool evaluate_node(std::shared_ptr node } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); @@ -254,70 +188,47 @@ bool evaluate_node(std::shared_ptr node } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/convolution.cpp b/src/plugins/template/backend/ops/convolution.cpp index 1af7805495022f..ea7e7ba20c1675 100644 --- a/src/plugins/template/backend/ops/convolution.cpp +++ b/src/plugins/template/backend/ops/convolution.cpp @@ -6,104 +6,72 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - const auto filter_data = inputs[1]->get_data_ptr(); - auto out_data_ptr = outputs[0]->get_data_ptr(); - const auto in_data_ptr = inputs[0]->get_data_ptr(); - const auto& out_shape = outputs[0]->get_shape(); - const auto& in_shape = inputs[0]->get_shape(); - const auto& filter_shape = inputs[1]->get_shape(); - ov::reference::convolution::value_type>(in_data_ptr, - filter_data, - out_data_ptr, - in_shape, - filter_shape, - out_shape, - op->get_strides(), - op->get_dilations(), - op->get_pads_begin(), - op->get_pads_end()); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using ET = typename ov::element_type_traits::value_type; + const auto filter_data = inputs[1].data(); + auto out_data_ptr = outputs[0].data(); + const auto in_data_ptr = inputs[0].data(); + const auto& out_shape = outputs[0].get_shape(); + const auto& in_shape = inputs[0].get_shape(); + const auto& filter_shape = inputs[1].get_shape(); + ov::reference::convolution(in_data_ptr, + filter_data, + out_data_ptr, + in_shape, + filter_shape, + out_shape, + op->get_strides(), + op->get_dilations(), + op->get_pads_begin(), + op->get_pads_end()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/convolution_backprop_data.cpp b/src/plugins/template/backend/ops/convolution_backprop_data.cpp index e0d7d7aafcb650..a9d8ebb6ef30e9 100644 --- a/src/plugins/template/backend/ops/convolution_backprop_data.cpp +++ b/src/plugins/template/backend/ops/convolution_backprop_data.cpp @@ -6,110 +6,78 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - const auto filter_data = inputs[1]->get_data_ptr(); - auto out_data_ptr = outputs[0]->get_data_ptr(); - const auto in_data_ptr = inputs[0]->get_data_ptr(); - const auto& out_shape = outputs[0]->get_shape(); - const auto& in_shape = inputs[0]->get_shape(); - const auto& filter_shape = inputs[1]->get_shape(); - ngraph::Strides in_dilation(std::vector(in_shape.size() - 2)); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using ET = typename ov::element_type_traits::value_type; + const auto filter_data = inputs[1].data(); + auto out_data_ptr = outputs[0].data(); + const auto in_data_ptr = inputs[0].data(); + const auto& out_shape = outputs[0].get_shape(); + const auto& in_shape = inputs[0].get_shape(); + const auto& filter_shape = inputs[1].get_shape(); + ov::Strides in_dilation(std::vector(in_shape.size() - 2)); std::fill(in_dilation.begin(), in_dilation.end(), 1); - ov::reference::convolution_backprop_in::value_type>( - in_data_ptr, - filter_data, - out_data_ptr, - in_shape, - filter_shape, - out_shape, - in_dilation, - op->get_dilations(), - op->get_pads_begin(), - op->get_pads_end(), - op->get_strides(), - op->get_output_padding()); + ov::reference::convolution_backprop_in(in_data_ptr, + filter_data, + out_data_ptr, + in_shape, + filter_shape, + out_shape, + in_dilation, + op->get_dilations(), + op->get_pads_begin(), + op->get_pads_end(), + op->get_strides(), + op->get_output_padding()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/ctc_greedy_decoder.cpp b/src/plugins/template/backend/ops/ctc_greedy_decoder.cpp index b0bbeffd5a0e18..de6f162ab44b3b 100644 --- a/src/plugins/template/backend/ops/ctc_greedy_decoder.cpp +++ b/src/plugins/template/backend/ops/ctc_greedy_decoder.cpp @@ -6,96 +6,63 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::ctc_greedy_decoder(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - outputs[0]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::ctc_greedy_decoder(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), + outputs[0].get_shape(), op->get_ctc_merge_repeated()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/ctc_greedy_decoder_seq_len.cpp b/src/plugins/template/backend/ops/ctc_greedy_decoder_seq_len.cpp index 7cff484d99ef6c..b76c5459cdfc7c 100644 --- a/src/plugins/template/backend/ops/ctc_greedy_decoder_seq_len.cpp +++ b/src/plugins/template/backend/ops/ctc_greedy_decoder_seq_len.cpp @@ -7,69 +7,57 @@ #include "evaluate_node.hpp" namespace ctc_greedy_decoder_v6 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using TF = typename ngraph::element_type_traits::value_type; - using TI = typename ngraph::element_type_traits::value_type; - using TIND1 = typename ngraph::element_type_traits::value_type; - TI blank_index_val = static_cast(inputs[0]->get_shape().back() - 1); +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using TF = typename ov::element_type_traits::value_type; + using TI = typename ov::element_type_traits::value_type; + using TIND1 = typename ov::element_type_traits::value_type; + TI blank_index_val = static_cast(inputs[0].get_shape().back() - 1); const TI* blank_index = &blank_index_val; if (inputs.size() == 3) { - blank_index = inputs[2]->get_data_ptr(); + blank_index = inputs[2].data(); } - if (op->get_sequence_length_type() == ngraph::element::i32) { - ov::reference::ctc_greedy_decoder_seq_len(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), + if (op->get_sequence_length_type() == ov::element::i32) { + ov::reference::ctc_greedy_decoder_seq_len(inputs[0].data(), + inputs[1].data(), blank_index, - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), - inputs[0]->get_shape(), - outputs[0]->get_shape(), + outputs[0].data(), + outputs[1].data(), + inputs[0].get_shape(), + outputs[0].get_shape(), op->get_merge_repeated()); - } else if (op->get_sequence_length_type() == ngraph::element::i64) { - ov::reference::ctc_greedy_decoder_seq_len(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), + } else if (op->get_sequence_length_type() == ov::element::i64) { + ov::reference::ctc_greedy_decoder_seq_len(inputs[0].data(), + inputs[1].data(), blank_index, - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), - inputs[0]->get_shape(), - outputs[0]->get_shape(), + outputs[0].data(), + outputs[1].data(), + inputs[0].get_shape(), + outputs[0].get_shape(), op->get_merge_repeated()); } } } // namespace ctc_greedy_decoder_v6 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - const auto& dataType = inputs[0]->get_element_type(); - const auto& seqLenType = inputs[1]->get_element_type(); - if (dataType == ngraph::element::Type_t::f16 && seqLenType == ngraph::element::Type_t::i32) { - ctc_greedy_decoder_v6::evaluate(op, - outputs, - inputs); - } else if (dataType == ngraph::element::Type_t::f32 && seqLenType == ngraph::element::Type_t::i32) { - ctc_greedy_decoder_v6::evaluate(op, - outputs, - inputs); - } else if (dataType == ngraph::element::Type_t::f64 && seqLenType == ngraph::element::Type_t::i32) { - ctc_greedy_decoder_v6::evaluate(op, - outputs, - inputs); - } else if (dataType == ngraph::element::Type_t::f16 && seqLenType == ngraph::element::Type_t::i64) { - ctc_greedy_decoder_v6::evaluate(op, - outputs, - inputs); - } else if (dataType == ngraph::element::Type_t::f32 && seqLenType == ngraph::element::Type_t::i64) { - ctc_greedy_decoder_v6::evaluate(op, - outputs, - inputs); - } else if (dataType == ngraph::element::Type_t::f64 && seqLenType == ngraph::element::Type_t::i64) { - ctc_greedy_decoder_v6::evaluate(op, - outputs, - inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + const auto& dataType = inputs[0].get_element_type(); + const auto& seqLenType = inputs[1].get_element_type(); + if (dataType == ov::element::f16 && seqLenType == ov::element::i32) { + ctc_greedy_decoder_v6::evaluate(op, outputs, inputs); + } else if (dataType == ov::element::f32 && seqLenType == ov::element::i32) { + ctc_greedy_decoder_v6::evaluate(op, outputs, inputs); + } else if (dataType == ov::element::f64 && seqLenType == ov::element::i32) { + ctc_greedy_decoder_v6::evaluate(op, outputs, inputs); + } else if (dataType == ov::element::f16 && seqLenType == ov::element::i64) { + ctc_greedy_decoder_v6::evaluate(op, outputs, inputs); + } else if (dataType == ov::element::f32 && seqLenType == ov::element::i64) { + ctc_greedy_decoder_v6::evaluate(op, outputs, inputs); + } else if (dataType == ov::element::f64 && seqLenType == ov::element::i64) { + ctc_greedy_decoder_v6::evaluate(op, outputs, inputs); } else { return false; } @@ -77,80 +65,49 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/ctc_loss.cpp b/src/plugins/template/backend/ops/ctc_loss.cpp index 41b009be635185..215f4e661a08e6 100644 --- a/src/plugins/template/backend/ops/ctc_loss.cpp +++ b/src/plugins/template/backend/ops/ctc_loss.cpp @@ -2,62 +2,59 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluate_node.hpp" #include "openvino/reference/ctc_loss.hpp" -// clang-format on + +#include "evaluate_node.hpp" namespace ctc_loss_v4 { -template ::value_type>::value && - !std::is_same::value_type, ngraph::bfloat16>::value && - !std::is_same::value_type, ngraph::float16>::value, - bool>::type = true> -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - OPENVINO_ASSERT(false, - "The data type for logits is expected to be a floating point type. Got:", - ngraph::element::Type(t1)); +template < + ov::element::Type_t ET1, + ov::element::Type_t ET2, + typename std::enable_if::value_type>::value && + !std::is_same::value_type, ov::bfloat16>::value && + !std::is_same::value_type, ov::float16>::value, + bool>::type = true> +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + OPENVINO_THROW("The data type for logits is expected to be a floating point type. Got:", ov::element::Type(ET1)); } -template ::value_type>::value || - std::is_same::value_type, ngraph::bfloat16>::value || - std::is_same::value_type, ngraph::float16>::value, - bool>::type = true> -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - ov::reference::CTCLoss(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - inputs[3]->get_data_ptr(), - inputs[4]->get_data_ptr(), +template < + ov::element::Type_t ET1, + ov::element::Type_t ET2, + typename std::enable_if::value_type>::value || + std::is_same::value_type, ov::bfloat16>::value || + std::is_same::value_type, ov::float16>::value, + bool>::type = true> +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + ov::reference::CTCLoss(static_cast(inputs[0].data()), + inputs[0].get_shape(), + static_cast(inputs[1].data()), + static_cast(inputs[2].data()), + static_cast(inputs[3].data()), + static_cast(inputs[4].data()), op->get_preprocess_collapse_repeated(), op->get_ctc_merge_repeated(), op->get_unique(), - outputs[0]->get_data_ptr()); + static_cast(outputs[0].data())); } } // namespace ctc_loss_v4 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[1]->get_element_type()) { - case ngraph::element::Type_t::i32: - ctc_loss_v4::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[1].get_element_type()) { + case ov::element::i32: + ctc_loss_v4::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i64: - ctc_loss_v4::evaluate(op, outputs, inputs); + case ov::element::i64: + ctc_loss_v4::evaluate(op, outputs, inputs); break; default: return false; @@ -66,50 +63,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/cum_sum.cpp b/src/plugins/template/backend/ops/cum_sum.cpp index a0d23e50563996..06dc952b233fe7 100644 --- a/src/plugins/template/backend/ops/cum_sum.cpp +++ b/src/plugins/template/backend/ops/cum_sum.cpp @@ -8,81 +8,78 @@ // clang-format on namespace cum_sum_v0 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - ov::reference::cumsum(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + ov::reference::cumsum(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + inputs[0].get_shape(), op->is_exclusive(), op->is_reverse()); } } // namespace cum_sum_v0 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[1]->get_element_type()) { - case ngraph::element::Type_t::i64: - cum_sum_v0::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[1].get_element_type()) { + case ov::element::i64: + cum_sum_v0::evaluate(op, outputs, inputs); break; default: - cum_sum_v0::evaluate(op, outputs, inputs); + cum_sum_v0::evaluate(op, outputs, inputs); break; } return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/deformable_convolution.cpp b/src/plugins/template/backend/ops/deformable_convolution.cpp index d4b96062b842f8..ea9eeb2ac13aed 100644 --- a/src/plugins/template/backend/ops/deformable_convolution.cpp +++ b/src/plugins/template/backend/ops/deformable_convolution.cpp @@ -6,244 +6,181 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - const auto in_data_ptr = inputs[0]->get_data_ptr(); - const auto offset_data_ptr = inputs[1]->get_data_ptr(); - const auto filter_data_ptr = inputs[2]->get_data_ptr(); - auto out_data_ptr = outputs[0]->get_data_ptr(); - const auto& out_shape = outputs[0]->get_shape(); - const auto& in_shape = inputs[0]->get_shape(); - const auto& offset_shape = inputs[1]->get_shape(); - const auto& filter_shape = inputs[2]->get_shape(); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using ET = typename ov::element_type_traits::value_type; + const auto in_data_ptr = inputs[0].data(); + const auto offset_data_ptr = inputs[1].data(); + const auto filter_data_ptr = inputs[2].data(); + auto out_data_ptr = outputs[0].data(); + const auto& out_shape = outputs[0].get_shape(); + const auto& in_shape = inputs[0].get_shape(); + const auto& offset_shape = inputs[1].get_shape(); + const auto& filter_shape = inputs[2].get_shape(); if (inputs.size() == 3) { - ov::reference::deformable_convolution::value_type>( - in_data_ptr, - offset_data_ptr, - filter_data_ptr, - out_data_ptr, - in_shape, - offset_shape, - filter_shape, - out_shape, - op->get_strides(), - op->get_dilations(), - op->get_pads_begin(), - op->get_pads_end(), - op->get_group(), - op->get_deformable_group(), - op->get_bilinear_interpolation_pad()); + ov::reference::deformable_convolution(in_data_ptr, + offset_data_ptr, + filter_data_ptr, + out_data_ptr, + in_shape, + offset_shape, + filter_shape, + out_shape, + op->get_strides(), + op->get_dilations(), + op->get_pads_begin(), + op->get_pads_end(), + op->get_group(), + op->get_deformable_group(), + op->get_bilinear_interpolation_pad()); } else { - const auto mask_data_ptr = inputs[3]->get_data_ptr(); - const auto& mask_shape = inputs[3]->get_shape(); - ov::reference::deformable_convolution::value_type>( - in_data_ptr, - offset_data_ptr, - filter_data_ptr, - mask_data_ptr, - out_data_ptr, - in_shape, - offset_shape, - filter_shape, - mask_shape, - out_shape, - op->get_strides(), - op->get_dilations(), - op->get_pads_begin(), - op->get_pads_end(), - op->get_group(), - op->get_deformable_group(), - op->get_bilinear_interpolation_pad()); + const auto mask_data_ptr = inputs[3].data(); + const auto& mask_shape = inputs[3].get_shape(); + ov::reference::deformable_convolution(in_data_ptr, + offset_data_ptr, + filter_data_ptr, + mask_data_ptr, + out_data_ptr, + in_shape, + offset_shape, + filter_shape, + mask_shape, + out_shape, + op->get_strides(), + op->get_dilations(), + op->get_pads_begin(), + op->get_pads_end(), + op->get_group(), + op->get_deformable_group(), + op->get_bilinear_interpolation_pad()); } return true; } -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - const auto in_data_ptr = inputs[0]->get_data_ptr(); - const auto offset_data_ptr = inputs[1]->get_data_ptr(); - const auto filter_data_ptr = inputs[2]->get_data_ptr(); - auto out_data_ptr = outputs[0]->get_data_ptr(); - const auto& out_shape = outputs[0]->get_shape(); - const auto& in_shape = inputs[0]->get_shape(); - const auto& offset_shape = inputs[1]->get_shape(); - const auto& filter_shape = inputs[2]->get_shape(); - ov::reference::deformable_convolution::value_type>( - in_data_ptr, - offset_data_ptr, - filter_data_ptr, - out_data_ptr, - in_shape, - offset_shape, - filter_shape, - out_shape, - op->get_strides(), - op->get_dilations(), - op->get_pads_begin(), - op->get_pads_end(), - op->get_group(), - op->get_deformable_group()); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using ET = typename ov::element_type_traits::value_type; + const auto in_data_ptr = inputs[0].data(); + const auto offset_data_ptr = inputs[1].data(); + const auto filter_data_ptr = inputs[2].data(); + auto out_data_ptr = outputs[0].data(); + const auto& out_shape = outputs[0].get_shape(); + const auto& in_shape = inputs[0].get_shape(); + const auto& offset_shape = inputs[1].get_shape(); + const auto& filter_shape = inputs[2].get_shape(); + ov::reference::deformable_convolution(in_data_ptr, + offset_data_ptr, + filter_data_ptr, + out_data_ptr, + in_shape, + offset_shape, + filter_shape, + out_shape, + op->get_strides(), + op->get_dilations(), + op->get_pads_begin(), + op->get_pads_end(), + op->get_group(), + op->get_deformable_group()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/deformable_psroi_pooling.cpp b/src/plugins/template/backend/ops/deformable_psroi_pooling.cpp index 78a0ed95612b9e..70c24918edd975 100644 --- a/src/plugins/template/backend/ops/deformable_psroi_pooling.cpp +++ b/src/plugins/template/backend/ops/deformable_psroi_pooling.cpp @@ -6,28 +6,28 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - NGRAPH_CHECK(inputs.size() > 1 && inputs[1]->get_shape().size() == 2, - "2D tensor must be provided as second input. "); - outputs[0]->set_shape({inputs[1]->get_shape()[0], - static_cast(op->get_output_dim()), - static_cast(op->get_group_size()), - static_cast(op->get_group_size())}); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + OPENVINO_ASSERT(inputs.size() > 1 && inputs[1].get_shape().size() == 2, + "2D tensor must be provided as second input. "); + outputs[0].set_shape({inputs[1].get_shape()[0], + static_cast(op->get_output_dim()), + static_cast(op->get_group_size()), + static_cast(op->get_group_size())}); const bool has_offset_intput = inputs.size() == 3; if (has_offset_intput) { - ov::reference::deformable_psroi_pooling(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - inputs[2]->get_data_ptr(), - inputs[2]->get_shape(), - outputs[0]->get_data_ptr(), - outputs[0]->get_shape(), + ov::reference::deformable_psroi_pooling(inputs[0].data(), + inputs[0].get_shape(), + inputs[1].data(), + inputs[1].get_shape(), + inputs[2].data(), + inputs[2].get_shape(), + outputs[0].data(), + outputs[0].get_shape(), op->get_mode(), op->get_spatial_scale(), op->get_spatial_bins_x(), @@ -35,14 +35,14 @@ bool evaluate(const std::shared_ptr& op, op->get_trans_std(), op->get_part_size()); } else { - ov::reference::deformable_psroi_pooling(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), + ov::reference::deformable_psroi_pooling(inputs[0].data(), + inputs[0].get_shape(), + inputs[1].data(), + inputs[1].get_shape(), nullptr, - ngraph::Shape(), - outputs[0]->get_data_ptr(), - outputs[0]->get_shape(), + ov::Shape(), + outputs[0].data(), + outputs[0].get_shape(), op->get_mode(), op->get_spatial_scale(), op->get_spatial_bins_x(), @@ -54,80 +54,49 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/detection_output.cpp b/src/plugins/template/backend/ops/detection_output.cpp index 42ea79e14ab392..bc750cdffa339d 100644 --- a/src/plugins/template/backend/ops/detection_output.cpp +++ b/src/plugins/template/backend/ops/detection_output.cpp @@ -6,60 +6,60 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; ov::reference::referenceDetectionOutput refDetOut(op->get_attrs(), op->get_input_shape(0), op->get_input_shape(1), op->get_input_shape(2), op->get_output_shape(0)); if (op->get_input_size() == 3) { - refDetOut.run(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), + refDetOut.run(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), nullptr, nullptr, - outputs[0]->get_data_ptr()); + outputs[0].data()); } else if (op->get_input_size() == 5) { - refDetOut.run(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - inputs[3]->get_data_ptr(), - inputs[4]->get_data_ptr(), - outputs[0]->get_data_ptr()); + refDetOut.run(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), + inputs[3].data(), + inputs[4].data(), + outputs[0].data()); } else { OPENVINO_THROW("DetectionOutput layer supports only 3 or 5 inputs"); } return true; } -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; ov::reference::referenceDetectionOutput refDetOut(op->get_attrs(), op->get_input_shape(0), op->get_input_shape(1), op->get_input_shape(2), op->get_output_shape(0)); if (op->get_input_size() == 3) { - refDetOut.run(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), + refDetOut.run(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), nullptr, nullptr, - outputs[0]->get_data_ptr()); + outputs[0].data()); } else if (op->get_input_size() == 5) { - refDetOut.run(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - inputs[3]->get_data_ptr(), - inputs[4]->get_data_ptr(), - outputs[0]->get_data_ptr()); + refDetOut.run(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), + inputs[3].data(), + inputs[4].data(), + outputs[0].data()); } else { OPENVINO_THROW("DetectionOutput layer supports only 3 or 5 inputs"); } @@ -67,159 +67,93 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/einsum.cpp b/src/plugins/template/backend/ops/einsum.cpp index 70ac9c66be98a3..c744275de2778e 100644 --- a/src/plugins/template/backend/ops/einsum.cpp +++ b/src/plugins/template/backend/ops/einsum.cpp @@ -6,58 +6,56 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { const auto equation = op->get_equation(); ov::reference::einsum(outputs, inputs, equation); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); diff --git a/src/plugins/template/backend/ops/elu.cpp b/src/plugins/template/backend/ops/elu.cpp index 3da9d8f83621fe..45b23f6ff579c5 100644 --- a/src/plugins/template/backend/ops/elu.cpp +++ b/src/plugins/template/backend/ops/elu.cpp @@ -6,61 +6,58 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::elu(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape()), +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::elu(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape()), op->get_alpha()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/embedding_bag_offsets_sum.cpp b/src/plugins/template/backend/ops/embedding_bag_offsets_sum.cpp index a58340a56b112f..a391a502b8b885 100644 --- a/src/plugins/template/backend/ops/embedding_bag_offsets_sum.cpp +++ b/src/plugins/template/backend/ops/embedding_bag_offsets_sum.cpp @@ -7,33 +7,33 @@ #include "evaluate_node.hpp" namespace embedding_bag_offsets_sum_v3 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - ov::reference::embeddingBagOffsetsSum(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - inputs.size() > 3 ? inputs[3]->get_data_ptr() : nullptr, - inputs.size() > 4 ? inputs[4]->get_data_ptr() : nullptr, - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[1]->get_shape()), - outputs[0]->get_shape()); +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + ov::reference::embeddingBagOffsetsSum(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), + inputs.size() > 3 ? inputs[3].data() : nullptr, + inputs.size() > 4 ? inputs[4].data() : nullptr, + outputs[0].data(), + ov::shape_size(inputs[1].get_shape()), + outputs[0].get_shape()); } } // namespace embedding_bag_offsets_sum_v3 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[1]->get_element_type()) { - case ngraph::element::Type_t::i32: - embedding_bag_offsets_sum_v3::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[1].get_element_type()) { + case ov::element::i32: + embedding_bag_offsets_sum_v3::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i64: - embedding_bag_offsets_sum_v3::evaluate(op, outputs, inputs); + case ov::element::i64: + embedding_bag_offsets_sum_v3::evaluate(op, outputs, inputs); break; default: return false; @@ -42,80 +42,49 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/embedding_bag_packed_sum.cpp b/src/plugins/template/backend/ops/embedding_bag_packed_sum.cpp index 4a9e764bc8d86d..8ff618230b8b54 100644 --- a/src/plugins/template/backend/ops/embedding_bag_packed_sum.cpp +++ b/src/plugins/template/backend/ops/embedding_bag_packed_sum.cpp @@ -2,37 +2,36 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluate_node.hpp" #include "openvino/reference/embedding_bag_packed_sum.hpp" -// clang-format on + +#include "evaluate_node.hpp" namespace embedding_bag_packed_sum_v3 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - ov::reference::embeddingBagPackedSum(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs.size() > 2 ? inputs[2]->get_data_ptr() : nullptr, - outputs[0]->get_data_ptr(), - inputs[1]->get_shape(), - outputs[0]->get_shape()); +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + ov::reference::embeddingBagPackedSum(inputs[0].data(), + inputs[1].data(), + inputs.size() > 2 ? inputs[2].data() : nullptr, + outputs[0].data(), + inputs[1].get_shape(), + outputs[0].get_shape()); } } // namespace embedding_bag_packed_sum_v3 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[1]->get_element_type()) { - case ngraph::element::Type_t::i32: - embedding_bag_packed_sum_v3::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[1].get_element_type()) { + case ov::element::i32: + embedding_bag_packed_sum_v3::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i64: - embedding_bag_packed_sum_v3::evaluate(op, outputs, inputs); + case ov::element::i64: + embedding_bag_packed_sum_v3::evaluate(op, outputs, inputs); break; default: return false; @@ -42,80 +41,49 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/embedding_segments_sum.cpp b/src/plugins/template/backend/ops/embedding_segments_sum.cpp index 1d67090fd9c8f5..8307406e7b5373 100644 --- a/src/plugins/template/backend/ops/embedding_segments_sum.cpp +++ b/src/plugins/template/backend/ops/embedding_segments_sum.cpp @@ -7,34 +7,34 @@ #include "evaluate_node.hpp" namespace embedding_offsets_sum_v3 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - ov::reference::embeddingSegmentsSum(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - inputs.size() > 4 ? inputs[4]->get_data_ptr() : nullptr, - inputs.size() > 5 ? inputs[5]->get_data_ptr() : nullptr, - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - outputs[0]->get_shape()); +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + ov::reference::embeddingSegmentsSum(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), + inputs.size() > 4 ? inputs[4].data() : nullptr, + inputs.size() > 5 ? inputs[5].data() : nullptr, + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), + outputs[0].get_shape()); } } // namespace embedding_offsets_sum_v3 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[1]->get_element_type()) { - case ngraph::element::Type_t::i32: - embedding_offsets_sum_v3::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[1].get_element_type()) { + case ov::element::i32: + embedding_offsets_sum_v3::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i64: - embedding_offsets_sum_v3::evaluate(op, outputs, inputs); + case ov::element::i64: + embedding_offsets_sum_v3::evaluate(op, outputs, inputs); break; default: return false; @@ -43,80 +43,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/equal.cpp b/src/plugins/template/backend/ops/equal.cpp index a6773c15c8a072..70402f9feb8c7a 100644 --- a/src/plugins/template/backend/ops/equal.cpp +++ b/src/plugins/template/backend/ops/equal.cpp @@ -5,73 +5,64 @@ #include "openvino/reference/equal.hpp" #include "evaluate_node.hpp" +#include "openvino/core/type/element_type.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - const auto in0_data_ptr = inputs[0]->get_data_ptr(); - const auto in1_data_ptr = inputs[1]->get_data_ptr(); - const auto out_data_ptr = outputs[0]->get_data_ptr(); - const auto in0_shape = inputs[0]->get_shape(); - const auto in1_shape = inputs[1]->get_shape(); +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using ET = typename ov::element_type_traits::value_type; + using BT = typename ov::element_type_traits::value_type; + const auto in0_data_ptr = inputs[0].data(); + const auto in1_data_ptr = inputs[1].data(); + const auto out_data_ptr = outputs[0].data(); + const auto in0_shape = inputs[0].get_shape(); + const auto in1_shape = inputs[1].get_shape(); const auto broadcast_spec = op->get_autob(); - ov::reference::equal::value_type, - typename ngraph::element_type_traits::value_type>( - in0_data_ptr, - in1_data_ptr, - out_data_ptr, - in0_shape, - in1_shape, - broadcast_spec); + ov::reference::equal(in0_data_ptr, in1_data_ptr, out_data_ptr, in0_shape, in1_shape, broadcast_spec); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/evaluate_node.hpp b/src/plugins/template/backend/ops/evaluate_node.hpp index 8f5ac4892be458..58484f0a389de0 100644 --- a/src/plugins/template/backend/ops/evaluate_node.hpp +++ b/src/plugins/template/backend/ops/evaluate_node.hpp @@ -3,60 +3,56 @@ // #pragma once -#include "ngraph/ops.hpp" + #include "openvino/core/except.hpp" #include "openvino/op/ops.hpp" +#include "openvino/runtime/tensor.hpp" -template -bool evaluate(std::shared_ptr op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(std::shared_ptr op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { return false; } template -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, ov::TensorVector& outputs, const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/exp.cpp b/src/plugins/template/backend/ops/exp.cpp index 4d3fd3402b5d18..1f78c498ee1b84 100644 --- a/src/plugins/template/backend/ops/exp.cpp +++ b/src/plugins/template/backend/ops/exp.cpp @@ -6,60 +6,55 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::exp(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::exp(inputs[0].data(), outputs[0].data(), ov::shape_size(inputs[0].get_shape())); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/experimental_detectron_detection_output.cpp b/src/plugins/template/backend/ops/experimental_detectron_detection_output.cpp index 9c6199637c8208..4eafe3f5cdd4b4 100644 --- a/src/plugins/template/backend/ops/experimental_detectron_detection_output.cpp +++ b/src/plugins/template/backend/ops/experimental_detectron_detection_output.cpp @@ -7,34 +7,31 @@ #include "evaluate_node.hpp" #include "evaluates_map.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { const auto attrs = op->get_attrs(); size_t rois_num = attrs.max_detections_per_image; - const ngraph::Shape output_boxes_shape = ngraph::Shape{rois_num, 4}; - const ngraph::Shape output_classes_shape = ngraph::Shape{rois_num}; - const ngraph::Shape output_scores_shape = ngraph::Shape{rois_num}; + const ov::Shape output_boxes_shape = ov::Shape{rois_num, 4}; + const ov::Shape output_classes_shape = ov::Shape{rois_num}; + const ov::Shape output_scores_shape = ov::Shape{rois_num}; const auto output_type = op->get_input_element_type(0); - const auto boxes_data = get_floats(inputs[0], inputs[0]->get_shape()); - const auto input_deltas_data = get_floats(inputs[1], inputs[1]->get_shape()); - const auto input_scores_data = get_floats(inputs[2], inputs[2]->get_shape()); - const auto input_im_info_data = get_floats(inputs[3], inputs[3]->get_shape()); + const auto boxes_data = get_floats(inputs[0], inputs[0].get_shape()); + const auto input_deltas_data = get_floats(inputs[1], inputs[1].get_shape()); + const auto input_scores_data = get_floats(inputs[2], inputs[2].get_shape()); + const auto input_im_info_data = get_floats(inputs[3], inputs[3].get_shape()); - std::vector output_boxes(ngraph::shape_size(output_boxes_shape)); - std::vector output_classes(ngraph::shape_size(output_classes_shape)); - std::vector output_scores(ngraph::shape_size(output_scores_shape)); + std::vector output_boxes(ov::shape_size(output_boxes_shape)); + std::vector output_classes(ov::shape_size(output_classes_shape)); + std::vector output_scores(ov::shape_size(output_scores_shape)); - outputs[0]->set_element_type(output_type); - outputs[0]->set_shape(output_boxes_shape); - outputs[1]->set_element_type(ngraph::element::Type_t::i32); - outputs[1]->set_shape(output_classes_shape); - outputs[2]->set_element_type(output_type); - outputs[2]->set_shape(output_scores_shape); + outputs[0].set_shape(output_boxes_shape); + outputs[1].set_shape(output_classes_shape); + outputs[2].set_shape(output_scores_shape); ov::reference::experimental_detectron_detection_output(boxes_data.data(), input_deltas_data.data(), @@ -45,9 +42,9 @@ bool evaluate(const std::shared_ptrget_data_ptr(), - outputs[1]->get_data_ptr(), - outputs[2]->get_data_ptr(), + ov::reference::experimental_detectron_detection_output_postprocessing(outputs[0].data(), + outputs[1].data(), + outputs[2].data(), output_type, output_boxes, output_classes, @@ -60,96 +57,79 @@ bool evaluate(const std::shared_ptr -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/experimental_detectron_prior_grid_generator.cpp b/src/plugins/template/backend/ops/experimental_detectron_prior_grid_generator.cpp index cff1eb493222bc..6fa9c91c5ae106 100644 --- a/src/plugins/template/backend/ops/experimental_detectron_prior_grid_generator.cpp +++ b/src/plugins/template/backend/ops/experimental_detectron_prior_grid_generator.cpp @@ -8,7 +8,7 @@ namespace experimental_prior_grid { struct InfoForEDPriorGrid { - ngraph::Shape output_shape; + ov::Shape output_shape; int64_t grid_h; int64_t grid_w; float stride_h; @@ -18,20 +18,17 @@ struct InfoForEDPriorGrid { constexpr size_t priors_port = 0; constexpr size_t feature_map_port = 1; -ngraph::PartialShape infer_output_shape(const std::vector>& inputs, bool flatten) { - ngraph::PartialShape out_shape = {ngraph::Dimension::dynamic(), - ngraph::Dimension::dynamic(), - ngraph::Dimension::dynamic(), - 4}; +ov::PartialShape infer_output_shape(const ov::TensorVector& inputs, bool flatten) { + ov::PartialShape out_shape = {ov::Dimension::dynamic(), ov::Dimension::dynamic(), ov::Dimension::dynamic(), 4}; if (flatten) { - out_shape = ngraph::PartialShape{ngraph::Dimension::dynamic(), 4}; + out_shape = ov::PartialShape{ov::Dimension::dynamic(), 4}; } - const auto priors_shape = inputs[priors_port]->get_partial_shape(); - const auto feature_map_shape = inputs[feature_map_port]->get_partial_shape(); + const auto priors_shape = inputs[priors_port].get_shape(); + const auto feature_map_shape = inputs[feature_map_port].get_shape(); - if (priors_shape.rank().is_dynamic() || feature_map_shape.rank().is_dynamic()) { + if (!ov::shape_size(priors_shape) || !ov::shape_size(feature_map_shape)) { return out_shape; } @@ -40,17 +37,21 @@ ngraph::PartialShape infer_output_shape(const std::vector(featmap_height * featmap_width * num_priors)), 4}; } else { - out_shape = ngraph::PartialShape{featmap_height, featmap_width, num_priors, 4}; + out_shape = ov::PartialShape{ov::Dimension(static_cast(featmap_height)), + ov::Dimension(static_cast(featmap_width)), + ov::Dimension(static_cast(num_priors)), + 4}; } return out_shape; } InfoForEDPriorGrid get_info_for_ed_prior_grid_eval( - const std::shared_ptr& prior_grid, - const std::vector>& inputs) { + const std::shared_ptr& prior_grid, + const ov::TensorVector& inputs) { InfoForEDPriorGrid result; auto attrs = prior_grid->get_attrs(); @@ -67,19 +68,19 @@ InfoForEDPriorGrid get_info_for_ed_prior_grid_eval( } } // namespace experimental_prior_grid -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto info = experimental_prior_grid::get_info_for_ed_prior_grid_eval(op, inputs); - using T = typename ngraph::element_type_traits::value_type; - outputs[0]->set_shape(info.output_shape); - ov::reference::experimental_detectron_prior_grid_generator(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - inputs[2]->get_shape(), - outputs[0]->get_data_ptr(), + using T = typename ov::element_type_traits::value_type; + outputs[0].set_shape(info.output_shape); + ov::reference::experimental_detectron_prior_grid_generator(inputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), + inputs[2].get_shape(), + outputs[0].data(), info.grid_h, info.grid_w, info.stride_h, @@ -89,96 +90,80 @@ bool evaluate(const std::shared_ptr -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate( + ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/experimental_detectron_proposal_single_image.cpp b/src/plugins/template/backend/ops/experimental_detectron_proposal_single_image.cpp index df064504a28126..9a933181ec7a90 100644 --- a/src/plugins/template/backend/ops/experimental_detectron_proposal_single_image.cpp +++ b/src/plugins/template/backend/ops/experimental_detectron_proposal_single_image.cpp @@ -7,10 +7,10 @@ #include "evaluate_node.hpp" #include "evaluates_map.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { const auto attrs = op->get_attrs(); size_t post_nms_count = 0; @@ -22,28 +22,26 @@ bool evaluate(const std::shared_ptr(attrs.post_nms_count); } - const ngraph::Shape output_rois_shape = ngraph::Shape{post_nms_count, 4}; - const ngraph::Shape output_scores_shape = ngraph::Shape{post_nms_count}; + const ov::Shape output_rois_shape = ov::Shape{post_nms_count, 4}; + const ov::Shape output_scores_shape = ov::Shape{post_nms_count}; const auto output_type = op->get_input_element_type(0); - const auto im_info_shape = inputs[0]->get_shape(); - const auto anchors_shape = inputs[1]->get_shape(); - const auto deltas_shape = inputs[2]->get_shape(); - const auto scores_shape = inputs[3]->get_shape(); + const auto im_info_shape = inputs[0].get_shape(); + const auto anchors_shape = inputs[1].get_shape(); + const auto deltas_shape = inputs[2].get_shape(); + const auto scores_shape = inputs[3].get_shape(); const auto im_info_data = get_floats(inputs[0], im_info_shape); const auto anchors_data = get_floats(inputs[1], anchors_shape); const auto deltas_data = get_floats(inputs[2], deltas_shape); const auto scores_data = get_floats(inputs[3], scores_shape); - std::vector output_rois(ngraph::shape_size(output_rois_shape)); - std::vector output_scores(ngraph::shape_size(output_scores_shape)); + std::vector output_rois(ov::shape_size(output_rois_shape)); + std::vector output_scores(ov::shape_size(output_scores_shape)); - outputs[0]->set_element_type(output_type); - outputs[0]->set_shape(output_rois_shape); - outputs[1]->set_element_type(output_type); - outputs[1]->set_shape(output_scores_shape); + outputs[0].set_shape(output_rois_shape); + outputs[1].set_shape(output_scores_shape); ov::reference::experimental_detectron_proposals_single_image(im_info_data.data(), anchors_data.data(), @@ -56,8 +54,8 @@ bool evaluate(const std::shared_ptrget_data_ptr(), - outputs[1]->get_data_ptr(), + ov::reference::experimental_detectron_proposals_single_image_postprocessing(outputs[0].data(), + outputs[1].data(), output_type, output_rois, output_scores, @@ -68,97 +66,95 @@ bool evaluate(const std::shared_ptr -bool evaluate_node( - std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate( - ov::as_type_ptr(node), + case ov::element::boolean: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate( - ov::as_type_ptr(node), + case ov::element::bf16: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate( - ov::as_type_ptr(node), + case ov::element::f16: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate( - ov::as_type_ptr(node), + case ov::element::f64: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate( - ov::as_type_ptr(node), + case ov::element::f32: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate( - ov::as_type_ptr(node), + case ov::element::i4: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate( - ov::as_type_ptr(node), + case ov::element::i8: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate( - ov::as_type_ptr(node), + case ov::element::i16: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate( - ov::as_type_ptr(node), + case ov::element::i32: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate( - ov::as_type_ptr(node), + case ov::element::i64: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate( - ov::as_type_ptr(node), + case ov::element::u1: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate( - ov::as_type_ptr(node), + case ov::element::u4: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate( - ov::as_type_ptr(node), + case ov::element::u8: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate( - ov::as_type_ptr(node), + case ov::element::u16: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate( - ov::as_type_ptr(node), + case ov::element::u32: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate( - ov::as_type_ptr(node), + case ov::element::u64: + return evaluate( + ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/experimental_detectron_roi_feature_extractor.cpp b/src/plugins/template/backend/ops/experimental_detectron_roi_feature_extractor.cpp index 4aaac9f381522e..847eb7f62e8b89 100644 --- a/src/plugins/template/backend/ops/experimental_detectron_roi_feature_extractor.cpp +++ b/src/plugins/template/backend/ops/experimental_detectron_roi_feature_extractor.cpp @@ -2,26 +2,25 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluates_map.hpp" -#include "evaluate_node.hpp" #include "openvino/reference/experimental_detectron_roi_feature_extractor.hpp" -// clang-format on + +#include "evaluate_node.hpp" +#include "evaluates_map.hpp" namespace experimental_roi_feature { struct InfoForEDROIFeature { - ngraph::Shape output_rois_features_shape; - ngraph::Shape output_rois_shape; + ov::Shape output_rois_features_shape; + ov::Shape output_rois_shape; }; InfoForEDROIFeature get_info_for_ed_roi_feature( - const std::vector input_shapes, - const ngraph::op::v6::ExperimentalDetectronROIFeatureExtractor::Attributes& attrs) { + const std::vector input_shapes, + const ov::op::v6::ExperimentalDetectronROIFeatureExtractor::Attributes& attrs) { InfoForEDROIFeature result; size_t output_size = static_cast(attrs.output_size); - auto out_shape = ngraph::Shape{0, 0, output_size, output_size}; - auto out_rois_shape = ngraph::Shape{0, 4}; + auto out_shape = ov::Shape{0, 0, output_size, output_size}; + auto out_rois_shape = ov::Shape{0, 4}; auto rois_shape = input_shapes[0]; @@ -37,16 +36,16 @@ InfoForEDROIFeature get_info_for_ed_roi_feature( } } // namespace experimental_roi_feature -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { const auto attrs = op->get_attrs(); std::vector> input_data; - std::vector input_shapes; + std::vector input_shapes; for (const auto& input : inputs) { - const auto current_shape = input->get_shape(); + const auto current_shape = input.get_shape(); input_data.push_back(get_floats(input, current_shape)); input_shapes.push_back(current_shape); } @@ -57,13 +56,11 @@ bool evaluate(const std::shared_ptrget_input_element_type(0); - outputs[0]->set_element_type(output_type); - outputs[0]->set_shape(output_rois_features_shape); - outputs[1]->set_element_type(output_type); - outputs[1]->set_shape(output_rois_shape); + outputs[0].set_shape(output_rois_features_shape); + outputs[1].set_shape(output_rois_shape); - std::vector output_rois_features(ngraph::shape_size(output_rois_features_shape)); - std::vector output_rois(ngraph::shape_size(output_rois_shape)); + std::vector output_rois_features(ov::shape_size(output_rois_features_shape)); + std::vector output_rois(ov::shape_size(output_rois_shape)); ov::reference::experimental_detectron_roi_feature_extractor(input_data, input_shapes, @@ -71,8 +68,8 @@ bool evaluate(const std::shared_ptrget_data_ptr(), - outputs[1]->get_data_ptr(), + ov::reference::experimental_detectron_roi_feature_extractor_postprocessing(outputs[0].data(), + outputs[1].data(), output_type, output_rois_features, output_rois, @@ -83,96 +80,80 @@ bool evaluate(const std::shared_ptr -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate( + ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/experimental_detectron_topk_rois.cpp b/src/plugins/template/backend/ops/experimental_detectron_topk_rois.cpp index cd03df2f38ccb4..ea05aea182f117 100644 --- a/src/plugins/template/backend/ops/experimental_detectron_topk_rois.cpp +++ b/src/plugins/template/backend/ops/experimental_detectron_topk_rois.cpp @@ -6,113 +6,96 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; size_t max_rois = op->get_max_rois(); - outputs[0]->set_shape(ngraph::Shape{max_rois, 4}); - ov::reference::experimental_detectron_topk_rois(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), + outputs[0].set_shape(ov::Shape{max_rois, 4}); + ov::reference::experimental_detectron_topk_rois(inputs[0].data(), + inputs[1].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), max_rois, - outputs[0]->get_data_ptr()); + outputs[0].data()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/extract_image_patches.cpp b/src/plugins/template/backend/ops/extract_image_patches.cpp index d78a21e984b3fb..f1b087e3c44147 100644 --- a/src/plugins/template/backend/ops/extract_image_patches.cpp +++ b/src/plugins/template/backend/ops/extract_image_patches.cpp @@ -6,94 +6,93 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; ov::reference::extract_image_patches(op, - inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - outputs[0]->get_shape()); + inputs[0].data(), + outputs[0].data(), + inputs[0].get_shape(), + outputs[0].get_shape()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), + case ov::element::Type_t::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::Type_t::bf16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::f16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::f64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::f32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::i4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::i8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::i16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::i32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::i64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::u1: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::u4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::u8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::u16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::u32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::Type_t::u64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/fft.cpp b/src/plugins/template/backend/ops/fft.cpp index db4620270faaf9..6ee238c0b4cf14 100644 --- a/src/plugins/template/backend/ops/fft.cpp +++ b/src/plugins/template/backend/ops/fft.cpp @@ -11,16 +11,16 @@ namespace fft_v7 { struct InfoForFFT7 { std::vector input_data; std::vector axes_data; - ngraph::Shape input_data_shape; - ngraph::Shape axes_data_shape; - ngraph::Shape output_shape; + ov::Shape input_data_shape; + ov::Shape axes_data_shape; + ov::Shape output_shape; }; -InfoForFFT7 get_info_for_fft7_eval(const std::vector>& inputs) { +InfoForFFT7 get_info_for_fft7_eval(const ov::TensorVector& inputs) { InfoForFFT7 result; - result.input_data_shape = inputs[0]->get_shape(); - result.axes_data_shape = inputs[1]->get_shape(); + result.input_data_shape = inputs[0].get_shape(); + result.axes_data_shape = inputs[1].get_shape(); result.input_data = get_floats(inputs[0], result.input_data_shape); result.axes_data = get_integers(inputs[1], result.axes_data_shape); @@ -48,14 +48,12 @@ InfoForFFT7 get_info_for_fft7_eval(const std::vector -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { auto info = fft_v7::get_info_for_fft7_eval(inputs); - outputs[0]->set_shape(info.output_shape); + outputs[0].set_shape(info.output_shape); - std::vector fft_result(ngraph::shape_size(info.output_shape), 0.0f); + std::vector fft_result(ov::shape_size(info.output_shape), 0.0f); ov::reference::fft(info.input_data.data(), info.input_data_shape, info.axes_data.data(), @@ -69,14 +67,12 @@ bool evaluate(const std::shared_ptr& op, return true; } -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { auto info = fft_v7::get_info_for_fft7_eval(inputs); - outputs[0]->set_shape(info.output_shape); + outputs[0].set_shape(info.output_shape); - std::vector fft_result(ngraph::shape_size(info.output_shape), 0.0f); + std::vector fft_result(ov::shape_size(info.output_shape), 0.0f); ov::reference::fft(info.input_data.data(), info.input_data_shape, info.axes_data.data(), @@ -91,95 +87,93 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/gather.cpp b/src/plugins/template/backend/ops/gather.cpp index 9bb9799dc0d664..027a6c8cca1df7 100644 --- a/src/plugins/template/backend/ops/gather.cpp +++ b/src/plugins/template/backend/ops/gather.cpp @@ -6,24 +6,24 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - if (op->get_input_element_type(1) == ngraph::element::i64) { - ov::reference::gather(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + if (op->get_input_element_type(1) == ov::element::i64) { + ov::reference::gather(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), op->get_input_shape(0), op->get_input_shape(1), op->get_output_shape(0), op->get_axis(), op->get_batch_dims()); - } else if (op->get_input_element_type(1) == ngraph::element::i32) { - ov::reference::gather(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), + } else if (op->get_input_element_type(1) == ov::element::i32) { + ov::reference::gather(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), op->get_input_shape(0), op->get_input_shape(1), op->get_output_shape(0), @@ -36,50 +36,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/gather_elements.cpp b/src/plugins/template/backend/ops/gather_elements.cpp index 9c7ac6e892cfa4..e919dc14e166a0 100644 --- a/src/plugins/template/backend/ops/gather_elements.cpp +++ b/src/plugins/template/backend/ops/gather_elements.cpp @@ -6,31 +6,31 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ngraph::Shape params_shape = inputs[0]->get_shape(); - ngraph::Shape indices_shape = inputs[1]->get_shape(); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::Shape params_shape = inputs[0].get_shape(); + ov::Shape indices_shape = inputs[1].get_shape(); - outputs[0]->set_shape(indices_shape); + outputs[0].set_shape(indices_shape); - if (inputs[1]->get_element_type() == ngraph::element::i64) { - ov::reference::gather_elements(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - outputs[0]->get_shape(), + if (inputs[1].get_element_type() == ov::element::i64) { + ov::reference::gather_elements(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), + outputs[0].get_shape(), op->get_axis()); - } else if (inputs[1]->get_element_type() == ngraph::element::i32) { - ov::reference::gather_elements(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - outputs[0]->get_shape(), + } else if (inputs[1].get_element_type() == ov::element::i32) { + ov::reference::gather_elements(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), + outputs[0].get_shape(), op->get_axis()); } else { OPENVINO_THROW("Unexpected indices type"); @@ -40,80 +40,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/gather_nd.cpp b/src/plugins/template/backend/ops/gather_nd.cpp index 97127a297d287d..373fb57eeb6074 100644 --- a/src/plugins/template/backend/ops/gather_nd.cpp +++ b/src/plugins/template/backend/ops/gather_nd.cpp @@ -6,26 +6,26 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - if (op->get_input_element_type(1) == ngraph::element::i64) { - ov::reference::gather_nd(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - outputs[0]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + if (op->get_input_element_type(1) == ov::element::i64) { + ov::reference::gather_nd(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), + outputs[0].get_shape(), static_cast(op->get_batch_dims())); - } else if (op->get_input_element_type(1) == ngraph::element::i32) { - ov::reference::gather_nd(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - outputs[0]->get_shape(), + } else if (op->get_input_element_type(1) == ov::element::i32) { + ov::reference::gather_nd(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), + outputs[0].get_shape(), static_cast(op->get_batch_dims())); } else { OPENVINO_THROW("Unexpected indices type for GatherND operation"); @@ -33,26 +33,26 @@ bool evaluate(const std::shared_ptr& op, return true; } -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - if (op->get_input_element_type(1) == ngraph::element::i64) { - ov::reference::gather_nd(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - outputs[0]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + if (op->get_input_element_type(1) == ov::element::i64) { + ov::reference::gather_nd(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), + outputs[0].get_shape(), static_cast(op->get_batch_dims())); - } else if (op->get_input_element_type(1) == ngraph::element::i32) { - ov::reference::gather_nd(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - outputs[0]->get_shape(), + } else if (op->get_input_element_type(1) == ov::element::i32) { + ov::reference::gather_nd(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), + outputs[0].get_shape(), static_cast(op->get_batch_dims())); } else { OPENVINO_THROW("Unexpected indices type for GatherND operation"); @@ -61,103 +61,93 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/gather_tree.cpp b/src/plugins/template/backend/ops/gather_tree.cpp index 1aec9368d7cd4f..1c06cec35d34f4 100644 --- a/src/plugins/template/backend/ops/gather_tree.cpp +++ b/src/plugins/template/backend/ops/gather_tree.cpp @@ -6,98 +6,29 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - ov::reference::gather_tree(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - inputs[3]->get_data_ptr(), - outputs[0]->get_data_ptr(), +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + ov::reference::gather_tree(static_cast(inputs[0].data()), + static_cast(inputs[1].data()), + static_cast(inputs[2].data()), + static_cast(inputs[3].data()), + static_cast(outputs[0].data()), op->get_input_shape(0), op->get_input_shape(1), op->get_input_shape(2), op->get_input_shape(3), - inputs[1]->get_element_type()); + inputs[1].get_element_type()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); - switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); - } + return evaluate(ov::as_type_ptr(node), outputs, inputs); } diff --git a/src/plugins/template/backend/ops/gelu.cpp b/src/plugins/template/backend/ops/gelu.cpp index 0b994fedca4536..dae4e32e967dae 100644 --- a/src/plugins/template/backend/ops/gelu.cpp +++ b/src/plugins/template/backend/ops/gelu.cpp @@ -6,120 +6,114 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::gelu(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::op::GeluApproximationMode::ERF, - ngraph::shape_size(inputs[0]->get_shape())); +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::gelu(inputs[0].data(), + outputs[0].data(), + ov::op::GeluApproximationMode::ERF, + ov::shape_size(inputs[0].get_shape())); return true; } -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::gelu(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::gelu(inputs[0].data(), + outputs[0].data(), op->get_approximation_mode(), - ngraph::shape_size(inputs[0]->get_shape())); + ov::shape_size(inputs[0].get_shape())); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/generate_proposal.cpp b/src/plugins/template/backend/ops/generate_proposal.cpp index 53571e113e9b67..bbdb0a140c191d 100644 --- a/src/plugins/template/backend/ops/generate_proposal.cpp +++ b/src/plugins/template/backend/ops/generate_proposal.cpp @@ -7,10 +7,10 @@ #include "evaluate_node.hpp" #include "evaluates_map.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { const auto& attrs = op->get_attrs(); if (attrs.post_nms_count < 0) { @@ -21,10 +21,10 @@ bool evaluate(const std::shared_ptr& op, const auto& output_type = op->get_input_element_type(0); - const auto& im_info_shape = inputs[0]->get_shape(); - const auto& anchors_shape = inputs[1]->get_shape(); - const auto& deltas_shape = inputs[2]->get_shape(); - const auto& scores_shape = inputs[3]->get_shape(); + const auto& im_info_shape = inputs[0].get_shape(); + const auto& anchors_shape = inputs[1].get_shape(); + const auto& deltas_shape = inputs[2].get_shape(); + const auto& scores_shape = inputs[3].get_shape(); const auto im_info_data = get_floats(inputs[0], im_info_shape); const auto anchors_data = get_floats(inputs[1], anchors_shape); @@ -50,22 +50,19 @@ bool evaluate(const std::shared_ptr& op, size_t num_selected = static_cast(std::accumulate(output_num.begin(), output_num.end(), 0)); - ngraph::Shape output_rois_shape = ngraph::Shape{num_selected, 4}; - ngraph::Shape output_scores_shape = ngraph::Shape{num_selected}; + ov::Shape output_rois_shape = ov::Shape{num_selected, 4}; + ov::Shape output_scores_shape = ov::Shape{num_selected}; - outputs[0]->set_element_type(output_type); - outputs[0]->set_shape(output_rois_shape); - outputs[1]->set_element_type(output_type); - outputs[1]->set_shape(output_scores_shape); + outputs[0].set_shape(output_rois_shape); + outputs[1].set_shape(output_scores_shape); const auto& roi_num_type = op->get_output_element_type(2); - ngraph::Shape output_roi_num_shape = ngraph::Shape{im_info_shape[0]}; - outputs[2]->set_element_type(roi_num_type); - outputs[2]->set_shape(output_roi_num_shape); + ov::Shape output_roi_num_shape = ov::Shape{im_info_shape[0]}; + outputs[2].set_shape(output_roi_num_shape); - ov::reference::generate_proposals_postprocessing(outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), - outputs[2]->get_data_ptr(), + ov::reference::generate_proposals_postprocessing(outputs[0].data(), + outputs[1].data(), + outputs[2].data(), output_type, roi_num_type, output_rois, @@ -78,80 +75,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/greater.cpp b/src/plugins/template/backend/ops/greater.cpp index 6df8f4c73e372d..7f8d28389933f0 100644 --- a/src/plugins/template/backend/ops/greater.cpp +++ b/src/plugins/template/backend/ops/greater.cpp @@ -6,72 +6,64 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - const auto in0_data_ptr = inputs[0]->get_data_ptr(); - const auto in1_data_ptr = inputs[1]->get_data_ptr(); - const auto out_data_ptr = outputs[0]->get_data_ptr(); - const auto in0_shape = inputs[0]->get_shape(); - const auto in1_shape = inputs[1]->get_shape(); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using ET = typename ov::element_type_traits::value_type; + using BT = typename ov::element_type_traits::value_type; + const auto in0_data_ptr = inputs[0].data(); + const auto in1_data_ptr = inputs[1].data(); + const auto out_data_ptr = outputs[0].data(); + const auto in0_shape = inputs[0].get_shape(); + const auto in1_shape = inputs[1].get_shape(); const auto broadcast_spec = op->get_autob(); - ov::reference::greater::value_type, - typename ngraph::element_type_traits::value_type>( - in0_data_ptr, - in1_data_ptr, - out_data_ptr, - in0_shape, - in1_shape, - broadcast_spec); + ov::reference::greater(in0_data_ptr, in1_data_ptr, out_data_ptr, in0_shape, in1_shape, broadcast_spec); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/grid_sample.cpp b/src/plugins/template/backend/ops/grid_sample.cpp index 20e74f5699a642..f47dba333f3c4e 100644 --- a/src/plugins/template/backend/ops/grid_sample.cpp +++ b/src/plugins/template/backend/ops/grid_sample.cpp @@ -6,19 +6,20 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using ET = typename ov::element_type_traits::value_type; const auto& attributes = op->get_attributes(); - ngraph::element::Type grid_et = op->get_input_element_type(1); + ov::element::Type grid_et = op->get_input_element_type(1); switch (grid_et) { - case ngraph::element::Type_t::f32: - ov::reference::grid_sample(outputs[0]->get_data_ptr(), - inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), + case ov::element::f32: + ov::reference::grid_sample(outputs[0].data(), + inputs[0].data(), + inputs[1].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), attributes.align_corners, attributes.mode, attributes.padding_mode); @@ -30,80 +31,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/grn.cpp b/src/plugins/template/backend/ops/grn.cpp index 74a5fceaa23f09..4eb748373f5005 100644 --- a/src/plugins/template/backend/ops/grn.cpp +++ b/src/plugins/template/backend/ops/grn.cpp @@ -6,61 +6,55 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::grn(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - op->get_bias(), - inputs[0]->get_shape()); +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using ET = typename ov::element_type_traits::value_type; + ov::reference::grn(inputs[0].data(), outputs[0].data(), op->get_bias(), inputs[0].get_shape()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/group_convolution.cpp b/src/plugins/template/backend/ops/group_convolution.cpp index 6dc851171d2d5b..be1a6601dd2d3f 100644 --- a/src/plugins/template/backend/ops/group_convolution.cpp +++ b/src/plugins/template/backend/ops/group_convolution.cpp @@ -6,104 +6,72 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - const auto filter_data = inputs[1]->get_data_ptr(); - auto out_data_ptr = outputs[0]->get_data_ptr(); - const auto in_data_ptr = inputs[0]->get_data_ptr(); - const auto& out_shape = outputs[0]->get_shape(); - const auto& in_shape = inputs[0]->get_shape(); - const auto& filter_shape = inputs[1]->get_shape(); - ov::reference::group_convolution::value_type>(in_data_ptr, - filter_data, - out_data_ptr, - in_shape, - filter_shape, - out_shape, - op->get_strides(), - op->get_dilations(), - op->get_pads_begin(), - op->get_pads_end()); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using ET = typename ov::element_type_traits::value_type; + const auto filter_data = inputs[1].data(); + auto out_data_ptr = outputs[0].data(); + const auto in_data_ptr = inputs[0].data(); + const auto& out_shape = outputs[0].get_shape(); + const auto& in_shape = inputs[0].get_shape(); + const auto& filter_shape = inputs[1].get_shape(); + ov::reference::group_convolution(in_data_ptr, + filter_data, + out_data_ptr, + in_shape, + filter_shape, + out_shape, + op->get_strides(), + op->get_dilations(), + op->get_pads_begin(), + op->get_pads_end()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/group_convolution_backprop_data.cpp b/src/plugins/template/backend/ops/group_convolution_backprop_data.cpp index ec58d1efdb83e7..26f1c44e57f9c6 100644 --- a/src/plugins/template/backend/ops/group_convolution_backprop_data.cpp +++ b/src/plugins/template/backend/ops/group_convolution_backprop_data.cpp @@ -6,122 +6,105 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - const auto in_data_ptr = inputs[0]->get_data_ptr(); - const auto filter_data_ptr = inputs[1]->get_data_ptr(); - const auto out_data_ptr = outputs[0]->get_data_ptr(); - const auto in_shape = inputs[0]->get_shape(); - const auto filter_shape = inputs[1]->get_shape(); - const auto out_shape = outputs[0]->get_shape(); - ov::reference::group_convolution_backprop_data::value_type>( - in_data_ptr, - filter_data_ptr, - out_data_ptr, - in_shape, - filter_shape, - out_shape, - op->get_strides(), - op->get_dilations(), - op->get_pads_begin(), - op->get_pads_end(), - op->get_output_padding()); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using ET = typename ov::element_type_traits::value_type; + const auto in_data_ptr = inputs[0].data(); + const auto filter_data_ptr = inputs[1].data(); + const auto out_data_ptr = outputs[0].data(); + const auto in_shape = inputs[0].get_shape(); + const auto filter_shape = inputs[1].get_shape(); + const auto out_shape = outputs[0].get_shape(); + ov::reference::group_convolution_backprop_data(in_data_ptr, + filter_data_ptr, + out_data_ptr, + in_shape, + filter_shape, + out_shape, + op->get_strides(), + op->get_dilations(), + op->get_pads_begin(), + op->get_pads_end(), + op->get_output_padding()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate( - ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), + outputs, + inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/group_normalization.cpp b/src/plugins/template/backend/ops/group_normalization.cpp index 71481b560ac2c2..eb339388822f40 100644 --- a/src/plugins/template/backend/ops/group_normalization.cpp +++ b/src/plugins/template/backend/ops/group_normalization.cpp @@ -9,16 +9,17 @@ using namespace ov; -template +template bool evaluate(const std::shared_ptr& node, - const ov::HostTensorVector& outputs, - const ov::HostTensorVector& inputs) { - outputs[0]->set_shape(inputs[0]->get_shape()); - ov::reference::group_normalization(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using ET = typename ov::element_type_traits::value_type; + outputs[0].set_shape(inputs[0].get_shape()); + ov::reference::group_normalization(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), + outputs[0].data(), + inputs[0].get_shape(), static_cast(node->get_num_groups()), node->get_epsilon()); return true; @@ -26,18 +27,18 @@ bool evaluate(const std::shared_ptr& node, template <> bool evaluate_node(std::shared_ptr node, - const ov::HostTensorVector& outputs, - const ov::HostTensorVector& inputs) { + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { switch (node->get_input_element_type(0)) { - case element::Type_t::bf16: - return evaluate(as_type_ptr(node), outputs, inputs); - case element::Type_t::f16: - return evaluate(as_type_ptr(node), outputs, inputs); - case element::Type_t::f64: - return evaluate(as_type_ptr(node), outputs, inputs); - case element::Type_t::f32: - return evaluate(as_type_ptr(node), outputs, inputs); + case element::bf16: + return evaluate(as_type_ptr(node), outputs, inputs); + case element::f16: + return evaluate(as_type_ptr(node), outputs, inputs); + case element::f64: + return evaluate(as_type_ptr(node), outputs, inputs); + case element::f32: + return evaluate(as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), "in evaluate_node()"); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/gru_cell.cpp b/src/plugins/template/backend/ops/gru_cell.cpp index b34b5ea945965c..cbd431121fb058 100644 --- a/src/plugins/template/backend/ops/gru_cell.cpp +++ b/src/plugins/template/backend/ops/gru_cell.cpp @@ -7,22 +7,22 @@ #include "evaluate_node.hpp" #include "ov_ops/augru_cell.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::gru_cell(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - inputs[2]->get_data_ptr(), - inputs[2]->get_shape(), - inputs[3]->get_data_ptr(), - inputs[3]->get_shape(), - inputs[4]->get_data_ptr(), - inputs[4]->get_shape(), - outputs[0]->get_data_ptr(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::gru_cell(inputs[0].data(), + inputs[0].get_shape(), + inputs[1].data(), + inputs[1].get_shape(), + inputs[2].data(), + inputs[2].get_shape(), + inputs[3].data(), + inputs[3].get_shape(), + inputs[4].data(), + inputs[4].get_shape(), + outputs[0].data(), op->get_activations()[0], op->get_activations()[1], op->get_clip(), @@ -30,154 +30,118 @@ bool evaluate(const std::shared_ptr& op, return true; } -template +template bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::gru_cell(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - inputs[2]->get_data_ptr(), - inputs[2]->get_shape(), - inputs[3]->get_data_ptr(), - inputs[3]->get_shape(), - inputs[4]->get_data_ptr(), - inputs[4]->get_shape(), - outputs[0]->get_data_ptr(), + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::gru_cell(inputs[0].data(), + inputs[0].get_shape(), + inputs[1].data(), + inputs[1].get_shape(), + inputs[2].data(), + inputs[2].get_shape(), + inputs[3].data(), + inputs[3].get_shape(), + inputs[4].data(), + inputs[4].get_shape(), + outputs[0].data(), op->get_activations()[0], op->get_activations()[1], op->get_clip(), op->get_linear_before_reset(), - inputs[5]->get_data_ptr()); + inputs[5].data()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/hard_sigmoid.cpp b/src/plugins/template/backend/ops/hard_sigmoid.cpp index 9cf2a16f5dace1..9d3b9f56b53115 100644 --- a/src/plugins/template/backend/ops/hard_sigmoid.cpp +++ b/src/plugins/template/backend/ops/hard_sigmoid.cpp @@ -2,99 +2,65 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluate_node.hpp" #include "openvino/reference/hard_sigmoid.hpp" -// clang-format on -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::hard_sigmoid(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr()[0], - inputs[2]->get_data_ptr()[0], - outputs[0]->get_data_ptr(), - ngraph::shape_size(outputs[0]->get_shape())); +#include "evaluate_node.hpp" + +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::hard_sigmoid(inputs[0].data(), + inputs[1].data()[0], + inputs[2].data()[0], + outputs[0].data(), + ov::shape_size(outputs[0].get_shape())); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/if.cpp b/src/plugins/template/backend/ops/if.cpp index df93652d103bdb..8795d0bfa789b6 100644 --- a/src/plugins/template/backend/ops/if.cpp +++ b/src/plugins/template/backend/ops/if.cpp @@ -6,23 +6,24 @@ #include "evaluate_node.hpp" #include "evaluates_map.hpp" +#include "shape_util.hpp" namespace if_op { -bool call(const ngraph::HostTensorVector& func_outputs, - const ngraph::HostTensorVector& func_inputs, - const std::shared_ptr& function) { - // map function params -> ngraph::HostTensor - std::unordered_map> tensor_map; +bool call(ov::TensorVector& func_outputs, + const ov::TensorVector& func_inputs, + const std::shared_ptr& function) { + // map function params -> ov::Tensor + std::unordered_map tensor_map; size_t input_count = 0; for (const auto& param : function->get_parameters()) { for (size_t i = 0; i < param->get_output_size(); ++i) { - ngraph::descriptor::Tensor* tensor = ¶m->output(i).get_tensor(); + ov::descriptor::Tensor* tensor = ¶m->output(i).get_tensor(); tensor_map.insert({tensor, func_inputs[input_count++]}); } } - std::unordered_map, size_t> results_map; - // map function outputs -> ngraph::HostTensor + std::unordered_map, size_t> results_map; + // map function outputs -> ov::HostTensor for (size_t output_count = 0; output_count < function->get_results().size(); ++output_count) { auto output = function->get_results()[output_count]; results_map[output] = output_count; @@ -30,27 +31,27 @@ bool call(const ngraph::HostTensorVector& func_outputs, // for each ordered op in the graph for (const auto& op : function->get_ordered_ops()) { - if (ngraph::op::is_parameter(op)) { + if (ov::op::util::is_parameter(op)) { continue; } // get op inputs from map - std::vector> op_inputs; + std::vector op_inputs; for (auto input : op->inputs()) { - ngraph::descriptor::Tensor* tensor = &input.get_tensor(); + ov::descriptor::Tensor* tensor = &input.get_tensor(); op_inputs.push_back(tensor_map.at(tensor)); } // get op outputs from map or create - std::vector> op_outputs; + std::vector op_outputs; for (size_t i = 0; i < op->get_output_size(); ++i) { - ngraph::descriptor::Tensor* tensor = &op->output(i).get_tensor(); - std::shared_ptr host_tensor; + ov::descriptor::Tensor* tensor = &op->output(i).get_tensor(); + ov::Tensor host_tensor; auto it = tensor_map.find(tensor); - if (ngraph::op::is_output(op)) { + if (ov::op::util::is_output(op)) { host_tensor = func_outputs[results_map[op]]; } else if (it == tensor_map.end()) { - host_tensor = std::make_shared(op->output(i)); + host_tensor = ov::Tensor(op->output(i)); tensor_map.insert({tensor, host_tensor}); } else { host_tensor = it->second; @@ -58,22 +59,18 @@ bool call(const ngraph::HostTensorVector& func_outputs, op_outputs.push_back(host_tensor); } op->validate_and_infer_types(); - OPENVINO_SUPPRESS_DEPRECATED_START if (!op->evaluate(op_outputs, op_inputs)) { - const auto& evaluates_map = ngraph::runtime::interpreter::get_evaluators_map(); + const auto& evaluates_map = ov::runtime::interpreter::get_evaluators_map(); auto it = evaluates_map.find(op->get_type_info()); if (!it->second(op, op_outputs, op_inputs)) { return false; } } - OPENVINO_SUPPRESS_DEPRECATED_END } return true; } -void function(const std::shared_ptr& function, - const ngraph::HostTensorVector& inputs, - ngraph::HostTensorVector& outputs) { +void function(const std::shared_ptr& function, const ov::TensorVector& inputs, ov::TensorVector& outputs) { const auto& parameters = function->get_parameters(); const auto& parametersNumber = parameters.size(); const auto& inputsNumber = inputs.size(); @@ -90,10 +87,10 @@ void function(const std::shared_ptr& function, const auto& parameterIndex = function->get_parameter_index(parameter); const auto& parameterShape = parameter->get_shape(); const auto& parameterType = parameter->get_element_type(); - const auto& parameterSize = ngraph::shape_size(parameterShape) * parameterType.size(); + const auto& parameterSize = ov::shape_size(parameterShape) * parameterType.size(); const auto& input = inputs[parameterIndex]; - const auto& inputSize = input->get_size_in_bytes(); + const auto& inputSize = input.get_byte_size(); NGRAPH_CHECK(parameterSize == inputSize, "Got parameter (", parameter->get_friendly_name(), @@ -109,22 +106,26 @@ void function(const std::shared_ptr& function, const auto& results = function->get_results(); outputs.reserve(results.size()); for (size_t i = 0; i < results.size(); ++i) { - outputs.push_back(std::make_shared()); + OPENVINO_SUPPRESS_DEPRECATED_START + ov::Shape res_shape = results[i]->get_output_partial_shape(0).is_static() ? results[i]->get_output_shape(0) + : ov::util::make_dynamic_shape(); + OPENVINO_SUPPRESS_DEPRECATED_END + outputs.push_back(ov::Tensor(results[i]->get_element_type(), res_shape)); } call(outputs, inputs, function); } -void if_reference(const std::vector>& bodies, - const std::vector& out_descs, - const std::vector& input_descs, - const ngraph::HostTensorVector& out, - const ngraph::HostTensorVector& args) { +void if_reference(const std::vector>& bodies, + const std::vector& out_descs, + const std::vector& input_descs, + ov::TensorVector& out, + const ov::TensorVector& args) { NGRAPH_CHECK(args.size() > 0, "If operation must have input condition value"); - auto condition_value = args[0]->get_data_ptr()[0]; - auto branch_index = (condition_value) ? ngraph::op::v8::If::THEN_BODY_INDEX : ngraph::op::v8::If::ELSE_BODY_INDEX; - ngraph::HostTensorVector inputs_to_body; - ngraph::HostTensorVector outs_from_body; + auto condition_value = args[0].data()[0]; + auto branch_index = (condition_value) ? ov::op::v8::If::THEN_BODY_INDEX : ov::op::v8::If::ELSE_BODY_INDEX; + ov::TensorVector inputs_to_body; + ov::TensorVector outs_from_body; inputs_to_body.resize(input_descs[branch_index].size()); auto inputs_size = args.size(); auto output_size = out.size(); @@ -140,17 +141,16 @@ void if_reference(const std::vector>& bodies, "Incorrect associating! If has not output with id ", out_descr->m_output_index); auto res = outs_from_body[out_descr->m_body_value_index]; - out[out_descr->m_output_index]->set_shape(res->get_shape()); - out[out_descr->m_output_index]->write(res->get_data_ptr(), res->get_size_in_bytes()); + out[out_descr->m_output_index].set_shape(res.get_shape()); + + res.copy_to(out[out_descr->m_output_index]); } } } // namespace if_op -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - std::vector> bodies; +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + std::vector> bodies; for (size_t i = 0; i < op->get_internal_subgraphs_size(); i++) { bodies.emplace_back(op->get_function(static_cast(i))); } @@ -171,46 +171,46 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); diff --git a/src/plugins/template/backend/ops/interpolate.cpp b/src/plugins/template/backend/ops/interpolate.cpp index c2f760c00524ba..16d3a425f5b486 100644 --- a/src/plugins/template/backend/ops/interpolate.cpp +++ b/src/plugins/template/backend/ops/interpolate.cpp @@ -7,39 +7,39 @@ #include "evaluate_node.hpp" #include "interpolate_shape_inference.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - ngraph::element::Type input_et = op->get_input_element_type(0); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + ov::element::Type input_et = op->get_input_element_type(0); switch (input_et) { - case ngraph::element::Type_t::f64: - ov::reference::interpolate(inputs[0]->get_data_ptr(), + case ov::element::f64: + ov::reference::interpolate(inputs[0].data(), op->get_input_partial_shape(0), - outputs[0]->get_data_ptr(), + outputs[0].data(), op->get_output_shape(0), op->get_attrs()); break; - case ngraph::element::Type_t::f32: - ov::reference::interpolate(inputs[0]->get_data_ptr(), + case ov::element::f32: + ov::reference::interpolate(inputs[0].data(), op->get_input_partial_shape(0), - outputs[0]->get_data_ptr(), + outputs[0].data(), op->get_output_shape(0), op->get_attrs()); break; - case ngraph::element::Type_t::f16: - ov::reference::interpolate(inputs[0]->get_data_ptr(), - op->get_input_partial_shape(0), - outputs[0]->get_data_ptr(), - op->get_output_shape(0), - op->get_attrs()); + case ov::element::f16: + ov::reference::interpolate(inputs[0].data(), + op->get_input_partial_shape(0), + outputs[0].data(), + op->get_output_shape(0), + op->get_attrs()); break; - case ngraph::element::Type_t::bf16: - ov::reference::interpolate(inputs[0]->get_data_ptr(), - op->get_input_partial_shape(0), - outputs[0]->get_data_ptr(), - op->get_output_shape(0), - op->get_attrs()); + case ov::element::bf16: + ov::reference::interpolate(inputs[0].data(), + op->get_input_partial_shape(0), + outputs[0].data(), + op->get_output_shape(0), + op->get_attrs()); break; default:; } @@ -47,78 +47,46 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); @@ -129,7 +97,7 @@ namespace eval { namespace interpolate { // The helpers below are similar to the internal utils used in evaluate method of v4::Intepolate core op // Those functions can be unified and moved to a common place -std::vector get_axes_vector(const ngraph::HostTensorVector& args, +std::vector get_axes_vector(const ov::TensorVector& args, size_t default_size, size_t axes_port, size_t max_num_of_ports) { @@ -138,18 +106,18 @@ std::vector get_axes_vector(const ngraph::HostTensorVector& args, if (num_of_inputs == max_num_of_ports) { auto axes_arg = args[axes_port]; - size_t num_of_axes = args[axes_port]->get_shape()[0]; + size_t num_of_axes = args[axes_port].get_shape()[0]; axes.reserve(num_of_axes); - if (axes_arg->get_element_type() == ov::element::i64) { - int64_t* axes_ptr = axes_arg->get_data_ptr(); + if (axes_arg.get_element_type() == ov::element::i64) { + int64_t* axes_ptr = axes_arg.data(); axes.insert(axes.end(), axes_ptr, axes_ptr + num_of_axes); - } else if (axes_arg->get_element_type() == ov::element::i32) { - int32_t* axes_ptr = axes_arg->get_data_ptr(); + } else if (axes_arg.get_element_type() == ov::element::i32) { + int32_t* axes_ptr = axes_arg.data(); for (size_t i = 0; i < num_of_axes; ++i) axes.push_back(axes_ptr[i]); } else { - OPENVINO_ASSERT(false, "Failed to process ", axes_arg->get_element_type()); + OPENVINO_THROW("Failed to process ", axes_arg.get_element_type()); } } else { for (size_t i = 0; i < default_size; ++i) { @@ -160,28 +128,28 @@ std::vector get_axes_vector(const ngraph::HostTensorVector& args, return axes; } -std::vector get_target_shape_vector(const ngraph::HostTensorVector& args, +std::vector get_target_shape_vector(const ov::TensorVector& args, size_t num_of_axes, size_t target_shape_port = 1) { std::vector target_shape; target_shape.reserve(num_of_axes); auto target_shape_arg = args[target_shape_port]; - if (target_shape_arg->get_element_type() == ov::element::i64) { - int64_t* target_shape_ptr = target_shape_arg->get_data_ptr(); + if (target_shape_arg.get_element_type() == ov::element::i64) { + int64_t* target_shape_ptr = target_shape_arg.data(); target_shape.insert(target_shape.end(), target_shape_ptr, target_shape_ptr + num_of_axes); - } else if (target_shape_arg->get_element_type() == ov::element::i32) { - int32_t* target_shape_ptr = target_shape_arg->get_data_ptr(); + } else if (target_shape_arg.get_element_type() == ov::element::i32) { + int32_t* target_shape_ptr = target_shape_arg.data(); for (size_t i = 0; i < num_of_axes; ++i) target_shape.push_back(target_shape_ptr[i]); } else { - OPENVINO_ASSERT(false, "Failed to process ", target_shape_arg->get_element_type()); + OPENVINO_THROW("Failed to process ", target_shape_arg.get_element_type()); } return target_shape; } -std::vector get_scales_vector(const ngraph::HostTensorVector& args, +std::vector get_scales_vector(const ov::TensorVector& args, const ov::Shape& input_shape, const ov::op::util::InterpolateBase::InterpolateAttrs& attrs, std::vector axes, @@ -189,7 +157,7 @@ std::vector get_scales_vector(const ngraph::HostTensorVector& args, std::vector scales; size_t num_of_axes = axes.size(); if (attrs.shape_calculation_mode == ov::op::util::InterpolateBase::ShapeCalcMode::SCALES) { - float* scales_ptr = args[scales_port]->get_data_ptr(); + float* scales_ptr = args[scales_port].data(); scales.insert(scales.end(), scales_ptr, scales_ptr + num_of_axes); } else { auto target_shape = get_target_shape_vector(args, num_of_axes); @@ -212,7 +180,7 @@ static void pad_input_data(const uint8_t* data_ptr, ov::CoordinateTransform input_transform(input_shape); ov::CoordinateTransform padded_transform(padded_input_shape); - for (const ngraph::Coordinate& input_coord : input_transform) { + for (const ov::Coordinate& input_coord : input_transform) { auto padded_coord = input_coord; size_t i = 0; for (size_t pad : pads_begin) { @@ -228,8 +196,8 @@ static void pad_input_data(const uint8_t* data_ptr, namespace v11 { bool evaluate_interpolate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { using namespace ov; constexpr size_t data_port = 0; @@ -237,16 +205,16 @@ bool evaluate_interpolate(const std::shared_ptr& op, constexpr size_t axes_port = 2; constexpr size_t max_num_of_ports = 3; - element::Type input_et = inputs[0]->get_element_type(); + element::Type input_et = inputs[0].get_element_type(); size_t type_size = input_et.size(); - PartialShape input_shape{inputs[data_port]->get_shape()}; + PartialShape input_shape{inputs[data_port].get_shape()}; auto m_attrs = op->get_attrs(); const auto ta = make_tensor_accessor(inputs); auto input_shapes = std::vector(); - std::transform(inputs.cbegin(), inputs.cend(), std::back_inserter(input_shapes), [](const HostTensorPtr& ht) { - return ht->get_shape(); + std::transform(inputs.cbegin(), inputs.cend(), std::back_inserter(input_shapes), [](const ov::Tensor& ht) { + return ht.get_shape(); }); const auto output_shape = ov::op::v11::shape_infer(op.get(), input_shapes, m_attrs.pads_begin, m_attrs.pads_end, ta).front(); @@ -256,17 +224,16 @@ bool evaluate_interpolate(const std::shared_ptr& op, padded_input_shape.emplace_back(m_attrs.pads_begin[i] + m_attrs.pads_end[i] + input_shape[i].get_length()); } - auto axes = get_axes_vector(inputs, inputs[1]->get_shape()[0], axes_port, max_num_of_ports); + auto axes = get_axes_vector(inputs, inputs[1].get_shape()[0], axes_port, max_num_of_ports); auto scales = get_scales_vector(inputs, padded_input_shape, m_attrs, axes, scales_sizes_port); Shape out_shape = output_shape.to_shape(); - outputs[0]->set_shape(out_shape); - outputs[0]->set_element_type(input_et); + outputs[0].set_shape(out_shape); size_t bytes_in_padded_input = shape_size(padded_input_shape) * type_size; std::vector padded_input_data(bytes_in_padded_input, 0); - const uint8_t* data_ptr = inputs[0]->get_data_ptr(); + const uint8_t* data_ptr = static_cast(inputs[0].data()); uint8_t* padded_data_ptr = padded_input_data.data(); pad_input_data(data_ptr, @@ -277,57 +244,57 @@ bool evaluate_interpolate(const std::shared_ptr& op, m_attrs.pads_begin); switch (input_et) { - case element::Type_t::f32: + case element::f32: ov::reference::interpolate(reinterpret_cast(padded_data_ptr), padded_input_shape, scales, axes, - outputs[0]->get_data_ptr(), + outputs[0].data(), out_shape, m_attrs); break; - case element::Type_t::bf16: + case element::bf16: ov::reference::interpolate(reinterpret_cast(padded_data_ptr), padded_input_shape, scales, axes, - outputs[0]->get_data_ptr(), + outputs[0].data(), out_shape, m_attrs); break; - case element::Type_t::f16: + case element::f16: ov::reference::interpolate(reinterpret_cast(padded_data_ptr), padded_input_shape, scales, axes, - outputs[0]->get_data_ptr(), + outputs[0].data(), out_shape, m_attrs); break; - case element::Type_t::u8: + case element::u8: ov::reference::interpolate(reinterpret_cast(padded_data_ptr), padded_input_shape, scales, axes, - outputs[0]->get_data_ptr(), + outputs[0].data(), out_shape, m_attrs); break; - case element::Type_t::i8: + case element::i8: ov::reference::interpolate(reinterpret_cast(padded_data_ptr), padded_input_shape, scales, axes, - outputs[0]->get_data_ptr(), + outputs[0].data(), out_shape, m_attrs); break; - case element::Type_t::i32: + case element::i32: ov::reference::interpolate(reinterpret_cast(padded_data_ptr), padded_input_shape, scales, axes, - outputs[0]->get_data_ptr(), + outputs[0].data(), out_shape, m_attrs); break; @@ -340,88 +307,55 @@ bool evaluate_interpolate(const std::shared_ptr& op, } // namespace interpolate } // namespace eval -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { return eval::interpolate::v11::evaluate_interpolate(op, outputs, inputs); } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/irdft.cpp b/src/plugins/template/backend/ops/irdft.cpp index 65a6093a2fda4e..4bf662d4e7b80c 100644 --- a/src/plugins/template/backend/ops/irdft.cpp +++ b/src/plugins/template/backend/ops/irdft.cpp @@ -12,18 +12,18 @@ namespace irfft_v9 { struct InfoForIRFFT9 { std::vector input_data; std::vector axes_data; - ngraph::Shape input_data_shape; - ngraph::Shape axes_data_shape; - ngraph::Shape fft_output_shape; - ngraph::Shape output_shape; + ov::Shape input_data_shape; + ov::Shape axes_data_shape; + ov::Shape fft_output_shape; + ov::Shape output_shape; int64_t last_signal_size; }; -InfoForIRFFT9 get_info_for_irfft9_eval(const std::vector>& inputs) { +InfoForIRFFT9 get_info_for_irfft9_eval(const ov::TensorVector& inputs) { InfoForIRFFT9 result; - result.input_data_shape = inputs[0]->get_shape(); - result.axes_data_shape = inputs[1]->get_shape(); + result.input_data_shape = inputs[0].get_shape(); + result.axes_data_shape = inputs[1].get_shape(); result.input_data = get_floats(inputs[0], result.input_data_shape); result.axes_data = get_integers(inputs[1], result.axes_data_shape); @@ -64,14 +64,12 @@ InfoForIRFFT9 get_info_for_irfft9_eval(const std::vector -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { auto info = irfft_v9::get_info_for_irfft9_eval(inputs); - outputs[0]->set_shape(info.output_shape); + outputs[0].set_shape(info.output_shape); - std::vector irfft_result(ngraph::shape_size(info.output_shape), 0.0f); + std::vector irfft_result(ov::shape_size(info.output_shape), 0.0f); ov::reference::irdft(info.input_data, info.input_data_shape, info.axes_data, @@ -86,50 +84,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/is_finite.cpp b/src/plugins/template/backend/ops/is_finite.cpp index 2ec4826a50b7ac..3f081149cf0ea7 100644 --- a/src/plugins/template/backend/ops/is_finite.cpp +++ b/src/plugins/template/backend/ops/is_finite.cpp @@ -2,36 +2,37 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluate_node.hpp" #include "openvino/reference/is_finite.hpp" -// clang-format on -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - ngraph::element::Type input_et = op->get_input_element_type(0); +#include "evaluate_node.hpp" +#include "openvino/core/type/element_type.hpp" + +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using BT = typename ov::element_type_traits::value_type; + ov::element::Type input_et = op->get_input_element_type(0); switch (input_et) { - case ngraph::element::Type_t::f64: - ov::reference::is_finite(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::f64: + ov::reference::is_finite(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape())); break; - case ngraph::element::Type_t::f32: - ov::reference::is_finite(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::f32: + ov::reference::is_finite(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape())); break; - case ngraph::element::Type_t::f16: - ov::reference::is_finite(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::f16: + ov::reference::is_finite(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape())); break; - case ngraph::element::Type_t::bf16: - ov::reference::is_finite(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::bf16: + ov::reference::is_finite(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape())); break; default: return false; @@ -40,70 +41,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/is_inf.cpp b/src/plugins/template/backend/ops/is_inf.cpp index 4509ced254446d..40255efce351b8 100644 --- a/src/plugins/template/backend/ops/is_inf.cpp +++ b/src/plugins/template/backend/ops/is_inf.cpp @@ -2,39 +2,39 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluate_node.hpp" #include "openvino/reference/is_inf.hpp" -// clang-format on -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - ngraph::element::Type input_et = op->get_input_element_type(0); +#include "evaluate_node.hpp" + +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using BT = typename ov::element_type_traits::value_type; + ov::element::Type input_et = op->get_input_element_type(0); switch (input_et) { - case ngraph::element::Type_t::f64: - ov::reference::is_inf(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape()), + case ov::element::f64: + ov::reference::is_inf(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape()), op->get_attributes()); break; - case ngraph::element::Type_t::f32: - ov::reference::is_inf(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape()), + case ov::element::f32: + ov::reference::is_inf(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape()), op->get_attributes()); break; - case ngraph::element::Type_t::f16: - ov::reference::is_inf(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape()), + case ov::element::f16: + ov::reference::is_inf(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape()), op->get_attributes()); break; - case ngraph::element::Type_t::bf16: - ov::reference::is_inf(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape()), + case ov::element::bf16: + ov::reference::is_inf(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape()), op->get_attributes()); break; default: @@ -44,50 +44,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/is_nan.cpp b/src/plugins/template/backend/ops/is_nan.cpp index 87ba4c34328be4..c188256538e550 100644 --- a/src/plugins/template/backend/ops/is_nan.cpp +++ b/src/plugins/template/backend/ops/is_nan.cpp @@ -2,36 +2,32 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluate_node.hpp" #include "openvino/reference/is_nan.hpp" -// clang-format on -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - ngraph::element::Type input_et = op->get_input_element_type(0); +#include "evaluate_node.hpp" + +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using BT = typename ov::element_type_traits::value_type; + ov::element::Type input_et = op->get_input_element_type(0); switch (input_et) { - case ngraph::element::Type_t::f64: - ov::reference::is_nan(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::f64: + ov::reference::is_nan(inputs[0].data(), outputs[0].data(), ov::shape_size(inputs[0].get_shape())); break; - case ngraph::element::Type_t::f32: - ov::reference::is_nan(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::f32: + ov::reference::is_nan(inputs[0].data(), outputs[0].data(), ov::shape_size(inputs[0].get_shape())); break; - case ngraph::element::Type_t::f16: - ov::reference::is_nan(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::f16: + ov::reference::is_nan(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape())); break; - case ngraph::element::Type_t::bf16: - ov::reference::is_nan(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::bf16: + ov::reference::is_nan(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape())); break; default: return false; @@ -40,50 +36,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/log.cpp b/src/plugins/template/backend/ops/log.cpp index c6b988dc66a16f..dea640a558443c 100644 --- a/src/plugins/template/backend/ops/log.cpp +++ b/src/plugins/template/backend/ops/log.cpp @@ -6,60 +6,55 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::log(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::log(inputs[0].data(), outputs[0].data(), ov::shape_size(inputs[0].get_shape())); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/log_softmax.cpp b/src/plugins/template/backend/ops/log_softmax.cpp index 415171d1db6caa..aa34a3905cb64c 100644 --- a/src/plugins/template/backend/ops/log_softmax.cpp +++ b/src/plugins/template/backend/ops/log_softmax.cpp @@ -6,97 +6,64 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; int64_t i_axis = op->get_axis(); if (i_axis < 0) { - i_axis += inputs[0]->get_partial_shape().rank().get_length(); + i_axis += inputs[0].get_shape().size(); } - ov::reference::log_softmax(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), + ov::reference::log_softmax(inputs[0].data(), + outputs[0].data(), op->get_output_shape(0), - ngraph::AxisSet{(size_t)i_axis}); + ov::AxisSet{(size_t)i_axis}); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/lrn.cpp b/src/plugins/template/backend/ops/lrn.cpp index 5522a695bea922..4c5aca69a5f0af 100644 --- a/src/plugins/template/backend/ops/lrn.cpp +++ b/src/plugins/template/backend/ops/lrn.cpp @@ -6,15 +6,13 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::lrn(inputs[0]->get_data_ptr(), +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::lrn(inputs[0].data(), op->get_reduction_axes(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), + outputs[0].data(), + inputs[0].get_shape(), op->get_alpha(), op->get_beta(), op->get_bias(), @@ -23,48 +21,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/lstm_cell.cpp b/src/plugins/template/backend/ops/lstm_cell.cpp index 12f81d29a26b13..1615c136cb3606 100644 --- a/src/plugins/template/backend/ops/lstm_cell.cpp +++ b/src/plugins/template/backend/ops/lstm_cell.cpp @@ -2,30 +2,29 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluate_node.hpp" #include "openvino/reference/lstm_cell.hpp" -// clang-format on -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::lstm_cell(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - inputs[2]->get_data_ptr(), - inputs[2]->get_shape(), - inputs[3]->get_data_ptr(), - inputs[3]->get_shape(), - inputs[4]->get_data_ptr(), - inputs[4]->get_shape(), - inputs[5]->get_data_ptr(), - inputs[5]->get_shape(), - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), +#include "evaluate_node.hpp" + +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::lstm_cell(inputs[0].data(), + inputs[0].get_shape(), + inputs[1].data(), + inputs[1].get_shape(), + inputs[2].data(), + inputs[2].get_shape(), + inputs[3].data(), + inputs[3].get_shape(), + inputs[4].data(), + inputs[4].get_shape(), + inputs[5].data(), + inputs[5].get_shape(), + outputs[0].data(), + outputs[1].data(), op->get_activations()[0], op->get_activations()[1], op->get_activations()[2], @@ -33,27 +32,27 @@ bool evaluate(const std::shared_ptr& op, return true; } -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::lstm_cell_v1(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - inputs[2]->get_data_ptr(), - inputs[2]->get_shape(), - inputs[3]->get_data_ptr(), - inputs[3]->get_shape(), - inputs[4]->get_data_ptr(), - inputs[4]->get_shape(), - inputs[5]->get_data_ptr(), - inputs[5]->get_shape(), - inputs[6]->get_data_ptr(), - inputs[6]->get_shape(), - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::lstm_cell_v1(inputs[0].data(), + inputs[0].get_shape(), + inputs[1].data(), + inputs[1].get_shape(), + inputs[2].data(), + inputs[2].get_shape(), + inputs[3].data(), + inputs[3].get_shape(), + inputs[4].data(), + inputs[4].get_shape(), + inputs[5].data(), + inputs[5].get_shape(), + inputs[6].data(), + inputs[6].get_shape(), + outputs[0].data(), + outputs[1].data(), op->get_activations()[0], op->get_activations()[1], op->get_activations()[2], @@ -64,50 +63,46 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); @@ -115,50 +110,46 @@ bool evaluate_node(std::shared_ptr node, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); diff --git a/src/plugins/template/backend/ops/matrix_nms.cpp b/src/plugins/template/backend/ops/matrix_nms.cpp index 3e13c542ec43b0..abf78dac65aa81 100644 --- a/src/plugins/template/backend/ops/matrix_nms.cpp +++ b/src/plugins/template/backend/ops/matrix_nms.cpp @@ -6,15 +6,17 @@ #include "evaluate_node.hpp" #include "evaluates_map.hpp" +#include "openvino/core/type/element_type.hpp" #include "openvino/reference/utils/nms_common.hpp" +#include "openvino/runtime/tensor.hpp" namespace matrix_nms_v8 { -using SortResultType = ngraph::op::v8::MatrixNms::SortResultType; +using SortResultType = ov::op::v8::MatrixNms::SortResultType; struct InfoForNMS { - ngraph::Shape selected_outputs_shape; - ngraph::Shape selected_indices_shape; - ngraph::Shape boxes_shape; - ngraph::Shape scores_shape; + ov::Shape selected_outputs_shape; + ov::Shape selected_indices_shape; + ov::Shape boxes_shape; + ov::Shape scores_shape; std::vector boxes_data; std::vector scores_data; size_t selected_outputs_shape_size; @@ -24,50 +26,42 @@ struct InfoForNMS { constexpr size_t boxes_port = 0; constexpr size_t scores_port = 1; -ngraph::PartialShape infer_selected_outputs_shape(const std::vector>& inputs, - int nms_top_k, - int keep_top_k) { - const auto boxes_ps = inputs[boxes_port]->get_partial_shape(); - const auto scores_ps = inputs[scores_port]->get_partial_shape(); - - ngraph::PartialShape result = {ngraph::Dimension::dynamic(), 6}; - - if (boxes_ps.rank().is_static() && scores_ps.rank().is_static()) { - const auto num_boxes_boxes = boxes_ps[1]; - if (num_boxes_boxes.is_static() && scores_ps[0].is_static() && scores_ps[1].is_static()) { - const auto num_boxes = num_boxes_boxes.get_length(); - const auto num_classes = scores_ps[1].get_length(); - int64_t max_output_boxes_per_class = 0; - if (nms_top_k >= 0) - max_output_boxes_per_class = std::min(num_boxes, (int64_t)nms_top_k); - else - max_output_boxes_per_class = num_boxes; - - auto max_output_boxes_per_batch = max_output_boxes_per_class * num_classes; - if (keep_top_k >= 0) - max_output_boxes_per_batch = std::min(max_output_boxes_per_batch, (int64_t)keep_top_k); - - result[0] = max_output_boxes_per_batch * scores_ps[0].get_length(); - } +ov::PartialShape infer_selected_outputs_shape(const ov::TensorVector& inputs, int nms_top_k, int keep_top_k) { + const auto boxes_ps = inputs[boxes_port].get_shape(); + const auto scores_ps = inputs[scores_port].get_shape(); + + ov::PartialShape result = {ov::Dimension::dynamic(), 6}; + + if (ov::shape_size(boxes_ps) && ov::shape_size(scores_ps)) { + const auto num_boxes = boxes_ps[1]; + const auto num_classes = scores_ps[1]; + size_t max_output_boxes_per_class = 0; + if (nms_top_k >= 0) + max_output_boxes_per_class = std::min(num_boxes, (size_t)nms_top_k); + else + max_output_boxes_per_class = num_boxes; + + auto max_output_boxes_per_batch = max_output_boxes_per_class * num_classes; + if (keep_top_k >= 0) + max_output_boxes_per_batch = std::min(max_output_boxes_per_batch, (size_t)keep_top_k); + + result[0] = max_output_boxes_per_batch * scores_ps[0]; } return result; } -std::vector prepare_boxes_data(const std::shared_ptr& boxes, - const ngraph::Shape& boxes_shape) { +std::vector prepare_boxes_data(const ov::Tensor& boxes, const ov::Shape& boxes_shape) { auto result = get_floats(boxes, boxes_shape); return result; } -std::vector prepare_scores_data(const std::shared_ptr& scores, - const ngraph::Shape& scores_shape) { +std::vector prepare_scores_data(const ov::Tensor& scores, const ov::Shape& scores_shape) { auto result = get_floats(scores, scores_shape); return result; } -InfoForNMS get_info_for_nms_eval(const std::shared_ptr& nms, - const std::vector>& inputs) { +InfoForNMS get_info_for_nms_eval(const std::shared_ptr& nms, const ov::TensorVector& inputs) { InfoForNMS result; const auto& nms_attrs = nms->get_attrs(); const auto nms_top_k = nms_attrs.nms_top_k; @@ -77,23 +71,23 @@ InfoForNMS get_info_for_nms_eval(const std::shared_ptrget_shape(); - result.scores_shape = inputs[scores_port]->get_shape(); + result.boxes_shape = inputs[boxes_port].get_shape(); + result.scores_shape = inputs[scores_port].get_shape(); result.boxes_data = prepare_boxes_data(inputs[boxes_port], result.boxes_shape); result.scores_data = prepare_scores_data(inputs[scores_port], result.scores_shape); - result.selected_outputs_shape_size = ngraph::shape_size(result.selected_outputs_shape); - result.selected_indices_shape_size = ngraph::shape_size(result.selected_indices_shape); + result.selected_outputs_shape_size = ov::shape_size(result.selected_outputs_shape); + result.selected_indices_shape_size = ov::shape_size(result.selected_indices_shape); return result; } } // namespace matrix_nms_v8 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto info = matrix_nms_v8::get_info_for_nms_eval(op, inputs); std::vector selected_outputs(info.selected_outputs_shape_size); @@ -116,15 +110,15 @@ bool evaluate(const std::shared_ptr& op, void* prois; size_t num_selected = static_cast(std::accumulate(valid_outputs.begin(), valid_outputs.end(), size_t(0))); - outputs[0]->set_shape({num_selected, 6}); - prois = outputs[0]->get_data_ptr(); + outputs[0].set_shape({num_selected, 6}); + prois = outputs[0].data(); if (outputs.size() >= 2) { - outputs[1]->set_shape({num_selected, 1}); - pscores = outputs[1]->get_data_ptr(); + outputs[1].set_shape({num_selected, 1}); + pscores = outputs[1].data(); } if (outputs.size() >= 3) { - pselected_num = outputs[2]->get_data_ptr(); + pselected_num = outputs[2].data(); } ov::reference::nms_common::nms_common_postprocessing(prois, @@ -139,70 +133,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/mod.cpp b/src/plugins/template/backend/ops/mod.cpp index a8e4ac1cbc44f7..b1668981a5b46b 100644 --- a/src/plugins/template/backend/ops/mod.cpp +++ b/src/plugins/template/backend/ops/mod.cpp @@ -6,63 +6,60 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::mod(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::mod(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), op->get_autob()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/multiclass_nms.cpp b/src/plugins/template/backend/ops/multiclass_nms.cpp index e4a3e7f1d5a71c..51d1d6e4cab2ff 100644 --- a/src/plugins/template/backend/ops/multiclass_nms.cpp +++ b/src/plugins/template/backend/ops/multiclass_nms.cpp @@ -8,6 +8,7 @@ #include "evaluates_map.hpp" #include "multiclass_nms_shape_inference.hpp" #include "openvino/reference/utils/nms_common.hpp" +#include "openvino/runtime/tensor.hpp" namespace multiclass_nms { using namespace ov; @@ -27,18 +28,17 @@ struct InfoForNMS { size_t selected_numrois_shape_size; }; -static std::vector prepare_boxes_data(const std::shared_ptr& boxes, const Shape& boxes_shape) { +static std::vector prepare_boxes_data(const ov::Tensor& boxes, const Shape& boxes_shape) { auto result = get_floats(boxes, boxes_shape); return result; } -static std::vector prepare_scores_data(const std::shared_ptr& scores, const Shape& scores_shape) { +static std::vector prepare_scores_data(const ov::Tensor& scores, const Shape& scores_shape) { auto result = get_floats(scores, scores_shape); return result; } -static std::vector prepare_roisnum_data(const std::shared_ptr& roisnum, - const Shape& roisnum_shape) { +static std::vector prepare_roisnum_data(const ov::Tensor& roisnum, const Shape& roisnum_shape) { auto result = get_integers(roisnum, roisnum_shape); return result; } @@ -48,14 +48,14 @@ constexpr size_t scores_port = 1; constexpr size_t roisnum_port = 2; InfoForNMS get_info_for_nms_eval(const std::shared_ptr& nms, - const std::vector>& inputs) { + const ov::TensorVector& inputs) { InfoForNMS result; - const auto boxes_ps = inputs[boxes_port]->get_partial_shape(); - const auto scores_ps = inputs[scores_port]->get_partial_shape(); + const auto boxes_ps = inputs[boxes_port].get_shape(); + const auto scores_ps = inputs[scores_port].get_shape(); std::vector input_shapes = {boxes_ps, scores_ps}; if (nms->get_input_size() == 3) { - const auto roisnum_ps = inputs[roisnum_port]->get_partial_shape(); + const auto roisnum_ps = inputs[roisnum_port].get_shape(); input_shapes.push_back(roisnum_ps); } @@ -65,14 +65,14 @@ InfoForNMS get_info_for_nms_eval(const std::shared_ptrget_shape(); - result.scores_shape = inputs[scores_port]->get_shape(); + result.boxes_shape = inputs[boxes_port].get_shape(); + result.scores_shape = inputs[scores_port].get_shape(); result.boxes_data = prepare_boxes_data(inputs[boxes_port], result.boxes_shape); result.scores_data = prepare_scores_data(inputs[scores_port], result.scores_shape); if (inputs.size() == 3) { - result.roisnum_shape = inputs[roisnum_port]->get_shape(); + result.roisnum_shape = inputs[roisnum_port].get_shape(); result.roisnum_data = prepare_roisnum_data(inputs[roisnum_port], result.roisnum_shape); } @@ -84,10 +84,10 @@ InfoForNMS get_info_for_nms_eval(const std::shared_ptr -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto info = multiclass_nms::get_info_for_nms_eval(op, inputs); std::vector selected_outputs(info.selected_outputs_shape_size); @@ -99,7 +99,7 @@ bool evaluate(const std::shared_ptr& op, info.scores_data.data(), info.scores_shape, nullptr, - ngraph::Shape(), // won't be used + ov::Shape(), // won't be used op->get_attrs(), selected_outputs.data(), info.selected_outputs_shape, @@ -112,15 +112,15 @@ bool evaluate(const std::shared_ptr& op, void* prois; size_t num_selected = static_cast(std::accumulate(valid_outputs.begin(), valid_outputs.end(), int64_t(0))); - outputs[0]->set_shape({num_selected, 6}); - prois = outputs[0]->get_data_ptr(); + outputs[0].set_shape({num_selected, 6}); + prois = outputs[0].data(); if (outputs.size() >= 2) { - outputs[1]->set_shape({num_selected, 1}); - pscores = outputs[1]->get_data_ptr(); + outputs[1].set_shape({num_selected, 1}); + pscores = outputs[1].data(); } if (outputs.size() >= 3) { - pselected_num = outputs[2]->get_data_ptr(); + pselected_num = outputs[2].data(); } ov::reference::nms_common::nms_common_postprocessing(prois, @@ -135,10 +135,10 @@ bool evaluate(const std::shared_ptr& op, return true; } -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto info = multiclass_nms::get_info_for_nms_eval(op, inputs); std::vector selected_outputs(info.selected_outputs_shape_size); @@ -163,15 +163,15 @@ bool evaluate(const std::shared_ptr& op, void* prois; size_t num_selected = static_cast(std::accumulate(valid_outputs.begin(), valid_outputs.end(), 0)); - outputs[0]->set_shape({num_selected, 6}); - prois = outputs[0]->get_data_ptr(); + outputs[0].set_shape({num_selected, 6}); + prois = outputs[0].data(); if (outputs.size() >= 2) { - outputs[1]->set_shape({num_selected, 1}); - pscores = outputs[1]->get_data_ptr(); + outputs[1].set_shape({num_selected, 1}); + pscores = outputs[1].data(); } if (outputs.size() >= 3) { - pselected_num = outputs[2]->get_data_ptr(); + pselected_num = outputs[2].data(); } ov::reference::nms_common::nms_common_postprocessing(prois, @@ -187,78 +187,46 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); @@ -266,80 +234,47 @@ bool evaluate_node(std::shared_ptr } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/mvn.cpp b/src/plugins/template/backend/ops/mvn.cpp index 325016eef883ff..efd745ca25ee35 100644 --- a/src/plugins/template/backend/ops/mvn.cpp +++ b/src/plugins/template/backend/ops/mvn.cpp @@ -6,14 +6,12 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::mvn(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::mvn(inputs[0].data(), + outputs[0].data(), + inputs[0].get_shape(), op->get_normalize_variance(), op->get_reduction_axes(), op->get_eps()); @@ -22,9 +20,9 @@ bool evaluate(const std::shared_ptr& op, namespace mvn_6_axes { template -ngraph::AxisSet mvn_6_reduction_axes(const ngraph::HostTensorPtr& axes_input, size_t rank) { - T* a = axes_input->get_data_ptr(); - auto v = std::vector(a, a + axes_input->get_shape()[0]); +ov::AxisSet mvn_6_reduction_axes(const ov::Tensor& axes_input, size_t rank) { + T* a = axes_input.data(); + auto v = std::vector(a, a + axes_input.get_shape()[0]); std::vector axes(v.size(), 0); for (size_t i = 0; i < v.size(); i++) { if (v[i] < 0) { @@ -36,27 +34,25 @@ ngraph::AxisSet mvn_6_reduction_axes(const ngraph::HostTensorPtr& axes_input, si axes[i] = (size_t)(v[i]); } } - return ngraph::AxisSet(axes); + return ov::AxisSet(axes); } } // namespace mvn_6_axes -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ngraph::AxisSet reduction_axes; - auto rank = inputs[0]->get_shape().size(); - if (inputs[1]->get_element_type() == ngraph::element::i64) { +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::AxisSet reduction_axes; + auto rank = inputs[0].get_shape().size(); + if (inputs[1].get_element_type() == ov::element::i64) { reduction_axes = mvn_6_axes::mvn_6_reduction_axes(inputs[1], rank); - } else if (inputs[1]->get_element_type() == ngraph::element::i32) { + } else if (inputs[1].get_element_type() == ov::element::i32) { reduction_axes = mvn_6_axes::mvn_6_reduction_axes(inputs[1], rank); } else { OPENVINO_THROW("Unexpected indices type"); } - ov::reference::mvn_6(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), + ov::reference::mvn_6(inputs[0].data(), + outputs[0].data(), + inputs[0].get_shape(), reduction_axes, op->get_normalize_variance(), op->get_eps(), @@ -65,95 +61,93 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/non_max_suppression.cpp b/src/plugins/template/backend/ops/non_max_suppression.cpp index e99f6d6c85ad88..c62b7a8187c148 100644 --- a/src/plugins/template/backend/ops/non_max_suppression.cpp +++ b/src/plugins/template/backend/ops/non_max_suppression.cpp @@ -2,56 +2,53 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluates_map.hpp" -#include "evaluate_node.hpp" #include "openvino/reference/non_max_suppression.hpp" -// clang-format on + +#include "evaluate_node.hpp" +#include "evaluates_map.hpp" +#include "openvino/runtime/tensor.hpp" namespace nms_v9 { -using V9BoxEncoding = ngraph::op::v9::NonMaxSuppression::BoxEncodingType; +using V9BoxEncoding = ov::op::v9::NonMaxSuppression::BoxEncodingType; struct InfoForNMS9 { int64_t max_output_boxes_per_class; float iou_threshold; float score_threshold; float soft_nms_sigma; - ngraph::Shape out_shape; - ngraph::Shape boxes_shape; - ngraph::Shape scores_shape; + ov::Shape out_shape; + ov::Shape boxes_shape; + ov::Shape scores_shape; std::vector boxes_data; std::vector scores_data; size_t out_shape_size; bool sort_result_descending; - ngraph::element::Type output_type; + ov::element::Type output_type; }; constexpr size_t boxes_port = 0; constexpr size_t scores_port = 1; -ngraph::PartialShape infer_selected_indices_shape(const std::vector>& inputs, - int64_t max_output_boxes_per_class) { - const auto boxes_ps = inputs[boxes_port]->get_partial_shape(); - const auto scores_ps = inputs[scores_port]->get_partial_shape(); +ov::PartialShape infer_selected_indices_shape(const ov::TensorVector& inputs, size_t max_output_boxes_per_class) { + const auto boxes_ps = inputs[boxes_port].get_shape(); + const auto scores_ps = inputs[scores_port].get_shape(); // NonMaxSuppression produces triplets // that have the following format: [batch_index, class_index, box_index] - ngraph::PartialShape result = {ngraph::Dimension::dynamic(), 3}; + ov::PartialShape result = {ov::Dimension::dynamic(), 3}; - if (boxes_ps.rank().is_static() && scores_ps.rank().is_static()) { + if (ov::shape_size(boxes_ps) && ov::shape_size(scores_ps)) { const auto num_boxes_boxes = boxes_ps[1]; - if (num_boxes_boxes.is_static() && scores_ps[0].is_static() && scores_ps[1].is_static()) { - const auto num_boxes = num_boxes_boxes.get_length(); - const auto num_classes = scores_ps[1].get_length(); + const auto num_boxes = num_boxes_boxes; + const auto num_classes = scores_ps[1]; - result[0] = std::min(num_boxes, max_output_boxes_per_class) * num_classes * scores_ps[0].get_length(); - } + result[0] = std::min(num_boxes, max_output_boxes_per_class) * num_classes * scores_ps[0]; } return result; } -void normalize_corner(float* boxes, const ngraph::Shape& boxes_shape) { - size_t total_num_of_boxes = ngraph::shape_size(boxes_shape) / 4; +void normalize_corner(float* boxes, const ov::Shape& boxes_shape) { + size_t total_num_of_boxes = ov::shape_size(boxes_shape) / 4; for (size_t i = 0; i < total_num_of_boxes; ++i) { float* current_box = boxes + 4 * i; @@ -72,8 +69,8 @@ void normalize_corner(float* boxes, const ngraph::Shape& boxes_shape) { } } -void normalize_center(float* boxes, const ngraph::Shape& boxes_shape) { - size_t total_num_of_boxes = ngraph::shape_size(boxes_shape) / 4; +void normalize_center(float* boxes, const ov::Shape& boxes_shape) { + size_t total_num_of_boxes = ov::shape_size(boxes_shape) / 4; for (size_t i = 0; i < total_num_of_boxes; ++i) { float* current_box = boxes + 4 * i; @@ -94,7 +91,7 @@ void normalize_center(float* boxes, const ngraph::Shape& boxes_shape) { } } -void normalize_box_encoding(float* boxes, const ngraph::Shape& boxes_shape, const V9BoxEncoding box_encoding) { +void normalize_box_encoding(float* boxes, const ov::Shape& boxes_shape, const V9BoxEncoding box_encoding) { if (box_encoding == V9BoxEncoding::CORNER) { normalize_corner(boxes, boxes_shape); } else { @@ -102,39 +99,38 @@ void normalize_box_encoding(float* boxes, const ngraph::Shape& boxes_shape, cons } } -std::vector prepare_boxes_data(const std::shared_ptr& boxes, - const ngraph::Shape& boxes_shape, +std::vector prepare_boxes_data(const ov::Tensor& boxes, + const ov::Shape& boxes_shape, const V9BoxEncoding box_encoding) { auto result = get_floats(boxes, boxes_shape); normalize_box_encoding(result.data(), boxes_shape, box_encoding); return result; } -std::vector prepare_scores_data(const std::shared_ptr& scores, - const ngraph::Shape& scores_shape) { +std::vector prepare_scores_data(const ov::Tensor& scores, const ov::Shape& scores_shape) { auto result = get_floats(scores, scores_shape); return result; } -InfoForNMS9 get_info_for_nms9_eval(const std::shared_ptr& nms9, - const std::vector>& inputs) { +InfoForNMS9 get_info_for_nms9_eval(const std::shared_ptr& nms9, + const ov::TensorVector& inputs) { InfoForNMS9 result; - result.max_output_boxes_per_class = inputs.size() > 2 ? get_integers(inputs[2], ngraph::Shape({}))[0] : 0; - result.iou_threshold = inputs.size() > 3 ? get_floats(inputs[3], ngraph::Shape({}))[0] : 0.0f; - result.score_threshold = inputs.size() > 4 ? get_floats(inputs[4], ngraph::Shape({}))[0] : 0.0f; - result.soft_nms_sigma = inputs.size() > 5 ? get_floats(inputs[5], ngraph::Shape({}))[0] : 0.0f; + result.max_output_boxes_per_class = inputs.size() > 2 ? get_integers(inputs[2], ov::Shape({}))[0] : 0; + result.iou_threshold = inputs.size() > 3 ? get_floats(inputs[3], ov::Shape({}))[0] : 0.0f; + result.score_threshold = inputs.size() > 4 ? get_floats(inputs[4], ov::Shape({}))[0] : 0.0f; + result.soft_nms_sigma = inputs.size() > 5 ? get_floats(inputs[5], ov::Shape({}))[0] : 0.0f; auto selected_indices_shape = infer_selected_indices_shape(inputs, result.max_output_boxes_per_class); result.out_shape = selected_indices_shape.to_shape(); - result.boxes_shape = inputs[boxes_port]->get_shape(); - result.scores_shape = inputs[scores_port]->get_shape(); + result.boxes_shape = inputs[boxes_port].get_shape(); + result.scores_shape = inputs[scores_port].get_shape(); result.boxes_data = prepare_boxes_data(inputs[boxes_port], result.boxes_shape, nms9->get_box_encoding()); result.scores_data = prepare_scores_data(inputs[scores_port], result.scores_shape); - result.out_shape_size = ngraph::shape_size(result.out_shape); + result.out_shape_size = ov::shape_size(result.out_shape); result.sort_result_descending = nms9->get_sort_result_descending(); @@ -144,10 +140,10 @@ InfoForNMS9 get_info_for_nms9_eval(const std::shared_ptr -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto info = nms_v9::get_info_for_nms9_eval(op, inputs); std::vector selected_indices(info.out_shape_size); @@ -169,7 +165,7 @@ bool evaluate(const std::shared_ptr& op, &valid_outputs, info.sort_result_descending); - auto selected_scores_type = (outputs.size() < 3) ? ngraph::element::f32 : outputs[1]->get_element_type(); + auto selected_scores_type = (outputs.size() < 3) ? ov::element::f32 : outputs[1].get_element_type(); ov::reference::nms_postprocessing(outputs, info.output_type, @@ -181,49 +177,46 @@ bool evaluate(const std::shared_ptr& op, } namespace nms_v4 { -using V4BoxEncoding = ngraph::op::v4::NonMaxSuppression::BoxEncodingType; +using V4BoxEncoding = ov::op::v4::NonMaxSuppression::BoxEncodingType; struct InfoForNMS4 { int64_t max_output_boxes_per_class; float iou_threshold; float score_threshold; float soft_nms_sigma; - ngraph::Shape out_shape; - ngraph::Shape boxes_shape; - ngraph::Shape scores_shape; + ov::Shape out_shape; + ov::Shape boxes_shape; + ov::Shape scores_shape; std::vector boxes_data; std::vector scores_data; size_t out_shape_size; bool sort_result_descending; - ngraph::element::Type output_type; + ov::element::Type output_type; }; constexpr size_t boxes_port = 0; constexpr size_t scores_port = 1; -ngraph::PartialShape infer_selected_indices_shape(const std::vector>& inputs, - int64_t max_output_boxes_per_class) { - const auto boxes_ps = inputs[boxes_port]->get_partial_shape(); - const auto scores_ps = inputs[scores_port]->get_partial_shape(); +ov::PartialShape infer_selected_indices_shape(const ov::TensorVector& inputs, size_t max_output_boxes_per_class) { + const auto boxes_ps = inputs[boxes_port].get_shape(); + const auto scores_ps = inputs[scores_port].get_shape(); // NonMaxSuppression produces triplets // that have the following format: [batch_index, class_index, box_index] - ngraph::PartialShape result = {ngraph::Dimension::dynamic(), 3}; + ov::PartialShape result = {ov::Dimension::dynamic(), 3}; - if (boxes_ps.rank().is_static() && scores_ps.rank().is_static()) { + if (ov::shape_size(boxes_ps) && ov::shape_size(scores_ps)) { const auto num_boxes_boxes = boxes_ps[1]; - if (num_boxes_boxes.is_static() && scores_ps[0].is_static() && scores_ps[1].is_static()) { - const auto num_boxes = num_boxes_boxes.get_length(); - const auto num_classes = scores_ps[1].get_length(); + const auto num_boxes = num_boxes_boxes; + const auto num_classes = scores_ps[1]; - result[0] = std::min(num_boxes, max_output_boxes_per_class) * num_classes * scores_ps[0].get_length(); - } + result[0] = std::min(num_boxes, max_output_boxes_per_class) * num_classes * scores_ps[0]; } return result; } -void normalize_corner(float* boxes, const ngraph::Shape& boxes_shape) { - size_t total_num_of_boxes = ngraph::shape_size(boxes_shape) / 4; +void normalize_corner(float* boxes, const ov::Shape& boxes_shape) { + size_t total_num_of_boxes = ov::shape_size(boxes_shape) / 4; for (size_t i = 0; i < total_num_of_boxes; ++i) { float* current_box = boxes + 4 * i; @@ -244,8 +237,8 @@ void normalize_corner(float* boxes, const ngraph::Shape& boxes_shape) { } } -void normalize_center(float* boxes, const ngraph::Shape& boxes_shape) { - size_t total_num_of_boxes = ngraph::shape_size(boxes_shape) / 4; +void normalize_center(float* boxes, const ov::Shape& boxes_shape) { + size_t total_num_of_boxes = ov::shape_size(boxes_shape) / 4; for (size_t i = 0; i < total_num_of_boxes; ++i) { float* current_box = boxes + 4 * i; @@ -266,7 +259,7 @@ void normalize_center(float* boxes, const ngraph::Shape& boxes_shape) { } } -void normalize_box_encoding(float* boxes, const ngraph::Shape& boxes_shape, const V4BoxEncoding box_encoding) { +void normalize_box_encoding(float* boxes, const ov::Shape& boxes_shape, const V4BoxEncoding box_encoding) { if (box_encoding == V4BoxEncoding::CORNER) { normalize_corner(boxes, boxes_shape); } else { @@ -274,39 +267,38 @@ void normalize_box_encoding(float* boxes, const ngraph::Shape& boxes_shape, cons } } -std::vector prepare_boxes_data(const std::shared_ptr& boxes, - const ngraph::Shape& boxes_shape, +std::vector prepare_boxes_data(const ov::Tensor& boxes, + const ov::Shape& boxes_shape, const V4BoxEncoding box_encoding) { auto result = get_floats(boxes, boxes_shape); normalize_box_encoding(result.data(), boxes_shape, box_encoding); return result; } -std::vector prepare_scores_data(const std::shared_ptr& scores, - const ngraph::Shape& scores_shape) { +std::vector prepare_scores_data(const ov::Tensor& scores, const ov::Shape& scores_shape) { auto result = get_floats(scores, scores_shape); return result; } -InfoForNMS4 get_info_for_nms4_eval(const std::shared_ptr& nms4, - const std::vector>& inputs) { +InfoForNMS4 get_info_for_nms4_eval(const std::shared_ptr& nms4, + const ov::TensorVector& inputs) { InfoForNMS4 result; - result.max_output_boxes_per_class = inputs.size() > 2 ? get_integers(inputs[2], ngraph::Shape({}))[0] : 0; - result.iou_threshold = inputs.size() > 3 ? get_floats(inputs[3], ngraph::Shape({}))[0] : 0.0f; - result.score_threshold = inputs.size() > 4 ? get_floats(inputs[4], ngraph::Shape({}))[0] : 0.0f; - result.soft_nms_sigma = inputs.size() > 5 ? get_floats(inputs[5], ngraph::Shape({}))[0] : 0.0f; + result.max_output_boxes_per_class = inputs.size() > 2 ? get_integers(inputs[2], ov::Shape({}))[0] : 0; + result.iou_threshold = inputs.size() > 3 ? get_floats(inputs[3], ov::Shape({}))[0] : 0.0f; + result.score_threshold = inputs.size() > 4 ? get_floats(inputs[4], ov::Shape({}))[0] : 0.0f; + result.soft_nms_sigma = inputs.size() > 5 ? get_floats(inputs[5], ov::Shape({}))[0] : 0.0f; auto selected_indices_shape = infer_selected_indices_shape(inputs, result.max_output_boxes_per_class); result.out_shape = selected_indices_shape.to_shape(); - result.boxes_shape = inputs[boxes_port]->get_shape(); - result.scores_shape = inputs[scores_port]->get_shape(); + result.boxes_shape = inputs[boxes_port].get_shape(); + result.scores_shape = inputs[scores_port].get_shape(); result.boxes_data = prepare_boxes_data(inputs[boxes_port], result.boxes_shape, nms4->get_box_encoding()); result.scores_data = prepare_scores_data(inputs[scores_port], result.scores_shape); - result.out_shape_size = ngraph::shape_size(result.out_shape); + result.out_shape_size = ov::shape_size(result.out_shape); result.sort_result_descending = nms4->get_sort_result_descending(); @@ -316,10 +308,10 @@ InfoForNMS4 get_info_for_nms4_eval(const std::shared_ptr -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto info = nms_v4::get_info_for_nms4_eval(op, inputs); std::vector selected_indices(info.out_shape_size); @@ -341,7 +333,7 @@ bool evaluate(const std::shared_ptr& op, &valid_outputs, info.sort_result_descending); - auto selected_scores_type = (inputs.size() < 4) ? ngraph::element::f32 : inputs[3]->get_element_type(); + auto selected_scores_type = (inputs.size() < 4) ? ov::element::f32 : inputs[3].get_element_type(); ov::reference::nms_postprocessing(outputs, info.output_type, @@ -353,49 +345,46 @@ bool evaluate(const std::shared_ptr& op, } namespace nms_v3 { -using V3BoxEncoding = ngraph::op::v3::NonMaxSuppression::BoxEncodingType; +using V3BoxEncoding = ov::op::v3::NonMaxSuppression::BoxEncodingType; struct InfoForNMS3 { int64_t max_output_boxes_per_class; float iou_threshold; float score_threshold; float soft_nms_sigma; - ngraph::Shape out_shape; - ngraph::Shape boxes_shape; - ngraph::Shape scores_shape; + ov::Shape out_shape; + ov::Shape boxes_shape; + ov::Shape scores_shape; std::vector boxes_data; std::vector scores_data; size_t out_shape_size; bool sort_result_descending; - ngraph::element::Type output_type; + ov::element::Type output_type; }; constexpr size_t boxes_port = 0; constexpr size_t scores_port = 1; -ngraph::PartialShape infer_selected_indices_shape(const std::vector>& inputs, - int64_t max_output_boxes_per_class) { - const auto boxes_ps = inputs[boxes_port]->get_partial_shape(); - const auto scores_ps = inputs[scores_port]->get_partial_shape(); +ov::PartialShape infer_selected_indices_shape(const ov::TensorVector& inputs, size_t max_output_boxes_per_class) { + const auto boxes_ps = inputs[boxes_port].get_shape(); + const auto scores_ps = inputs[scores_port].get_shape(); // NonMaxSuppression produces triplets // that have the following format: [batch_index, class_index, box_index] - ngraph::PartialShape result = {ngraph::Dimension::dynamic(), 3}; + ov::PartialShape result = {ov::Dimension::dynamic(), 3}; - if (boxes_ps.rank().is_static() && scores_ps.rank().is_static()) { + if (ov::shape_size(boxes_ps) && ov::shape_size(scores_ps)) { const auto num_boxes_boxes = boxes_ps[1]; - if (num_boxes_boxes.is_static() && scores_ps[0].is_static() && scores_ps[1].is_static()) { - const auto num_boxes = num_boxes_boxes.get_length(); - const auto num_classes = scores_ps[1].get_length(); + const auto num_boxes = num_boxes_boxes; + const auto num_classes = scores_ps[1]; - result[0] = std::min(num_boxes, max_output_boxes_per_class * num_classes); - } + result[0] = std::min(num_boxes, max_output_boxes_per_class * num_classes); } return result; } -void normalize_corner(float* boxes, const ngraph::Shape& boxes_shape) { - size_t total_num_of_boxes = ngraph::shape_size(boxes_shape) / 4; +void normalize_corner(float* boxes, const ov::Shape& boxes_shape) { + size_t total_num_of_boxes = ov::shape_size(boxes_shape) / 4; for (size_t i = 0; i < total_num_of_boxes; ++i) { float* current_box = boxes + 4 * i; @@ -416,8 +405,8 @@ void normalize_corner(float* boxes, const ngraph::Shape& boxes_shape) { } } -void normalize_center(float* boxes, const ngraph::Shape& boxes_shape) { - size_t total_num_of_boxes = ngraph::shape_size(boxes_shape) / 4; +void normalize_center(float* boxes, const ov::Shape& boxes_shape) { + size_t total_num_of_boxes = ov::shape_size(boxes_shape) / 4; for (size_t i = 0; i < total_num_of_boxes; ++i) { float* current_box = boxes + 4 * i; @@ -438,7 +427,7 @@ void normalize_center(float* boxes, const ngraph::Shape& boxes_shape) { } } -void normalize_box_encoding(float* boxes, const ngraph::Shape& boxes_shape, const V3BoxEncoding box_encoding) { +void normalize_box_encoding(float* boxes, const ov::Shape& boxes_shape, const V3BoxEncoding box_encoding) { if (box_encoding == V3BoxEncoding::CORNER) { normalize_corner(boxes, boxes_shape); } else { @@ -446,39 +435,38 @@ void normalize_box_encoding(float* boxes, const ngraph::Shape& boxes_shape, cons } } -std::vector prepare_boxes_data(const std::shared_ptr& boxes, - const ngraph::Shape& boxes_shape, +std::vector prepare_boxes_data(const ov::Tensor& boxes, + const ov::Shape& boxes_shape, const V3BoxEncoding box_encoding) { auto result = get_floats(boxes, boxes_shape); normalize_box_encoding(result.data(), boxes_shape, box_encoding); return result; } -std::vector prepare_scores_data(const std::shared_ptr& scores, - const ngraph::Shape& scores_shape) { +std::vector prepare_scores_data(const ov::Tensor& scores, const ov::Shape& scores_shape) { auto result = get_floats(scores, scores_shape); return result; } -InfoForNMS3 get_info_for_nms3_eval(const std::shared_ptr& nms3, - const std::vector>& inputs) { +InfoForNMS3 get_info_for_nms3_eval(const std::shared_ptr& nms3, + const ov::TensorVector& inputs) { InfoForNMS3 result; - result.max_output_boxes_per_class = inputs.size() > 2 ? get_integers(inputs[2], ngraph::Shape({}))[0] : 0; - result.iou_threshold = inputs.size() > 3 ? get_floats(inputs[3], ngraph::Shape({}))[0] : 0.0f; - result.score_threshold = inputs.size() > 4 ? get_floats(inputs[4], ngraph::Shape({}))[0] : 0.0f; - result.soft_nms_sigma = inputs.size() > 5 ? get_floats(inputs[5], ngraph::Shape({}))[0] : 0.0f; + result.max_output_boxes_per_class = inputs.size() > 2 ? get_integers(inputs[2], ov::Shape({}))[0] : 0; + result.iou_threshold = inputs.size() > 3 ? get_floats(inputs[3], ov::Shape({}))[0] : 0.0f; + result.score_threshold = inputs.size() > 4 ? get_floats(inputs[4], ov::Shape({}))[0] : 0.0f; + result.soft_nms_sigma = inputs.size() > 5 ? get_floats(inputs[5], ov::Shape({}))[0] : 0.0f; auto selected_indices_shape = infer_selected_indices_shape(inputs, result.max_output_boxes_per_class); result.out_shape = selected_indices_shape.to_shape(); - result.boxes_shape = inputs[boxes_port]->get_shape(); - result.scores_shape = inputs[scores_port]->get_shape(); + result.boxes_shape = inputs[boxes_port].get_shape(); + result.scores_shape = inputs[scores_port].get_shape(); result.boxes_data = prepare_boxes_data(inputs[boxes_port], result.boxes_shape, nms3->get_box_encoding()); result.scores_data = prepare_scores_data(inputs[scores_port], result.scores_shape); - result.out_shape_size = ngraph::shape_size(result.out_shape); + result.out_shape_size = ov::shape_size(result.out_shape); result.sort_result_descending = nms3->get_sort_result_descending(); @@ -488,10 +476,10 @@ InfoForNMS3 get_info_for_nms3_eval(const std::shared_ptr -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto info = nms_v3::get_info_for_nms3_eval(op, inputs); std::vector selected_indices(info.out_shape_size); @@ -513,7 +501,7 @@ bool evaluate(const std::shared_ptr& op, &valid_outputs, info.sort_result_descending); - auto selected_scores_type = (inputs.size() < 4) ? ngraph::element::f32 : inputs[3]->get_element_type(); + auto selected_scores_type = (inputs.size() < 4) ? ov::element::f32 : inputs[3].get_element_type(); ov::reference::nms_postprocessing(outputs, info.output_type, @@ -525,49 +513,46 @@ bool evaluate(const std::shared_ptr& op, } namespace nms_v1 { -using V1BoxEncoding = ngraph::op::v1::NonMaxSuppression::BoxEncodingType; +using V1BoxEncoding = ov::op::v1::NonMaxSuppression::BoxEncodingType; struct InfoForNMS1 { int64_t max_output_boxes_per_class; float iou_threshold; float score_threshold; float soft_nms_sigma; - ngraph::Shape out_shape; - ngraph::Shape boxes_shape; - ngraph::Shape scores_shape; + ov::Shape out_shape; + ov::Shape boxes_shape; + ov::Shape scores_shape; std::vector boxes_data; std::vector scores_data; size_t out_shape_size; bool sort_result_descending; - ngraph::element::Type output_type; + ov::element::Type output_type; }; constexpr size_t boxes_port = 0; constexpr size_t scores_port = 1; -ngraph::PartialShape infer_selected_indices_shape(const std::vector>& inputs, - int64_t max_output_boxes_per_class) { - const auto boxes_ps = inputs[boxes_port]->get_partial_shape(); - const auto scores_ps = inputs[scores_port]->get_partial_shape(); +ov::PartialShape infer_selected_indices_shape(const ov::TensorVector& inputs, size_t max_output_boxes_per_class) { + const auto boxes_ps = inputs[boxes_port].get_shape(); + const auto scores_ps = inputs[scores_port].get_shape(); // NonMaxSuppression produces triplets // that have the following format: [batch_index, class_index, box_index] - ngraph::PartialShape result = {ngraph::Dimension::dynamic(), 3}; + ov::PartialShape result = {ov::Dimension::dynamic(), 3}; - if (boxes_ps.rank().is_static() && scores_ps.rank().is_static()) { + if (ov::shape_size(boxes_ps) && ov::shape_size(scores_ps)) { const auto num_boxes_boxes = boxes_ps[1]; - if (num_boxes_boxes.is_static() && scores_ps[0].is_static() && scores_ps[1].is_static()) { - const auto num_boxes = num_boxes_boxes.get_length(); - const auto num_classes = scores_ps[1].get_length(); + const auto num_boxes = num_boxes_boxes; + const auto num_classes = scores_ps[1]; - result[0] = std::min(num_boxes, max_output_boxes_per_class * num_classes); - } + result[0] = std::min(num_boxes, max_output_boxes_per_class * num_classes); } return result; } -void normalize_corner(float* boxes, const ngraph::Shape& boxes_shape) { - size_t total_num_of_boxes = ngraph::shape_size(boxes_shape) / 4; +void normalize_corner(float* boxes, const ov::Shape& boxes_shape) { + size_t total_num_of_boxes = ov::shape_size(boxes_shape) / 4; for (size_t i = 0; i < total_num_of_boxes; ++i) { float* current_box = boxes + 4 * i; @@ -588,8 +573,8 @@ void normalize_corner(float* boxes, const ngraph::Shape& boxes_shape) { } } -void normalize_center(float* boxes, const ngraph::Shape& boxes_shape) { - size_t total_num_of_boxes = ngraph::shape_size(boxes_shape) / 4; +void normalize_center(float* boxes, const ov::Shape& boxes_shape) { + size_t total_num_of_boxes = ov::shape_size(boxes_shape) / 4; for (size_t i = 0; i < total_num_of_boxes; ++i) { float* current_box = boxes + 4 * i; @@ -610,7 +595,7 @@ void normalize_center(float* boxes, const ngraph::Shape& boxes_shape) { } } -void normalize_box_encoding(float* boxes, const ngraph::Shape& boxes_shape, const V1BoxEncoding box_encoding) { +void normalize_box_encoding(float* boxes, const ov::Shape& boxes_shape, const V1BoxEncoding box_encoding) { if (box_encoding == V1BoxEncoding::CORNER) { normalize_corner(boxes, boxes_shape); } else { @@ -618,39 +603,38 @@ void normalize_box_encoding(float* boxes, const ngraph::Shape& boxes_shape, cons } } -std::vector prepare_boxes_data(const std::shared_ptr& boxes, - const ngraph::Shape& boxes_shape, +std::vector prepare_boxes_data(const ov::Tensor& boxes, + const ov::Shape& boxes_shape, const V1BoxEncoding box_encoding) { auto result = get_floats(boxes, boxes_shape); normalize_box_encoding(result.data(), boxes_shape, box_encoding); return result; } -std::vector prepare_scores_data(const std::shared_ptr& scores, - const ngraph::Shape& scores_shape) { +std::vector prepare_scores_data(const ov::Tensor& scores, const ov::Shape& scores_shape) { auto result = get_floats(scores, scores_shape); return result; } -InfoForNMS1 get_info_for_nms1_eval(const std::shared_ptr& nms1, - const std::vector>& inputs) { +InfoForNMS1 get_info_for_nms1_eval(const std::shared_ptr& nms1, + const ov::TensorVector& inputs) { InfoForNMS1 result; - result.max_output_boxes_per_class = inputs.size() > 2 ? get_integers(inputs[2], ngraph::Shape({}))[0] : 0; - result.iou_threshold = inputs.size() > 3 ? get_floats(inputs[3], ngraph::Shape({}))[0] : 0.0f; - result.score_threshold = inputs.size() > 4 ? get_floats(inputs[4], ngraph::Shape({}))[0] : 0.0f; - result.soft_nms_sigma = inputs.size() > 5 ? get_floats(inputs[5], ngraph::Shape({}))[0] : 0.0f; + result.max_output_boxes_per_class = inputs.size() > 2 ? get_integers(inputs[2], ov::Shape({}))[0] : 0; + result.iou_threshold = inputs.size() > 3 ? get_floats(inputs[3], ov::Shape({}))[0] : 0.0f; + result.score_threshold = inputs.size() > 4 ? get_floats(inputs[4], ov::Shape({}))[0] : 0.0f; + result.soft_nms_sigma = inputs.size() > 5 ? get_floats(inputs[5], ov::Shape({}))[0] : 0.0f; auto selected_indices_shape = infer_selected_indices_shape(inputs, result.max_output_boxes_per_class); result.out_shape = selected_indices_shape.to_shape(); - result.boxes_shape = inputs[boxes_port]->get_shape(); - result.scores_shape = inputs[scores_port]->get_shape(); + result.boxes_shape = inputs[boxes_port].get_shape(); + result.scores_shape = inputs[scores_port].get_shape(); result.boxes_data = prepare_boxes_data(inputs[boxes_port], result.boxes_shape, nms1->get_box_encoding()); result.scores_data = prepare_scores_data(inputs[scores_port], result.scores_shape); - result.out_shape_size = ngraph::shape_size(result.out_shape); + result.out_shape_size = ov::shape_size(result.out_shape); result.sort_result_descending = nms1->get_sort_result_descending(); @@ -660,10 +644,10 @@ InfoForNMS1 get_info_for_nms1_eval(const std::shared_ptr -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto info = nms_v1::get_info_for_nms1_eval(op, inputs); std::vector selected_indices(info.out_shape_size); @@ -685,7 +669,7 @@ bool evaluate(const std::shared_ptr& op, &valid_outputs, info.sort_result_descending); - auto selected_scores_type = (inputs.size() < 4) ? ngraph::element::f32 : inputs[3]->get_element_type(); + auto selected_scores_type = (inputs.size() < 4) ? ov::element::f32 : inputs[3].get_element_type(); ov::reference::nms_postprocessing(outputs, info.output_type, @@ -697,49 +681,46 @@ bool evaluate(const std::shared_ptr& op, } namespace nms_v5 { -using V5BoxEncoding = ngraph::op::v5::NonMaxSuppression::BoxEncodingType; +using V5BoxEncoding = ov::op::v5::NonMaxSuppression::BoxEncodingType; struct InfoForNMS5 { int64_t max_output_boxes_per_class; float iou_threshold; float score_threshold; float soft_nms_sigma; - ngraph::Shape out_shape; - ngraph::Shape boxes_shape; - ngraph::Shape scores_shape; + ov::Shape out_shape; + ov::Shape boxes_shape; + ov::Shape scores_shape; std::vector boxes_data; std::vector scores_data; size_t out_shape_size; bool sort_result_descending; - ngraph::element::Type output_type; + ov::element::Type output_type; }; constexpr size_t boxes_port = 0; constexpr size_t scores_port = 1; -ngraph::PartialShape infer_selected_indices_shape(const std::vector>& inputs, - int64_t max_output_boxes_per_class) { - const auto boxes_ps = inputs[boxes_port]->get_partial_shape(); - const auto scores_ps = inputs[scores_port]->get_partial_shape(); +ov::PartialShape infer_selected_indices_shape(const ov::TensorVector& inputs, size_t max_output_boxes_per_class) { + const auto boxes_ps = inputs[boxes_port].get_shape(); + const auto scores_ps = inputs[scores_port].get_shape(); // NonMaxSuppression produces triplets // that have the following format: [batch_index, class_index, box_index] - ngraph::PartialShape result = {ngraph::Dimension::dynamic(), 3}; + ov::PartialShape result = {ov::Dimension::dynamic(), 3}; - if (boxes_ps.rank().is_static() && scores_ps.rank().is_static()) { + if (ov::shape_size(boxes_ps) && ov::shape_size(scores_ps)) { const auto num_boxes_boxes = boxes_ps[1]; - if (num_boxes_boxes.is_static() && scores_ps[0].is_static() && scores_ps[1].is_static()) { - const auto num_boxes = num_boxes_boxes.get_length(); - const auto num_classes = scores_ps[1].get_length(); + const auto num_boxes = num_boxes_boxes; + const auto num_classes = scores_ps[1]; - result[0] = std::min(num_boxes, max_output_boxes_per_class) * num_classes * scores_ps[0].get_length(); - } + result[0] = std::min(num_boxes, max_output_boxes_per_class) * num_classes * scores_ps[0]; } return result; } -void normalize_corner(float* boxes, const ngraph::Shape& boxes_shape) { - size_t total_num_of_boxes = ngraph::shape_size(boxes_shape) / 4; +void normalize_corner(float* boxes, const ov::Shape& boxes_shape) { + size_t total_num_of_boxes = ov::shape_size(boxes_shape) / 4; for (size_t i = 0; i < total_num_of_boxes; ++i) { float* current_box = boxes + 4 * i; @@ -760,8 +741,8 @@ void normalize_corner(float* boxes, const ngraph::Shape& boxes_shape) { } } -void normalize_center(float* boxes, const ngraph::Shape& boxes_shape) { - size_t total_num_of_boxes = ngraph::shape_size(boxes_shape) / 4; +void normalize_center(float* boxes, const ov::Shape& boxes_shape) { + size_t total_num_of_boxes = ov::shape_size(boxes_shape) / 4; for (size_t i = 0; i < total_num_of_boxes; ++i) { float* current_box = boxes + 4 * i; @@ -782,7 +763,7 @@ void normalize_center(float* boxes, const ngraph::Shape& boxes_shape) { } } -void normalize_box_encoding(float* boxes, const ngraph::Shape& boxes_shape, const V5BoxEncoding box_encoding) { +void normalize_box_encoding(float* boxes, const ov::Shape& boxes_shape, const V5BoxEncoding box_encoding) { if (box_encoding == V5BoxEncoding::CORNER) { normalize_corner(boxes, boxes_shape); } else { @@ -790,39 +771,38 @@ void normalize_box_encoding(float* boxes, const ngraph::Shape& boxes_shape, cons } } -std::vector prepare_boxes_data(const std::shared_ptr& boxes, - const ngraph::Shape& boxes_shape, +std::vector prepare_boxes_data(const ov::Tensor& boxes, + const ov::Shape& boxes_shape, const V5BoxEncoding box_encoding) { auto result = get_floats(boxes, boxes_shape); normalize_box_encoding(result.data(), boxes_shape, box_encoding); return result; } -std::vector prepare_scores_data(const std::shared_ptr& scores, - const ngraph::Shape& scores_shape) { +std::vector prepare_scores_data(const ov::Tensor& scores, const ov::Shape& scores_shape) { auto result = get_floats(scores, scores_shape); return result; } -InfoForNMS5 get_info_for_nms5_eval(const std::shared_ptr& nms5, - const std::vector>& inputs) { +InfoForNMS5 get_info_for_nms5_eval(const std::shared_ptr& nms5, + const ov::TensorVector& inputs) { InfoForNMS5 result; - result.max_output_boxes_per_class = inputs.size() > 2 ? get_integers(inputs[2], ngraph::Shape({}))[0] : 0; - result.iou_threshold = inputs.size() > 3 ? get_floats(inputs[3], ngraph::Shape({}))[0] : 0.0f; - result.score_threshold = inputs.size() > 4 ? get_floats(inputs[4], ngraph::Shape({}))[0] : 0.0f; - result.soft_nms_sigma = inputs.size() > 5 ? get_floats(inputs[5], ngraph::Shape({}))[0] : 0.0f; + result.max_output_boxes_per_class = inputs.size() > 2 ? get_integers(inputs[2], ov::Shape({}))[0] : 0; + result.iou_threshold = inputs.size() > 3 ? get_floats(inputs[3], ov::Shape({}))[0] : 0.0f; + result.score_threshold = inputs.size() > 4 ? get_floats(inputs[4], ov::Shape({}))[0] : 0.0f; + result.soft_nms_sigma = inputs.size() > 5 ? get_floats(inputs[5], ov::Shape({}))[0] : 0.0f; auto selected_indices_shape = infer_selected_indices_shape(inputs, result.max_output_boxes_per_class); result.out_shape = selected_indices_shape.to_shape(); - result.boxes_shape = inputs[boxes_port]->get_shape(); - result.scores_shape = inputs[scores_port]->get_shape(); + result.boxes_shape = inputs[boxes_port].get_shape(); + result.scores_shape = inputs[scores_port].get_shape(); result.boxes_data = prepare_boxes_data(inputs[boxes_port], result.boxes_shape, nms5->get_box_encoding()); result.scores_data = prepare_scores_data(inputs[scores_port], result.scores_shape); - result.out_shape_size = ngraph::shape_size(result.out_shape); + result.out_shape_size = ov::shape_size(result.out_shape); result.sort_result_descending = nms5->get_sort_result_descending(); @@ -832,10 +812,10 @@ InfoForNMS5 get_info_for_nms5_eval(const std::shared_ptr -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto info = nms_v5::get_info_for_nms5_eval(op, inputs); std::vector selected_indices(info.out_shape_size); @@ -857,7 +837,7 @@ bool evaluate(const std::shared_ptr& op, &valid_outputs, info.sort_result_descending); - auto selected_scores_type = (outputs.size() < 3) ? ngraph::element::f32 : outputs[1]->get_element_type(); + auto selected_scores_type = (outputs.size() < 3) ? ov::element::f32 : outputs[1].get_element_type(); ov::reference::nms_postprocessing(outputs, info.output_type, @@ -869,396 +849,231 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/normalize_l2.cpp b/src/plugins/template/backend/ops/normalize_l2.cpp index c2eb3691755ad9..2d2035640ba2da 100644 --- a/src/plugins/template/backend/ops/normalize_l2.cpp +++ b/src/plugins/template/backend/ops/normalize_l2.cpp @@ -6,13 +6,13 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::normalize_l2(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::normalize_l2(inputs[0].data(), + outputs[0].data(), op->get_input_shape(0), op->get_reduction_axes(), op->get_eps(), @@ -21,80 +21,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/ops_evaluates.hpp b/src/plugins/template/backend/ops/ops_evaluates.hpp index 7b71cbaf844dbf..c3a316bea50aa5 100644 --- a/src/plugins/template/backend/ops/ops_evaluates.hpp +++ b/src/plugins/template/backend/ops/ops_evaluates.hpp @@ -7,452 +7,448 @@ #include "ov_ops/augru_cell.hpp" #include "ov_ops/augru_sequence.hpp" -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node( - std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node( - std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node( - std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node( - std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node( - std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node( - std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); - -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node( + std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node( + std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); + +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); extern template bool evaluate_node(std::shared_ptr node, - const ov::HostTensorVector& outputs, - const ov::HostTensorVector& inputs); + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); -extern template bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs); +extern template bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs); diff --git a/src/plugins/template/backend/ops/pad.cpp b/src/plugins/template/backend/ops/pad.cpp index e5fdee71c10cf3..9bc0f5935484c5 100644 --- a/src/plugins/template/backend/ops/pad.cpp +++ b/src/plugins/template/backend/ops/pad.cpp @@ -6,16 +6,14 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - ov::reference::pad(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape()), - inputs[1]->get_shape(), - outputs[0]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + ov::reference::pad(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape()), + inputs[1].get_shape(), + outputs[0].get_shape(), op->get_pads_end(), op->get_pads_begin(), op->get_pad_mode()); @@ -23,48 +21,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/prelu.cpp b/src/plugins/template/backend/ops/prelu.cpp index 914feb94f6ab8d..d60f90f9fd3f7c 100644 --- a/src/plugins/template/backend/ops/prelu.cpp +++ b/src/plugins/template/backend/ops/prelu.cpp @@ -6,64 +6,59 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::prelu(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape()); +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::prelu(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/proposal.cpp b/src/plugins/template/backend/ops/proposal.cpp index b94c06379a1c2c..4cc40aae3b872f 100644 --- a/src/plugins/template/backend/ops/proposal.cpp +++ b/src/plugins/template/backend/ops/proposal.cpp @@ -6,140 +6,130 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::proposal_v0(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - inputs[2]->get_shape(), - outputs[0]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::proposal_v0(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), + inputs[2].get_shape(), + outputs[0].get_shape(), op.get()->get_attrs()); return true; } -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::proposal_v4(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - inputs[2]->get_shape(), - outputs[0]->get_shape(), - outputs[1]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::proposal_v4(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), + outputs[0].data(), + outputs[1].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), + inputs[2].get_shape(), + outputs[0].get_shape(), + outputs[1].get_shape(), op.get()->get_attrs()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/psroi_pooling.cpp b/src/plugins/template/backend/ops/psroi_pooling.cpp index c2bf72bcb624fe..beabc3d01a98b4 100644 --- a/src/plugins/template/backend/ops/psroi_pooling.cpp +++ b/src/plugins/template/backend/ops/psroi_pooling.cpp @@ -6,17 +6,17 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::psroi_pooling(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - outputs[0]->get_data_ptr(), - outputs[0]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::psroi_pooling(inputs[0].data(), + inputs[0].get_shape(), + inputs[1].data(), + inputs[1].get_shape(), + outputs[0].data(), + outputs[0].get_shape(), op->get_mode(), op->get_spatial_scale(), op->get_spatial_bins_x(), @@ -26,52 +26,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/rdft.cpp b/src/plugins/template/backend/ops/rdft.cpp index 0f3623876e9387..f2f53a5cfdeca2 100644 --- a/src/plugins/template/backend/ops/rdft.cpp +++ b/src/plugins/template/backend/ops/rdft.cpp @@ -7,22 +7,23 @@ #include "evaluate_node.hpp" #include "evaluates_map.hpp" #include "openvino/reference/fft.hpp" +#include "openvino/runtime/tensor.hpp" namespace rfft_v9 { struct InfoForRFFT9 { std::vector input_data; std::vector axes_data; - ngraph::Shape input_data_shape; - ngraph::Shape axes_data_shape; - ngraph::Shape fft_output_shape; - ngraph::Shape output_shape; + ov::Shape input_data_shape; + ov::Shape axes_data_shape; + ov::Shape fft_output_shape; + ov::Shape output_shape; }; -InfoForRFFT9 get_info_for_rfft9_eval(const std::vector>& inputs) { +InfoForRFFT9 get_info_for_rfft9_eval(const ov::TensorVector& inputs) { InfoForRFFT9 result; - result.input_data_shape = inputs[0]->get_shape(); - result.axes_data_shape = inputs[1]->get_shape(); + result.input_data_shape = inputs[0].get_shape(); + result.axes_data_shape = inputs[1].get_shape(); result.input_data = get_floats(inputs[0], result.input_data_shape); result.axes_data = get_integers(inputs[1], result.axes_data_shape); @@ -58,14 +59,12 @@ InfoForRFFT9 get_info_for_rfft9_eval(const std::vector -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { auto info = rfft_v9::get_info_for_rfft9_eval(inputs); - outputs[0]->set_shape(info.output_shape); + outputs[0].set_shape(info.output_shape); - std::vector rfft_result(ngraph::shape_size(info.output_shape), 0.0f); + std::vector rfft_result(ov::shape_size(info.output_shape), 0.0f); ov::reference::rdft(info.input_data, info.input_data_shape, info.axes_data, @@ -78,48 +77,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/read_value.cpp b/src/plugins/template/backend/ops/read_value.cpp index 4a1926568d4f32..39d06f29c9ba80 100644 --- a/src/plugins/template/backend/ops/read_value.cpp +++ b/src/plugins/template/backend/ops/read_value.cpp @@ -4,81 +4,21 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - outputs[0]->set_unary(inputs[0]); - void* input = inputs[0]->get_data_ptr(); - outputs[0]->write(input, outputs[0]->get_size_in_bytes()); +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + outputs[0].set_shape(inputs[0].get_shape()); + inputs[0].copy_to(outputs[0]); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); - switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); - } + return evaluate(ov::as_type_ptr(node), outputs, inputs); } diff --git a/src/plugins/template/backend/ops/region_yolo.cpp b/src/plugins/template/backend/ops/region_yolo.cpp index 7d3ae5971945ff..51038d036dabb1 100644 --- a/src/plugins/template/backend/ops/region_yolo.cpp +++ b/src/plugins/template/backend/ops/region_yolo.cpp @@ -6,14 +6,14 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::region_yolo(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::region_yolo(inputs[0].data(), + outputs[0].data(), + inputs[0].get_shape(), static_cast(op->get_num_coords()), static_cast(op->get_num_classes()), static_cast(op->get_num_regions()), @@ -23,80 +23,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/relu.cpp b/src/plugins/template/backend/ops/relu.cpp index ce570e1a65c63e..dd2b4131d7847a 100644 --- a/src/plugins/template/backend/ops/relu.cpp +++ b/src/plugins/template/backend/ops/relu.cpp @@ -6,60 +6,55 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::relu(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::relu(inputs[0].data(), outputs[0].data(), ov::shape_size(inputs[0].get_shape())); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/reorg_yolo.cpp b/src/plugins/template/backend/ops/reorg_yolo.cpp index 05730f4279d64f..d54e661958582b 100644 --- a/src/plugins/template/backend/ops/reorg_yolo.cpp +++ b/src/plugins/template/backend/ops/reorg_yolo.cpp @@ -6,83 +6,24 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - ov::reference::reorg_yolo(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + ov::reference::reorg_yolo(static_cast(inputs[0].data()), + static_cast(outputs[0].data()), + inputs[0].get_shape(), op->get_strides().at(0), - inputs[0]->get_element_type().size()); + inputs[0].get_element_type().size()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); - switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); - } + return evaluate(ov::as_type_ptr(node), outputs, inputs); } diff --git a/src/plugins/template/backend/ops/reverse_sequence.cpp b/src/plugins/template/backend/ops/reverse_sequence.cpp index d00ba0b0fc2669..fa896ac13902b6 100644 --- a/src/plugins/template/backend/ops/reverse_sequence.cpp +++ b/src/plugins/template/backend/ops/reverse_sequence.cpp @@ -7,61 +7,61 @@ #include "evaluate_node.hpp" namespace reverse_sequence_v0 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - ov::reference::reverse_sequence(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + ov::reference::reverse_sequence(inputs[0].data(), + outputs[0].data(), + inputs[0].get_shape(), op->get_batch_axis(), op->get_sequence_axis(), - inputs[1]->get_data_ptr()); + inputs[1].data()); } } // namespace reverse_sequence_v0 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[1]->get_element_type()) { - case ngraph::element::Type_t::boolean: - reverse_sequence_v0::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[1].get_element_type()) { + case ov::element::boolean: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i8: - reverse_sequence_v0::evaluate(op, outputs, inputs); + case ov::element::i8: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i16: - reverse_sequence_v0::evaluate(op, outputs, inputs); + case ov::element::i16: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i32: - reverse_sequence_v0::evaluate(op, outputs, inputs); + case ov::element::i32: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i64: - reverse_sequence_v0::evaluate(op, outputs, inputs); + case ov::element::i64: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::u8: - reverse_sequence_v0::evaluate(op, outputs, inputs); + case ov::element::u8: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::u16: - reverse_sequence_v0::evaluate(op, outputs, inputs); + case ov::element::u16: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::u32: - reverse_sequence_v0::evaluate(op, outputs, inputs); + case ov::element::u32: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::u64: - reverse_sequence_v0::evaluate(op, outputs, inputs); + case ov::element::u64: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::f16: - reverse_sequence_v0::evaluate(op, outputs, inputs); + case ov::element::f16: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::f32: - reverse_sequence_v0::evaluate(op, outputs, inputs); + case ov::element::f32: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::f64: - reverse_sequence_v0::evaluate(op, outputs, inputs); + case ov::element::f64: + reverse_sequence_v0::evaluate(op, outputs, inputs); break; default: return false; @@ -70,80 +70,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/rnn_cell.cpp b/src/plugins/template/backend/ops/rnn_cell.cpp index 8b52ff0275e2e5..6813b6eddde29a 100644 --- a/src/plugins/template/backend/ops/rnn_cell.cpp +++ b/src/plugins/template/backend/ops/rnn_cell.cpp @@ -6,72 +6,69 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::rnn_cell(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - inputs[2]->get_data_ptr(), - inputs[2]->get_shape(), - inputs[3]->get_data_ptr(), - inputs[3]->get_shape(), - inputs[4]->get_data_ptr(), - inputs[4]->get_shape(), - outputs[0]->get_data_ptr(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::rnn_cell(inputs[0].data(), + inputs[0].get_shape(), + inputs[1].data(), + inputs[1].get_shape(), + inputs[2].data(), + inputs[2].get_shape(), + inputs[3].data(), + inputs[3].get_shape(), + inputs[4].data(), + inputs[4].get_shape(), + outputs[0].data(), op->get_activations().front(), op->get_clip()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/roi_align.cpp b/src/plugins/template/backend/ops/roi_align.cpp index ae1fc3d9b83837..119c801cfe9fb8 100644 --- a/src/plugins/template/backend/ops/roi_align.cpp +++ b/src/plugins/template/backend/ops/roi_align.cpp @@ -5,31 +5,32 @@ #include "openvino/reference/roi_align.hpp" #include "evaluate_node.hpp" +#include "evaluates_map.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - std::vector batch_indices_vec_scaled_up = host_tensor_2_vector(inputs[2]); - ngraph::op::v3::ROIAlign::PoolingMode m_mode_v3; +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + std::vector batch_indices_vec_scaled_up = get_integers(inputs[2], inputs[2].get_shape()); + ov::op::v3::ROIAlign::PoolingMode m_mode_v3; switch (op->get_mode()) { - case ngraph::op::v9::ROIAlign::PoolingMode::AVG: { - m_mode_v3 = ngraph::op::v3::ROIAlign::PoolingMode::AVG; + case ov::op::v9::ROIAlign::PoolingMode::AVG: { + m_mode_v3 = ov::op::v3::ROIAlign::PoolingMode::AVG; break; } - case ngraph::op::v9::ROIAlign::PoolingMode::MAX: { - m_mode_v3 = ngraph::op::v3::ROIAlign::PoolingMode::MAX; + case ov::op::v9::ROIAlign::PoolingMode::MAX: { + m_mode_v3 = ov::op::v3::ROIAlign::PoolingMode::MAX; break; } default: { NGRAPH_CHECK(false, "unsupported PoolingMode "); } } - ov::reference::roi_align(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), + ov::reference::roi_align(inputs[0].data(), + inputs[1].data(), batch_indices_vec_scaled_up.data(), - outputs[0]->get_data_ptr(), + outputs[0].data(), op->get_input_shape(0), op->get_input_shape(1), op->get_input_shape(2), @@ -44,52 +45,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/roi_pooling.cpp b/src/plugins/template/backend/ops/roi_pooling.cpp index a10fe0b06ba8f0..bc115b114a2051 100644 --- a/src/plugins/template/backend/ops/roi_pooling.cpp +++ b/src/plugins/template/backend/ops/roi_pooling.cpp @@ -2,19 +2,18 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluate_node.hpp" #include "openvino/reference/roi_pooling.hpp" -// clang-format on -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::roi_pooling(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), +#include "evaluate_node.hpp" + +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::roi_pooling(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), op->get_input_shape(0), op->get_input_shape(1), op->get_output_shape(0), @@ -24,80 +23,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/roll.cpp b/src/plugins/template/backend/ops/roll.cpp index 69caac63c73769..57a4f666ad3b8c 100644 --- a/src/plugins/template/backend/ops/roll.cpp +++ b/src/plugins/template/backend/ops/roll.cpp @@ -6,91 +6,47 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - const auto& shiftType = inputs[1]->get_element_type(); +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + const auto& shiftType = inputs[1].get_element_type(); std::vector shift_int64; - if (shiftType == ngraph::element::Type_t::i32) { - auto shift = inputs[1]->get_data_ptr(); - shift_int64.resize(ngraph::shape_size(inputs[1]->get_shape())); + if (shiftType == ov::element::i32) { + auto shift = inputs[1].data(); + shift_int64.resize(ov::shape_size(inputs[1].get_shape())); std::transform(shift, - shift + ngraph::shape_size(inputs[1]->get_shape()), + shift + ov::shape_size(inputs[1].get_shape()), shift_int64.begin(), [](const int32_t& elem) { return static_cast(elem); }); } - const auto& axesType = inputs[2]->get_element_type(); + const auto& axesType = inputs[2].get_element_type(); std::vector axes_int64; - if (axesType == ngraph::element::Type_t::i32) { - auto axes = inputs[2]->get_data_ptr(); - axes_int64.resize(ngraph::shape_size(inputs[2]->get_shape())); - std::transform(axes, - axes + ngraph::shape_size(inputs[2]->get_shape()), - axes_int64.begin(), - [](const int32_t& elem) { - return static_cast(elem); - }); + if (axesType == ov::element::i32) { + auto axes = inputs[2].data(); + axes_int64.resize(ov::shape_size(inputs[2].get_shape())); + std::transform(axes, axes + ov::shape_size(inputs[2].get_shape()), axes_int64.begin(), [](const int32_t& elem) { + return static_cast(elem); + }); } ov::reference::roll( - inputs[0]->get_data_ptr(), - inputs[1]->get_element_type() != ngraph::element::Type_t::i64 ? shift_int64.data() - : inputs[1]->get_data_ptr(), - inputs[2]->get_element_type() != ngraph::element::Type_t::i64 ? axes_int64.data() - : inputs[2]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), - inputs[2]->get_shape(), - inputs[0]->get_element_type().size()); + static_cast(inputs[0].data()), + inputs[1].get_element_type() != ov::element::i64 ? shift_int64.data() : inputs[1].data(), + inputs[2].get_element_type() != ov::element::i64 ? axes_int64.data() : inputs[2].data(), + static_cast(outputs[0].data()), + inputs[0].get_shape(), + inputs[1].get_shape(), + inputs[2].get_shape(), + inputs[0].get_element_type().size()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); - switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); - } + return evaluate(ov::as_type_ptr(node), outputs, inputs); } diff --git a/src/plugins/template/backend/ops/scatter_nd_update.cpp b/src/plugins/template/backend/ops/scatter_nd_update.cpp index d55cac83087035..8064535a1b62db 100644 --- a/src/plugins/template/backend/ops/scatter_nd_update.cpp +++ b/src/plugins/template/backend/ops/scatter_nd_update.cpp @@ -6,25 +6,25 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; auto idxType = op->get_input_element_type(1); - if (idxType == ngraph::element::i32) { - ov::reference::scatterNdUpdate(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - outputs[0]->get_data_ptr(), + if (idxType == ov::element::i32) { + ov::reference::scatterNdUpdate(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), + outputs[0].data(), op->get_input_shape(0), op->get_input_shape(1), op->get_input_shape(2)); - } else if (idxType == ngraph::element::i64) { - ov::reference::scatterNdUpdate(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - outputs[0]->get_data_ptr(), + } else if (idxType == ov::element::i64) { + ov::reference::scatterNdUpdate(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), + outputs[0].data(), op->get_input_shape(0), op->get_input_shape(1), op->get_input_shape(2)); @@ -35,80 +35,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/selu.cpp b/src/plugins/template/backend/ops/selu.cpp index 0580bd7220020d..11e3659b790963 100644 --- a/src/plugins/template/backend/ops/selu.cpp +++ b/src/plugins/template/backend/ops/selu.cpp @@ -6,64 +6,61 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::selu(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - inputs[2]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape()), - ngraph::shape_size(inputs[1]->get_shape()), - ngraph::shape_size(inputs[2]->get_shape())); +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::selu(inputs[0].data(), + inputs[1].data(), + inputs[2].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape()), + ov::shape_size(inputs[1].get_shape()), + ov::shape_size(inputs[2].get_shape())); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/sequences.cpp b/src/plugins/template/backend/ops/sequences.cpp index a8d0ddf49b1cb0..dd182836e7485b 100644 --- a/src/plugins/template/backend/ops/sequences.cpp +++ b/src/plugins/template/backend/ops/sequences.cpp @@ -9,44 +9,44 @@ // clang-format on namespace rnn_seq_v5 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - ov::reference::rnn_sequence(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - inputs[2]->get_data_ptr(), - inputs[2]->get_shape(), - inputs[3]->get_data_ptr(), - inputs[3]->get_shape(), - inputs[4]->get_data_ptr(), - inputs[4]->get_shape(), - inputs[5]->get_data_ptr(), - inputs[5]->get_shape(), - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + ov::reference::rnn_sequence(static_cast(inputs[0].data()), + inputs[0].get_shape(), + static_cast(inputs[1].data()), + inputs[1].get_shape(), + static_cast(inputs[2].data()), + inputs[2].get_shape(), + static_cast(inputs[3].data()), + inputs[3].get_shape(), + static_cast(inputs[4].data()), + inputs[4].get_shape(), + static_cast(inputs[5].data()), + inputs[5].get_shape(), + static_cast(outputs[0].data()), + static_cast(outputs[1].data()), op->get_activations()[0], op->get_clip(), op->get_direction()); } } // namespace rnn_seq_v5 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[2]->get_element_type()) { - case ngraph::element::Type_t::i64: - case ngraph::element::Type_t::u64: - rnn_seq_v5::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[2].get_element_type()) { + case ov::element::i64: + case ov::element::u64: + rnn_seq_v5::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i32: - case ngraph::element::Type_t::u32: - rnn_seq_v5::evaluate(op, outputs, inputs); + case ov::element::i32: + case ov::element::u32: + rnn_seq_v5::evaluate(op, outputs, inputs); break; default: return false; @@ -55,31 +55,31 @@ bool evaluate(const std::shared_ptr& op, } namespace lstm_seq_v1 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - ov::reference::lstm_sequence_v1(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - inputs[2]->get_data_ptr(), - inputs[2]->get_shape(), - inputs[3]->get_data_ptr(), - inputs[3]->get_shape(), - inputs[4]->get_data_ptr(), - inputs[4]->get_shape(), - inputs[5]->get_data_ptr(), - inputs[5]->get_shape(), - inputs[6]->get_data_ptr(), - inputs[6]->get_shape(), - inputs[7]->get_data_ptr(), - inputs[7]->get_shape(), - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), - outputs[2]->get_data_ptr(), +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + ov::reference::lstm_sequence_v1(static_cast(inputs[0].data()), + inputs[0].get_shape(), + static_cast(inputs[1].data()), + inputs[1].get_shape(), + static_cast(inputs[2].data()), + inputs[2].get_shape(), + static_cast(inputs[3].data()), + inputs[3].get_shape(), + static_cast(inputs[4].data()), + inputs[4].get_shape(), + static_cast(inputs[5].data()), + inputs[5].get_shape(), + static_cast(inputs[6].data()), + inputs[6].get_shape(), + static_cast(inputs[7].data()), + inputs[7].get_shape(), + static_cast(outputs[0].data()), + static_cast(outputs[1].data()), + static_cast(outputs[2].data()), op->get_activations()[0], op->get_activations()[1], op->get_activations()[2], @@ -91,29 +91,29 @@ inline void evaluate(const std::shared_ptr& op, } // namespace lstm_seq_v1 namespace lstm_seq_v5 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - ov::reference::lstm_sequence(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - inputs[2]->get_data_ptr(), - inputs[2]->get_shape(), - inputs[3]->get_data_ptr(), - inputs[3]->get_shape(), - inputs[4]->get_data_ptr(), - inputs[4]->get_shape(), - inputs[5]->get_data_ptr(), - inputs[5]->get_shape(), - inputs[6]->get_data_ptr(), - inputs[6]->get_shape(), - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), - outputs[2]->get_data_ptr(), +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + ov::reference::lstm_sequence(static_cast(inputs[0].data()), + inputs[0].get_shape(), + static_cast(inputs[1].data()), + inputs[1].get_shape(), + static_cast(inputs[2].data()), + inputs[2].get_shape(), + static_cast(inputs[3].data()), + inputs[3].get_shape(), + static_cast(inputs[4].data()), + inputs[4].get_shape(), + static_cast(inputs[5].data()), + inputs[5].get_shape(), + static_cast(inputs[6].data()), + inputs[6].get_shape(), + static_cast(outputs[0].data()), + static_cast(outputs[1].data()), + static_cast(outputs[2].data()), op->get_activations()[0], op->get_activations()[1], op->get_activations()[2], @@ -122,18 +122,18 @@ inline void evaluate(const std::shared_ptr& op, } } // namespace lstm_seq_v5 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[3]->get_element_type()) { - case ngraph::element::Type_t::i64: - case ngraph::element::Type_t::u64: - lstm_seq_v1::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[3].get_element_type()) { + case ov::element::i64: + case ov::element::u64: + lstm_seq_v1::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i32: - case ngraph::element::Type_t::u32: - lstm_seq_v1::evaluate(op, outputs, inputs); + case ov::element::i32: + case ov::element::u32: + lstm_seq_v1::evaluate(op, outputs, inputs); break; default: return false; @@ -141,18 +141,18 @@ bool evaluate(const std::shared_ptr& op, return true; } -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[3]->get_element_type()) { - case ngraph::element::Type_t::i64: - case ngraph::element::Type_t::u64: - lstm_seq_v5::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[3].get_element_type()) { + case ov::element::i64: + case ov::element::u64: + lstm_seq_v5::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i32: - case ngraph::element::Type_t::u32: - lstm_seq_v5::evaluate(op, outputs, inputs); + case ov::element::i32: + case ov::element::u32: + lstm_seq_v5::evaluate(op, outputs, inputs); break; default: return false; @@ -161,26 +161,26 @@ bool evaluate(const std::shared_ptr& op, } namespace gru_seq_v5 { -template -inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - ov::reference::gru_sequence(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - inputs[2]->get_data_ptr(), - inputs[2]->get_shape(), - inputs[3]->get_data_ptr(), - inputs[3]->get_shape(), - inputs[4]->get_data_ptr(), - inputs[4]->get_shape(), - inputs[5]->get_data_ptr(), - inputs[5]->get_shape(), - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), +template +inline void evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + ov::reference::gru_sequence(static_cast(inputs[0].data()), + inputs[0].get_shape(), + static_cast(inputs[1].data()), + inputs[1].get_shape(), + static_cast(inputs[2].data()), + inputs[2].get_shape(), + static_cast(inputs[3].data()), + inputs[3].get_shape(), + static_cast(inputs[4].data()), + inputs[4].get_shape(), + static_cast(inputs[5].data()), + inputs[5].get_shape(), + static_cast(outputs[0].data()), + static_cast(outputs[1].data()), op->get_activations()[0], op->get_activations()[1], op->get_clip(), @@ -189,18 +189,18 @@ inline void evaluate(const std::shared_ptr& op, } } // namespace gru_seq_v5 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[2]->get_element_type()) { - case ngraph::element::Type_t::i64: - case ngraph::element::Type_t::u64: - gru_seq_v5::evaluate(op, outputs, inputs); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[2].get_element_type()) { + case ov::element::i64: + case ov::element::u64: + gru_seq_v5::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i32: - case ngraph::element::Type_t::u32: - gru_seq_v5::evaluate(op, outputs, inputs); + case ov::element::i32: + case ov::element::u32: + gru_seq_v5::evaluate(op, outputs, inputs); break; default: return false; @@ -209,47 +209,47 @@ bool evaluate(const std::shared_ptr& op, } namespace augru_seq { -template +template inline void evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T1 = typename ngraph::element_type_traits::value_type; - using T2 = typename ngraph::element_type_traits::value_type; - ov::reference::gru_sequence(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_data_ptr(), - inputs[1]->get_shape(), - inputs[2]->get_data_ptr(), - inputs[2]->get_shape(), - inputs[3]->get_data_ptr(), - inputs[3]->get_shape(), - inputs[4]->get_data_ptr(), - inputs[4]->get_shape(), - inputs[5]->get_data_ptr(), - inputs[5]->get_shape(), - outputs[0]->get_data_ptr(), - outputs[1]->get_data_ptr(), + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T1 = typename ov::element_type_traits::value_type; + using T2 = typename ov::element_type_traits::value_type; + ov::reference::gru_sequence(static_cast(inputs[0].data()), + inputs[0].get_shape(), + static_cast(inputs[1].data()), + inputs[1].get_shape(), + static_cast(inputs[2].data()), + inputs[2].get_shape(), + static_cast(inputs[3].data()), + inputs[3].get_shape(), + static_cast(inputs[4].data()), + inputs[4].get_shape(), + static_cast(inputs[5].data()), + inputs[5].get_shape(), + static_cast(outputs[0].data()), + static_cast(outputs[1].data()), op->get_activations()[0], op->get_activations()[1], op->get_clip(), op->get_direction(), op->get_linear_before_reset(), - inputs[6]->get_data_ptr()); + static_cast(inputs[6].data())); } } // namespace augru_seq -template +template bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - switch (inputs[2]->get_element_type()) { - case ngraph::element::Type_t::i64: - case ngraph::element::Type_t::u64: - augru_seq::evaluate(op, outputs, inputs); + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + switch (inputs[2].get_element_type()) { + case ov::element::i64: + case ov::element::u64: + augru_seq::evaluate(op, outputs, inputs); break; - case ngraph::element::Type_t::i32: - case ngraph::element::Type_t::u32: - augru_seq::evaluate(op, outputs, inputs); + case ov::element::i32: + case ov::element::u32: + augru_seq::evaluate(op, outputs, inputs); break; default: return false; @@ -258,78 +258,46 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); @@ -337,78 +305,46 @@ bool evaluate_node(std::shared_ptr -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); @@ -416,78 +352,46 @@ bool evaluate_node(std::shared_ptr no } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); @@ -495,78 +399,46 @@ bool evaluate_node(std::shared_ptr n } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + std::string("in evaluate_node()")); @@ -574,80 +446,47 @@ bool evaluate_node(std::shared_ptr n } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/sigmoid.cpp b/src/plugins/template/backend/ops/sigmoid.cpp index 7123ac4cb72249..9b2307ad884528 100644 --- a/src/plugins/template/backend/ops/sigmoid.cpp +++ b/src/plugins/template/backend/ops/sigmoid.cpp @@ -6,62 +6,57 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::sigmoid(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::sigmoid(inputs[0].data(), outputs[0].data(), ov::shape_size(inputs[0].get_shape())); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/sign.cpp b/src/plugins/template/backend/ops/sign.cpp index 663a7a702be43b..c273c59afb5cc3 100644 --- a/src/plugins/template/backend/ops/sign.cpp +++ b/src/plugins/template/backend/ops/sign.cpp @@ -6,60 +6,55 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::sign(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::sign(inputs[0].data(), outputs[0].data(), ov::shape_size(inputs[0].get_shape())); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/softsign.cpp b/src/plugins/template/backend/ops/softsign.cpp index 97885e733ee056..cd4c639bff8b6b 100644 --- a/src/plugins/template/backend/ops/softsign.cpp +++ b/src/plugins/template/backend/ops/softsign.cpp @@ -6,31 +6,31 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - ngraph::element::Type input_et = op->get_input_element_type(0); +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + ov::element::Type input_et = op->get_input_element_type(0); switch (input_et) { - case ngraph::element::Type_t::f64: - ov::reference::softsign(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::f64: + ov::reference::softsign(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape())); break; - case ngraph::element::Type_t::f32: - ov::reference::softsign(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::f32: + ov::reference::softsign(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape())); break; - case ngraph::element::Type_t::f16: - ov::reference::softsign(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::f16: + ov::reference::softsign(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape())); break; - case ngraph::element::Type_t::bf16: - ov::reference::softsign(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); + case ov::element::bf16: + ov::reference::softsign(inputs[0].data(), + outputs[0].data(), + ov::shape_size(inputs[0].get_shape())); break; default: return false; @@ -39,52 +39,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/squared_difference.cpp b/src/plugins/template/backend/ops/squared_difference.cpp index 9f8c385e6b6bd0..f861cd2fe62cbe 100644 --- a/src/plugins/template/backend/ops/squared_difference.cpp +++ b/src/plugins/template/backend/ops/squared_difference.cpp @@ -6,95 +6,62 @@ #include "evaluate_node.hpp" -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::squared_difference(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - inputs[1]->get_shape(), +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::squared_difference(inputs[0].data(), + inputs[1].data(), + outputs[0].data(), + inputs[0].get_shape(), + inputs[1].get_shape(), op->get_autob()); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/tanh.cpp b/src/plugins/template/backend/ops/tanh.cpp index c85c5827a95fab..cb0c35246f09a9 100644 --- a/src/plugins/template/backend/ops/tanh.cpp +++ b/src/plugins/template/backend/ops/tanh.cpp @@ -2,65 +2,59 @@ // SPDX-License-Identifier: Apache-2.0 // -// clang-format off -#include "evaluate_node.hpp" #include "openvino/reference/tanh.hpp" -// clang-format on -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using T = typename ngraph::element_type_traits::value_type; - ov::reference::tanh(inputs[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - ngraph::shape_size(inputs[0]->get_shape())); +#include "evaluate_node.hpp" + +template +bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { + using T = typename ov::element_type_traits::value_type; + ov::reference::tanh(inputs[0].data(), outputs[0].data(), ov::shape_size(inputs[0].get_shape())); return true; } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/tensor_iterator.cpp b/src/plugins/template/backend/ops/tensor_iterator.cpp index 4266186b592315..8b3fbd62874b27 100644 --- a/src/plugins/template/backend/ops/tensor_iterator.cpp +++ b/src/plugins/template/backend/ops/tensor_iterator.cpp @@ -9,9 +9,8 @@ #include "tensor_conversion_util.hpp" namespace ti_v0 { -ov::reference::custom_evaluate_function evaluate = [](const std::shared_ptr& function, - const ngraph::HostTensorVector& inputs, - ngraph::HostTensorVector& outputs) -> void { +ov::reference::custom_evaluate_function evaluate = + [](const std::shared_ptr& function, const ov::TensorVector& inputs, ov::TensorVector& outputs) -> void { const auto& parameters = function->get_parameters(); const auto& parametersNumber = parameters.size(); const auto& inputsNumber = inputs.size(); @@ -27,25 +26,19 @@ ov::reference::custom_evaluate_function evaluate = [](const std::shared_ptrget_results(); outputs.reserve(results.size()); for (size_t i = 0; i < results.size(); ++i) { - outputs.push_back(std::make_shared(results[i]->output(0))); + outputs.push_back(ov::Tensor(results[i]->output(0))); } auto backend = ov::runtime::Backend::create(); auto handle = backend->compile(function); - OPENVINO_SUPPRESS_DEPRECATED_START - auto outputTensors = ov::util::wrap_tensors(outputs); - auto inputTensors = ov::util::wrap_tensors(inputs); - handle->call_with_validate(outputTensors, inputTensors); - - ov::util::update_output_host_tensors(outputs, outputTensors); - OPENVINO_SUPPRESS_DEPRECATED_END + handle->call_with_validate(outputs, inputs); }; } // namespace ti_v0 -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { ov::reference::tensor_iterator(op->get_num_iterations(), op->get_function(), op->get_output_descriptions(), @@ -57,80 +50,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/ops/unique.cpp b/src/plugins/template/backend/ops/unique.cpp index da1c0d09e54030..172d2299fa9034 100644 --- a/src/plugins/template/backend/ops/unique.cpp +++ b/src/plugins/template/backend/ops/unique.cpp @@ -7,63 +7,59 @@ #include "evaluate_node.hpp" template -void execute_unique(const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs, - const std::shared_ptr& op) { +void execute_unique(ov::TensorVector& outputs, + const ov::TensorVector& inputs, + const std::shared_ptr& op) { const auto maybe_extract_axis = [&op]() { std::unique_ptr axis; if (op->get_input_size() == 2 && ov::op::util::is_constant(op->input_value(1).get_node())) { const auto axis_constant = - std::dynamic_pointer_cast(op->input_value(1).get_node_shared_ptr()); + std::dynamic_pointer_cast(op->input_value(1).get_node_shared_ptr()); const auto axis_vec = axis_constant->cast_vector(); axis = std::unique_ptr(new int64_t{axis_vec.at(0)}); } return axis; }; - const auto unique_elements = - ov::reference::find_unique_elements(inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), - maybe_extract_axis(), - op->get_sorted()); + const auto unique_elements = ov::reference::find_unique_elements(inputs[0].data(), + inputs[0].get_shape(), + maybe_extract_axis(), + op->get_sorted()); const auto tensor_shapes = - ov::reference::make_tensor_shapes(unique_elements, inputs[0]->get_shape(), maybe_extract_axis()); + ov::reference::make_tensor_shapes(unique_elements, inputs[0].get_shape(), maybe_extract_axis()); auto& out_unique_elements = outputs[0]; auto& out_indices = outputs[1]; auto& out_rev_indices = outputs[2]; auto& out_counts = outputs[3]; - out_unique_elements->set_shape(std::get<0>(tensor_shapes)); - out_indices->set_shape(std::get<1>(tensor_shapes)); - out_rev_indices->set_shape(std::get<2>(tensor_shapes)); - out_counts->set_shape(std::get<1>(tensor_shapes)); + out_unique_elements.set_shape(std::get<0>(tensor_shapes)); + out_indices.set_shape(std::get<1>(tensor_shapes)); + out_rev_indices.set_shape(std::get<2>(tensor_shapes)); + out_counts.set_shape(std::get<1>(tensor_shapes)); - ov::reference::unique(out_unique_elements->get_data_ptr(), - out_indices->get_data_ptr(), - out_rev_indices->get_data_ptr(), - out_counts->get_data_ptr(), - inputs[0]->get_data_ptr(), - inputs[0]->get_shape(), + ov::reference::unique(out_unique_elements.data(), + out_indices.data(), + out_rev_indices.data(), + out_counts.data(), + inputs[0].data(), + inputs[0].get_shape(), std::get<0>(tensor_shapes), unique_elements); } -template -bool evaluate(const std::shared_ptr& op, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { - using Data_t = typename ngraph::element_type_traits::value_type; - if (op->get_index_element_type() == ngraph::element::i32 && op->get_count_element_type() == ngraph::element::i32) { +template +bool evaluate(const std::shared_ptr& op, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { + using Data_t = typename ov::element_type_traits::value_type; + if (op->get_index_element_type() == ov::element::i32 && op->get_count_element_type() == ov::element::i32) { execute_unique(outputs, inputs, op); - } else if (op->get_index_element_type() == ngraph::element::i64 && - op->get_count_element_type() == ngraph::element::i64) { + } else if (op->get_index_element_type() == ov::element::i64 && op->get_count_element_type() == ov::element::i64) { execute_unique(outputs, inputs, op); - } else if (op->get_index_element_type() == ngraph::element::i32 && - op->get_count_element_type() == ngraph::element::i64) { + } else if (op->get_index_element_type() == ov::element::i32 && op->get_count_element_type() == ov::element::i64) { execute_unique(outputs, inputs, op); - } else if (op->get_index_element_type() == ngraph::element::i64 && - op->get_count_element_type() == ngraph::element::i32) { + } else if (op->get_index_element_type() == ov::element::i64 && op->get_count_element_type() == ov::element::i32) { execute_unique(outputs, inputs, op); } else { return false; @@ -73,50 +69,47 @@ bool evaluate(const std::shared_ptr& op, } template <> -bool evaluate_node(std::shared_ptr node, - const ngraph::HostTensorVector& outputs, - const ngraph::HostTensorVector& inputs) { +bool evaluate_node(std::shared_ptr node, + ov::TensorVector& outputs, + const ov::TensorVector& inputs) { auto element_type = node->get_output_element_type(0); - if (ov::is_type(node) || ov::is_type(node)) + if (ov::is_type(node) || ov::is_type(node)) element_type = node->get_input_element_type(1); switch (element_type) { - case ngraph::element::Type_t::boolean: - return evaluate(ov::as_type_ptr(node), - outputs, - inputs); - case ngraph::element::Type_t::bf16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::f32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::i64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u1: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u4: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u8: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u16: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u32: - return evaluate(ov::as_type_ptr(node), outputs, inputs); - case ngraph::element::Type_t::u64: - return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::boolean: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::bf16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::f32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::i64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u1: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u4: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u8: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u16: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u32: + return evaluate(ov::as_type_ptr(node), outputs, inputs); + case ov::element::u64: + return evaluate(ov::as_type_ptr(node), outputs, inputs); default: - OPENVINO_THROW(std::string("Unhandled data type ") + node->get_element_type().get_type_name() + - std::string("in evaluate_node()")); + OPENVINO_THROW("Unhandled data type ", node->get_element_type().get_type_name(), " in evaluate_node()"); } } diff --git a/src/plugins/template/backend/opset_int_tbl.hpp b/src/plugins/template/backend/opset_int_tbl.hpp index f65bf093a800cb..c94db72de7728f 100644 --- a/src/plugins/template/backend/opset_int_tbl.hpp +++ b/src/plugins/template/backend/opset_int_tbl.hpp @@ -12,7 +12,7 @@ _OPENVINO_OP_REG(BatchNormInference, op::v0) _OPENVINO_OP_REG(Ceiling, op::v0) _OPENVINO_OP_REG(Convert, op::v0) _OPENVINO_OP_REG(CTCGreedyDecoder, op::v0) -_OPENVINO_OP_REG(CumSum, ngraph::op::v0) +_OPENVINO_OP_REG(CumSum, op::v0) _OPENVINO_OP_REG(DetectionOutput, op::v0) _OPENVINO_OP_REG(Elu, op::v0) _OPENVINO_OP_REG(FakeQuantize, op::v0) @@ -20,13 +20,13 @@ _OPENVINO_OP_REG(Gelu, op::v0) _OPENVINO_OP_REG(GRN, op::v0) _OPENVINO_OP_REG(HardSigmoid, op::v0) _OPENVINO_OP_REG(Interpolate, op::v0) -_OPENVINO_OP_REG(LRN, ngraph::op::v0) +_OPENVINO_OP_REG(LRN, op::v0) _OPENVINO_OP_REG(LSTMCell, op::v0) _OPENVINO_OP_REG(LSTMSequence, op::v0) -_OPENVINO_OP_REG(MVN, ngraph::op::v0) +_OPENVINO_OP_REG(MVN, op::v0) _OPENVINO_OP_REG(NormalizeL2, op::v0) -_OPENVINO_OP_REG(PriorBox, ngraph::op::v0) -_OPENVINO_OP_REG(Proposal, ngraph::op::v0) +_OPENVINO_OP_REG(PriorBox, op::v0) +_OPENVINO_OP_REG(Proposal, op::v0) _OPENVINO_OP_REG(PSROIPooling, op::v0) _OPENVINO_OP_REG(RegionYolo, op::v0) _OPENVINO_OP_REG(Relu, op::v0) @@ -40,16 +40,16 @@ _OPENVINO_OP_REG(TensorIterator, op::v0) _OPENVINO_OP_REG(ROIPooling, op::v0) _OPENVINO_OP_REG(AvgPool, op::v1) -_OPENVINO_OP_REG(BinaryConvolution, ngraph::op::v1) +_OPENVINO_OP_REG(BinaryConvolution, op::v1) _OPENVINO_OP_REG(ConvertLike, op::v1) -_OPENVINO_OP_REG(Convolution, ngraph::op::v1) -_OPENVINO_OP_REG(ConvolutionBackpropData, ngraph::op::v1) -_OPENVINO_OP_REG(DeformablePSROIPooling, ngraph::op::v1) -_OPENVINO_OP_REG(Equal, ngraph::op::v1) -_OPENVINO_OP_REG(Greater, ngraph::op::v1) -_OPENVINO_OP_REG(GroupConvolution, ngraph::op::v1) -_OPENVINO_OP_REG(GroupConvolutionBackpropData, ngraph::op::v1) -_OPENVINO_OP_REG(DeformableConvolution, ngraph::op::v1) +_OPENVINO_OP_REG(Convolution, op::v1) +_OPENVINO_OP_REG(ConvolutionBackpropData, op::v1) +_OPENVINO_OP_REG(DeformablePSROIPooling, op::v1) +_OPENVINO_OP_REG(Equal, op::v1) +_OPENVINO_OP_REG(Greater, op::v1) +_OPENVINO_OP_REG(GroupConvolution, op::v1) +_OPENVINO_OP_REG(GroupConvolutionBackpropData, op::v1) +_OPENVINO_OP_REG(DeformableConvolution, op::v1) _OPENVINO_OP_REG(LessEqual, op::v1) _OPENVINO_OP_REG(LogicalAnd, op::v1) _OPENVINO_OP_REG(LogicalOr, op::v1) @@ -67,11 +67,11 @@ _OPENVINO_OP_REG(GatherTree, op::v1) _OPENVINO_OP_REG(Assign, op::v3) _OPENVINO_OP_REG(Bucketize, op::v3) -_OPENVINO_OP_REG(EmbeddingBagOffsetsSum, ngraph::op::v3) -_OPENVINO_OP_REG(EmbeddingBagPackedSum, ngraph::op::v3) +_OPENVINO_OP_REG(EmbeddingBagOffsetsSum, op::v3) +_OPENVINO_OP_REG(EmbeddingBagPackedSum, op::v3) _OPENVINO_OP_REG(ExtractImagePatches, op::v3) -_OPENVINO_OP_REG(EmbeddingSegmentsSum, ngraph::op::v3) -_OPENVINO_OP_REG(GRUCell, ngraph::op::v3) +_OPENVINO_OP_REG(EmbeddingSegmentsSum, op::v3) +_OPENVINO_OP_REG(GRUCell, op::v3) _OPENVINO_OP_REG(NonMaxSuppression, op::v3) _OPENVINO_OP_REG(NonZero, op::v3) _OPENVINO_OP_REG(ReadValue, op::v3) @@ -94,7 +94,7 @@ _OPENVINO_OP_REG(NonMaxSuppression, op::v5) _OPENVINO_OP_REG(RNNSequence, op::v5) _OPENVINO_OP_REG(Round, op::v5) -_OPENVINO_OP_REG(Assign, ngraph::op::v6) +_OPENVINO_OP_REG(Assign, op::v6) _OPENVINO_OP_REG(CTCGreedyDecoderSeqLen, op::v6) _OPENVINO_OP_REG(ExperimentalDetectronDetectionOutput, op::v6) _OPENVINO_OP_REG(ExperimentalDetectronGenerateProposalsSingleImage, op::v6) @@ -103,21 +103,21 @@ _OPENVINO_OP_REG(ExperimentalDetectronPriorGridGenerator, op::v6) _OPENVINO_OP_REG(ExperimentalDetectronROIFeatureExtractor, op::v6) _OPENVINO_OP_REG(ExperimentalDetectronTopKROIs, op::v6) _OPENVINO_OP_REG(GatherElements, op::v6) -_OPENVINO_OP_REG(MVN, ngraph::op::v6) -_OPENVINO_OP_REG(ReadValue, ngraph::op::v6) +_OPENVINO_OP_REG(MVN, op::v6) +_OPENVINO_OP_REG(ReadValue, op::v6) _OPENVINO_OP_REG(DFT, op::v7) _OPENVINO_OP_REG(Einsum, op::v7) _OPENVINO_OP_REG(IDFT, op::v7) -_OPENVINO_OP_REG(Roll, ngraph::op::v7) +_OPENVINO_OP_REG(Roll, op::v7) -_OPENVINO_OP_REG(AdaptiveAvgPool, ngraph::op::v8) -_OPENVINO_OP_REG(AdaptiveMaxPool, ngraph::op::v8) +_OPENVINO_OP_REG(AdaptiveAvgPool, op::v8) +_OPENVINO_OP_REG(AdaptiveMaxPool, op::v8) _OPENVINO_OP_REG(Gather, op::v8) _OPENVINO_OP_REG(MatrixNms, op::v8) _OPENVINO_OP_REG(MulticlassNms, op::v8) -_OPENVINO_OP_REG(DeformableConvolution, ngraph::op::v8) -_OPENVINO_OP_REG(If, ngraph::op::v8) +_OPENVINO_OP_REG(DeformableConvolution, op::v8) +_OPENVINO_OP_REG(If, op::v8) _OPENVINO_OP_REG(GatherND, op::v8) _OPENVINO_OP_REG(DetectionOutput, op::v8) _OPENVINO_OP_REG(NV12toRGB, op::v8) @@ -129,7 +129,7 @@ _OPENVINO_OP_REG(Sigmoid, op::v0) _OPENVINO_OP_REG(Tanh, op::v0) _OPENVINO_OP_REG(Exp, op::v0) _OPENVINO_OP_REG(Log, op::v0) -_OPENVINO_OP_REG(PriorBox, ngraph::op::v8) +_OPENVINO_OP_REG(PriorBox, op::v8) _OPENVINO_OP_REG(PRelu, op::v0) _OPENVINO_OP_REG(GridSample, op::v9) From 35d0d92ef7d665f238e835ed3ea3d760476dde76 Mon Sep 17 00:00:00 2001 From: Evgeny Kotov Date: Tue, 19 Sep 2023 11:55:43 +0200 Subject: [PATCH 19/46] fix TSGatherForward transformation (#19821) * fix ts_gather_forward * remove unneeded header --- .../transpose_sinking/ts_gather.cpp | 10 ++++---- .../transpose_sinking/ts_gather_test.cpp | 25 +++++++++++++++++-- .../tests/transpose_sinking/ts_test_utils.cpp | 13 ++++++++++ .../tests/transpose_sinking/ts_test_utils.hpp | 3 +++ 4 files changed, 44 insertions(+), 7 deletions(-) diff --git a/src/common/transformations/src/transformations/transpose_sinking/ts_gather.cpp b/src/common/transformations/src/transformations/transpose_sinking/ts_gather.cpp index d7609c935f1d61..42fa6f85cc61cf 100644 --- a/src/common/transformations/src/transformations/transpose_sinking/ts_gather.cpp +++ b/src/common/transformations/src/transformations/transpose_sinking/ts_gather.cpp @@ -57,16 +57,17 @@ TSGatherForward::TSGatherForward() { } } - size_t axis; + size_t order_axis; if (axes[0] < 0) { auto data_rank = main_node->get_input_partial_shape(0).rank(); if (data_rank.is_dynamic()) { return false; } - axis = static_cast(axes[0] + data_rank.get_length()); + order_axis = static_cast(axes[0] + data_rank.get_length()); } else { - axis = static_cast(axes[0]); + order_axis = static_cast(axes[0]); } + const size_t axis = order_val[order_axis]; /* https://docs.openvino.ai/2023.0/openvino_docs_ops_movement_Gather_8.html The Gather output shape has the same shape as the input, @@ -136,8 +137,7 @@ TSGatherForward::TSGatherForward() { if (!success) { return false; } - auto new_axis = - ov::op::v0::Constant::create(gather_axis->get_element_type(), gather_axis->get_shape(), {order_val[axis]}); + auto new_axis = ov::op::v0::Constant::create(gather_axis->get_element_type(), gather_axis->get_shape(), {axis}); main_node->input(2).replace_source_output(new_axis); copy_runtime_info(gather_axis, new_axis); diff --git a/src/common/transformations/tests/transpose_sinking/ts_gather_test.cpp b/src/common/transformations/tests/transpose_sinking/ts_gather_test.cpp index 34586bcdd81178..2a410fb0181333 100644 --- a/src/common/transformations/tests/transpose_sinking/ts_gather_test.cpp +++ b/src/common/transformations/tests/transpose_sinking/ts_gather_test.cpp @@ -63,6 +63,7 @@ auto wrapper = [](const TestCase& test_case) { struct GatherForwardArguments { OutputVector inputs_to_main; + std::function&, const OutputVector&)> create_input_transpose_to_main; Output new_Gather_first_input; AxisVector new_transpose_order; }; @@ -76,7 +77,7 @@ auto test_forward_gather = [](const GatherForwardArguments& test_arguments) { test_case.inputs_to_main = test_arguments.inputs_to_main; // Test model description: - test_case.model.preprocess_inputs_to_main = {{set_transpose_for}, {{0}}}; + test_case.model.preprocess_inputs_to_main = {{test_arguments.create_input_transpose_to_main}, {{0}}}; test_case.model.main_op = {CREATE_GATHER_FACTORY(Gather)}; test_case.model.model_template = create_model; @@ -104,24 +105,44 @@ auto test_forward_gather = [](const GatherForwardArguments& test_arguments) { return wrapper(test_case); }; +class SetTransposeWithOrder { +public: + SetTransposeWithOrder(const AxisVector& order) : _order(order) {} + OutputVector operator()(const vector& idxs, const OutputVector& out_vec) const { + return set_transpose_with_order(idxs, out_vec, _order); + } + +private: + const AxisVector _order; +}; + vector tests_arguments_fw{ {{{parameter(f32, {3, 4, 5, 6}), constant(i32, {2}, {0, 2}), constant(i32, {1}, {2})}}, + set_transpose_for, constant(i32, {1}, {1}), AxisVector{3, 2, 1, 0}}, {{parameter(f32, {2, 4}), constant(i32, {}, {0}), constant(i32, {1}, {1})}, + set_transpose_for, constant(i32, {1}, {0}), AxisVector{0}}, {{parameter(f32, {2, 4}), constant(i32, {1}, {0}), constant(i32, {1}, {1})}, + set_transpose_for, constant(i32, {1}, {0}), AxisVector{1, 0}}, {{parameter(f32, {2, 3, 4}), constant(i32, {2, 3}, {0, 1, 0, 1, 0, 1}), constant(i32, {1}, {1})}, + set_transpose_for, constant(i32, {1}, {1}), - AxisVector{3, 1, 2, 0}}}; + AxisVector{3, 1, 2, 0}}, + {{parameter(f32, {64, 49, 3, 3, 32}), constant(i32, {}, {1}), constant(i32, {}, {0})}, + SetTransposeWithOrder(AxisVector{2, 0, 3, 1, 4}), + constant(i32, {}, {2}), + AxisVector{0, 2, 1, 3}}}; INSTANTIATE_TEST_SUITE_P(TSCommonGatherForward_0, TSTestFixture, test_forward_gather(tests_arguments_fw[0])); INSTANTIATE_TEST_SUITE_P(TSCommonGatherForward_1, TSTestFixture, test_forward_gather(tests_arguments_fw[1])); INSTANTIATE_TEST_SUITE_P(TSCommonGatherForward_2, TSTestFixture, test_forward_gather(tests_arguments_fw[2])); INSTANTIATE_TEST_SUITE_P(TSCommonGatherForward_3, TSTestFixture, test_forward_gather(tests_arguments_fw[3])); +INSTANTIATE_TEST_SUITE_P(TSCommonGatherForward_4, TSTestFixture, test_forward_gather(tests_arguments_fw[4])); struct GatherBackwardArguments { OutputVector inputs_to_main; diff --git a/src/common/transformations/tests/transpose_sinking/ts_test_utils.cpp b/src/common/transformations/tests/transpose_sinking/ts_test_utils.cpp index d0a81c5dd404bf..31be099f03a868 100644 --- a/src/common/transformations/tests/transpose_sinking/ts_test_utils.cpp +++ b/src/common/transformations/tests/transpose_sinking/ts_test_utils.cpp @@ -52,6 +52,19 @@ OutputVector set_transpose_for(const vector& idxs, const OutputVector& o return result; } +OutputVector set_transpose_with_order(const vector& idxs, + const OutputVector& out_vec, + const vector& transpose_order_axes) { + OutputVector result = out_vec; + for (const auto& idx : idxs) { + const auto& out = out_vec[idx]; + auto order = make_shared(element::i32, Shape{transpose_order_axes.size()}, transpose_order_axes); + auto transpose = make_shared(out, order); + result[idx] = transpose; + } + return result; +} + OutputVector set_gather_for(const vector& idxs, const OutputVector& out_vec) { OutputVector result = out_vec; for (const auto& idx : idxs) { diff --git a/src/common/transformations/tests/transpose_sinking/ts_test_utils.hpp b/src/common/transformations/tests/transpose_sinking/ts_test_utils.hpp index 826d75e0b1bcdb..cc8685c1d7e911 100644 --- a/src/common/transformations/tests/transpose_sinking/ts_test_utils.hpp +++ b/src/common/transformations/tests/transpose_sinking/ts_test_utils.hpp @@ -21,6 +21,9 @@ std::string to_string(const ov::Shape& shape); ov::ParameterVector filter_parameters(const ov::OutputVector& out_vec); ov::OutputVector set_transpose_for(const std::vector& idxs, const ov::OutputVector& out_vec); +ov::OutputVector set_transpose_with_order(const std::vector& idxs, + const ov::OutputVector& out_vec, + const std::vector& transpose_order_axes); ov::OutputVector set_gather_for(const std::vector& idxs, const ov::OutputVector& out_vec); std::shared_ptr create_main_node(const ov::OutputVector& inputs, size_t num_ops, const FactoryPtr& creator); From 2de9df8832991874edf8191478bc39374df621ea Mon Sep 17 00:00:00 2001 From: Sofya Balandina Date: Tue, 19 Sep 2023 11:00:14 +0100 Subject: [PATCH 20/46] [apiConformance] Remove bf16 precision as unsupported (#19761) --- .../behavior/ov_infer_request/io_tensor.cpp | 19 ++++++++++++++++++- .../behavior/ov_infer_request/io_tensor.cpp | 5 ----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_infer_request/io_tensor.cpp b/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_infer_request/io_tensor.cpp index e1858a17781514..5d741f5f8148e7 100644 --- a/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_infer_request/io_tensor.cpp +++ b/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_infer_request/io_tensor.cpp @@ -20,7 +20,6 @@ INSTANTIATE_TEST_SUITE_P(ov_infer_request_mandatory, OVInferRequestIOTensorTest, std::vector ovIOTensorElemTypes = { ov::element::boolean, - ov::element::bf16, ov::element::f16, ov::element::f32, ov::element::f64, @@ -47,4 +46,22 @@ INSTANTIATE_TEST_SUITE_P(ov_infer_request_mandatory, OVInferRequestCheckTensorPr ::testing::ValuesIn(return_all_possible_device_combination()), ::testing::Values(pluginConfig)), OVInferRequestCheckTensorPrecision::getTestCaseName); + +std::vector ovIOTensorElemTypesOptional = { + ov::element::bf16 +}; + +INSTANTIATE_TEST_SUITE_P(ov_infer_request, OVInferRequestIOTensorSetPrecisionTest, + ::testing::Combine( + ::testing::ValuesIn(ovIOTensorElemTypesOptional), + ::testing::ValuesIn(return_all_possible_device_combination()), + ::testing::Values(pluginConfig)), + OVInferRequestIOTensorSetPrecisionTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(ov_infer_request, OVInferRequestCheckTensorPrecision, + ::testing::Combine( + ::testing::ValuesIn(ovIOTensorElemTypesOptional), + ::testing::ValuesIn(return_all_possible_device_combination()), + ::testing::Values(pluginConfig)), + OVInferRequestCheckTensorPrecision::getTestCaseName); } // namespace diff --git a/src/tests/functional/plugin/shared/src/behavior/ov_infer_request/io_tensor.cpp b/src/tests/functional/plugin/shared/src/behavior/ov_infer_request/io_tensor.cpp index 59fbc9b10852d2..344f0e57daf5d0 100644 --- a/src/tests/functional/plugin/shared/src/behavior/ov_infer_request/io_tensor.cpp +++ b/src/tests/functional/plugin/shared/src/behavior/ov_infer_request/io_tensor.cpp @@ -325,11 +325,6 @@ void OVInferRequestCheckTensorPrecision::createInferRequest() { try { compModel = core->compile_model(model, target_device, config); request = compModel.create_infer_request(); - - if (std::count(precisions.begin(), precisions.end(), element_type) == 0) { - FAIL() << "Precision " << element_type.c_type_string() - << " is marked as unsupported but the network was loaded successfully"; - } } catch (std::runtime_error& e) { const std::string errorMsg = e.what(); const auto expectedMsg = exp_error_str_; From a139fb48b796bcefa4ff263cbee1d8293090a6eb Mon Sep 17 00:00:00 2001 From: Roman Kazantsev Date: Tue, 19 Sep 2023 14:00:54 +0400 Subject: [PATCH 21/46] [TF FE][JAX] Add upper bound for jax dependencies (#19943) Signed-off-by: Kazantsev, Roman --- tests/constraints.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/constraints.txt b/tests/constraints.txt index aae862f09a37c7..3f5a718dff257a 100644 --- a/tests/constraints.txt +++ b/tests/constraints.txt @@ -20,3 +20,5 @@ pytest>=5.0,<7.5 pytest-dependency==0.5.1 pytest-html==3.2.0 pytest-timeout==2.1.0 +jax<=0.4.14 +jaxlib<=0.4.14 From ca344aea541da2df0d3358a52a6a1b35e667a7cb Mon Sep 17 00:00:00 2001 From: Vitaliy Urusovskij Date: Tue, 19 Sep 2023 15:46:13 +0400 Subject: [PATCH 22/46] `TensorIteratorTest` to API2.0 (#19869) * `TensorIteratorTest` to API2.0 * Port `TensorIteratorBody` to ov::test::utils --- .../single_layer_tests/tensor_iterator.cpp | 94 ++++--- .../single_op_tests/tensor_iterator.hpp | 15 ++ .../single_op/tensor_iterator.hpp | 39 +++ .../src/single_op/tensor_iterator.cpp | 238 ++++++++++++++++++ .../ngraph_functions/utils/ngraph_helpers.hpp | 12 +- .../src/utils/ngraph_helpers.cpp | 17 -- .../include/common_test_utils/test_enums.hpp | 9 + .../common_test_utils/src/test_enums.cpp | 17 ++ 8 files changed, 365 insertions(+), 76 deletions(-) create mode 100644 src/tests/functional/plugin/shared/include/single_op_tests/tensor_iterator.hpp create mode 100644 src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/tensor_iterator.hpp create mode 100644 src/tests/functional/shared_test_classes/src/single_op/tensor_iterator.cpp diff --git a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/tensor_iterator.cpp b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/tensor_iterator.cpp index 75e8cfe94225dc..d0c0f7594c72bc 100644 --- a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/tensor_iterator.cpp +++ b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/tensor_iterator.cpp @@ -3,59 +3,57 @@ // #include -#include -#include "single_layer_tests/tensor_iterator.hpp" +#include "single_op_tests/tensor_iterator.hpp" #include "common_test_utils/test_constants.hpp" -using namespace LayerTestsDefinitions; +using ov::test::TensorIteratorTest; namespace { - std::vector should_decompose = {true, false}; - // output values increase rapidly without clip, so use only seq_lengths = 2 - std::vector seq_lengths_zero_clip{2}; - std::vector seq_lengths_clip_non_zero{20}; - std::vector batch{1, 10}; - std::vector hidden_size{1, 10}; - // std::vector input_size{10}; - std::vector sequence_axis{0, 1}; - std::vector body_type - = {ngraph::helpers::TensorIteratorBody::LSTM, ngraph::helpers::TensorIteratorBody::RNN, - ngraph::helpers::TensorIteratorBody::GRU}; - std::vector clip{0.f}; - std::vector clip_non_zeros{0.7f}; - std::vector direction = {ngraph::op::RecurrentSequenceDirection::FORWARD, - ngraph::op::RecurrentSequenceDirection::REVERSE}; - std::vector netPrecisions = {InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16}; +std::vector should_decompose = {true, false}; +// output values increase rapidly without clip, so use only seq_lengths = 2 +std::vector seq_lengths_zero_clip{2}; +std::vector seq_lengths_clip_non_zero{20}; +std::vector batch{1, 10}; +std::vector hidden_size{1, 10}; +// std::vector input_size{10}; +std::vector sequence_axis{0, 1}; +std::vector body_type += {ov::test::utils::TensorIteratorBody::LSTM, ov::test::utils::TensorIteratorBody::RNN, + ov::test::utils::TensorIteratorBody::GRU}; +std::vector clip{0.f}; +std::vector clip_non_zeros{0.7f}; +std::vector direction = {ov::op::RecurrentSequenceDirection::FORWARD, + ov::op::RecurrentSequenceDirection::REVERSE}; +std::vector model_types = {ov::element::f32, ov::element::f16}; - INSTANTIATE_TEST_SUITE_P(smoke_TensorIteratorCommon, TensorIteratorTest, - ::testing::Combine( - ::testing::ValuesIn(should_decompose), - ::testing::ValuesIn(seq_lengths_zero_clip), - ::testing::ValuesIn(batch), - ::testing::ValuesIn(hidden_size), - //::testing::ValuesIn(input_size), // hardcoded to 10 due to Combine supports up to 10 args - ::testing::ValuesIn(sequence_axis), - ::testing::ValuesIn(clip), - ::testing::ValuesIn(body_type), - ::testing::ValuesIn(direction), - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_CPU)), - TensorIteratorTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TensorIteratorCommon, TensorIteratorTest, + ::testing::Combine( + ::testing::ValuesIn(should_decompose), + ::testing::ValuesIn(seq_lengths_zero_clip), + ::testing::ValuesIn(batch), + ::testing::ValuesIn(hidden_size), + //::testing::ValuesIn(input_size), // hardcoded to 10 due to Combine supports up to 10 args + ::testing::ValuesIn(sequence_axis), + ::testing::ValuesIn(clip), + ::testing::ValuesIn(body_type), + ::testing::ValuesIn(direction), + ::testing::ValuesIn(model_types), + ::testing::Values(ov::test::utils::DEVICE_CPU)), + TensorIteratorTest::getTestCaseName); - INSTANTIATE_TEST_SUITE_P(smoke_TensorIteratorCommonClip, TensorIteratorTest, - ::testing::Combine( - ::testing::ValuesIn(should_decompose), - ::testing::ValuesIn(seq_lengths_clip_non_zero), - ::testing::ValuesIn(batch), - ::testing::ValuesIn(hidden_size), - //::testing::ValuesIn(input_size), // hardcoded to 10 due to Combine supports up to 10 args - ::testing::ValuesIn(sequence_axis), - ::testing::ValuesIn(clip_non_zeros), - ::testing::ValuesIn(body_type), - ::testing::ValuesIn(direction), - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_CPU)), - TensorIteratorTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TensorIteratorCommonClip, TensorIteratorTest, + ::testing::Combine( + ::testing::ValuesIn(should_decompose), + ::testing::ValuesIn(seq_lengths_clip_non_zero), + ::testing::ValuesIn(batch), + ::testing::ValuesIn(hidden_size), + //::testing::ValuesIn(input_size), // hardcoded to 10 due to Combine supports up to 10 args + ::testing::ValuesIn(sequence_axis), + ::testing::ValuesIn(clip_non_zeros), + ::testing::ValuesIn(body_type), + ::testing::ValuesIn(direction), + ::testing::ValuesIn(model_types), + ::testing::Values(ov::test::utils::DEVICE_CPU)), + TensorIteratorTest::getTestCaseName); } // namespace diff --git a/src/tests/functional/plugin/shared/include/single_op_tests/tensor_iterator.hpp b/src/tests/functional/plugin/shared/include/single_op_tests/tensor_iterator.hpp new file mode 100644 index 00000000000000..f2409efa0cdeb3 --- /dev/null +++ b/src/tests/functional/plugin/shared/include/single_op_tests/tensor_iterator.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/single_op/tensor_iterator.hpp" + +namespace ov { +namespace test { +TEST_P(TensorIteratorTest, Inference) { + run(); +}; +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/tensor_iterator.hpp b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/tensor_iterator.hpp new file mode 100644 index 00000000000000..27e8a4e420d5ec --- /dev/null +++ b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/tensor_iterator.hpp @@ -0,0 +1,39 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include +#include "shared_test_classes/base/ov_subgraph.hpp" +#include "common_test_utils/test_enums.hpp" + +namespace ov { +namespace test { +using TensorIteratorParams = typename std::tuple< + bool, // using unroll tensor iterator transformation + size_t, // seq_lengths + size_t, // batch + size_t, // hidden size + // todo: fix. input size hardcoded to 10 due to limitation (10 args) of gtests Combine() func. + //size_t, // input size + size_t, // sequence axis + float, // clip + ov::test::utils::TensorIteratorBody, // body type + ov::op::RecurrentSequenceDirection, // direction + ov::element::Type, // Model type + ov::test::TargetDevice>; // Device name + +class TensorIteratorTest : public testing::WithParamInterface, + virtual public ov::test::SubgraphBaseTest { +public: + static std::string getTestCaseName(const testing::TestParamInfo &obj); + +protected: + void SetUp() override; +}; +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/src/single_op/tensor_iterator.cpp b/src/tests/functional/shared_test_classes/src/single_op/tensor_iterator.cpp new file mode 100644 index 00000000000000..7cf3bd44972846 --- /dev/null +++ b/src/tests/functional/shared_test_classes/src/single_op/tensor_iterator.cpp @@ -0,0 +1,238 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/control_flow/unroll_tensor_iterator.hpp" +#include "shared_test_classes/single_op/tensor_iterator.hpp" +#include "openvino/pass/manager.hpp" +#include "ngraph_functions/builders.hpp" + +namespace ov { +namespace test { +std::string TensorIteratorTest::getTestCaseName(const testing::TestParamInfo &obj) { + bool should_decompose; + size_t seq_lengths; + size_t batch; + size_t hidden_size; + size_t input_size = 10; + size_t sequence_axis; + ov::test::utils::TensorIteratorBody ti_body; + float clip; + ov::op::RecurrentSequenceDirection direction; + ov::element::Type model_type; + std::string target_device; + std::tie(should_decompose, seq_lengths, batch, hidden_size, sequence_axis, clip, ti_body, direction, model_type, + target_device) = obj.param; + std::vector input_shapes = {}; + + switch (ti_body) { + case ov::test::utils::TensorIteratorBody::LSTM: + input_shapes = { + {{batch, input_size}, {batch, hidden_size}, {batch, hidden_size}, {4 * hidden_size, input_size}, + {4 * hidden_size, hidden_size}, {4 * hidden_size}}, + }; + break; + case ov::test::utils::TensorIteratorBody::GRU: + input_shapes = { + {{batch, input_size}, {batch, hidden_size}, {3 * hidden_size, input_size}, + {3 * hidden_size, hidden_size}, {3 * hidden_size}}, + }; + break; + case ov::test::utils::TensorIteratorBody::RNN: + input_shapes = {{batch, input_size}, {batch, hidden_size}, + {hidden_size, input_size}, {hidden_size, hidden_size}, {hidden_size}}; + break; + } + + std::ostringstream result; + result << "unrolling=" << should_decompose << "_"; + result << "seq_len=" << seq_lengths << "_"; + result << "seq_len_axis=" << sequence_axis << "_"; + result << "batch=" << batch << "_"; + result << "hidden_size=" << hidden_size << "_"; + result << "input_size=" << input_size << "_"; + result << "IS=" << ov::test::utils::vec2str(input_shapes) << "_"; + result << "TensorIteratorBody=" << ti_body << "_"; + result << "direction=" << direction << "_"; + result << "clip=" << clip << "_"; + result << "modelType=" << model_type.to_string() << "_"; + result << "targetDevice=" << target_device << "_"; + return result.str(); +} + +void TensorIteratorTest::SetUp() { + size_t seq_lengths; + bool should_decompose; + size_t batch; + size_t hidden_size; + size_t input_size = 10; + size_t sequence_axis; + ov::test::utils::TensorIteratorBody ti_body; + float clip; + ov::op::RecurrentSequenceDirection direction; + ov::element::Type model_type; + std::tie(should_decompose, seq_lengths, batch, hidden_size, sequence_axis, clip, ti_body, direction, model_type, + targetDevice) = this->GetParam(); + std::vector input_shapes; + auto tensor_iterator = std::make_shared(); + + // Each case consist of 3 steps: + // 1. Create TensorIterator body. + // 2. Set PortMap + // 3. Create outer function + auto axis = std::make_shared(ov::element::i64, ov::Shape{1}, + std::vector{static_cast(sequence_axis)}); + switch (ti_body) { + case ov::test::utils::TensorIteratorBody::LSTM: { + input_shapes = { + {{batch, seq_lengths, input_size}, {batch, hidden_size}, {batch, hidden_size}, {4 * hidden_size, input_size}, + {4 * hidden_size, hidden_size}, {4 * hidden_size}}, + }; + if (sequence_axis == 0) { + // swap batch and seq_lengths + std::swap(input_shapes[0][0], input_shapes[0][1]); + } + init_input_shapes(static_shapes_to_test_representation(input_shapes)); + ov::ParameterVector outer_params{std::make_shared(model_type, inputDynamicShapes[0]), + std::make_shared(model_type, inputDynamicShapes[1]), + std::make_shared(model_type, inputDynamicShapes[2])}; + + // 1. Create TensorIterator body. + inputDynamicShapes[0][sequence_axis] = 1; // sliced dimension + ov::ParameterVector body_params{std::make_shared(model_type, inputDynamicShapes[0]), + std::make_shared(model_type, inputDynamicShapes[1]), + std::make_shared(model_type, inputDynamicShapes[2])}; + + auto squeeze = std::make_shared(body_params[0], axis); + std::vector WRB = {input_shapes[3], input_shapes[4], input_shapes[5]}; + ov::OutputVector out_vector = {squeeze, body_params[1], body_params[2]}; + auto lstm_cell = ngraph::builder::makeLSTM(out_vector, WRB, hidden_size, {"sigmoid", "tanh", "tanh"}, {}, {}, clip); + auto unsqueeze = std::make_shared(lstm_cell->output(0), axis); + ov::ResultVector results{std::make_shared(unsqueeze), + std::make_shared(lstm_cell->output(0)), + std::make_shared(lstm_cell->output(1))}; + auto body = std::make_shared(results, body_params, "lstm_cell"); + tensor_iterator->set_function(body); + + // 2. Set PortMap + if (direction == ov::op::RecurrentSequenceDirection::FORWARD) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, sequence_axis); + tensor_iterator->get_concatenated_slices(results[0], 0, 1, 1, -1, sequence_axis); + } else if (direction == ov::op::RecurrentSequenceDirection::REVERSE) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, sequence_axis); + tensor_iterator->get_concatenated_slices(results[0], -1, -1, 1, 0, sequence_axis); + } else { + OPENVINO_THROW("Bidirectional case is not supported."); + } + + tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[1]); + tensor_iterator->set_merged_input(body_params[2], outer_params[2], results[2]); + tensor_iterator->get_iter_value(results[1]); + tensor_iterator->get_iter_value(results[2]); + + // 3. Outer model + function = std::make_shared(tensor_iterator->outputs(), outer_params); + break; + } + case ov::test::utils::TensorIteratorBody::GRU: { + input_shapes = { + {{batch, seq_lengths, input_size}, {batch, hidden_size}, {3 * hidden_size, input_size}, + {3 * hidden_size, hidden_size}, {3 * hidden_size}}, + }; + if (sequence_axis == 0) { + // swap batch and seq_lengths + std::swap(input_shapes[0][0], input_shapes[0][1]); + } + init_input_shapes(static_shapes_to_test_representation(input_shapes)); + ov::ParameterVector outer_params{std::make_shared(model_type, inputDynamicShapes[0]), + std::make_shared(model_type, inputDynamicShapes[1])}; + + // 1. Create TensorIterator body. + inputDynamicShapes[0][sequence_axis] = 1; // sliced dimension + ov::ParameterVector body_params{std::make_shared(model_type, inputDynamicShapes[0]), + std::make_shared(model_type, inputDynamicShapes[1])}; + + std::vector WRB = {input_shapes[2], input_shapes[3], input_shapes[4]}; + auto squeeze = std::make_shared(body_params[0], axis); + ov::OutputVector out_vector = {squeeze, body_params[1]}; + auto gru_cell = ngraph::builder::makeGRU(out_vector, WRB, hidden_size, {"sigmoid", "tanh"}, + {}, {}, clip, false); + auto unsqueeze = std::make_shared(gru_cell->output(0), axis); + ov::ResultVector results{std::make_shared(gru_cell->output(0)), + std::make_shared(unsqueeze)}; + auto body = std::make_shared(results, body_params, "gru_cell"); + tensor_iterator->set_function(body); + + // 2. Set PortMap + if (direction == ov::op::RecurrentSequenceDirection::FORWARD) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, sequence_axis); + tensor_iterator->get_concatenated_slices(results[1], 0, 1, 1, -1, sequence_axis); + } else if (direction == ov::op::RecurrentSequenceDirection::REVERSE) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, sequence_axis); + tensor_iterator->get_concatenated_slices(results[1], -1, -1, 1, 0, sequence_axis); + } else { + OPENVINO_THROW("Bidirectional case is not supported."); + } + + tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[0]); + tensor_iterator->get_iter_value(results[0]); + + // 3. Outer function + function = std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1)}, outer_params); + break; + } + case ov::test::utils::TensorIteratorBody::RNN: { + input_shapes = {{batch, seq_lengths, input_size}, + {batch, hidden_size}, + {hidden_size, input_size}, + {hidden_size, hidden_size}, + {hidden_size}}; + if (sequence_axis == 0) { + // swap batch and seq_lengths + std::swap(input_shapes[0][0], input_shapes[0][1]); + } + init_input_shapes(static_shapes_to_test_representation(input_shapes)); + ov::ParameterVector outer_params{std::make_shared(model_type, inputDynamicShapes[0]), + std::make_shared(model_type, inputDynamicShapes[1])}; + + // 1. Create TensorIterator body. + inputDynamicShapes[0][sequence_axis] = 1; // sliced dimension + ov::ParameterVector body_params{std::make_shared(model_type, inputDynamicShapes[0]), + std::make_shared(model_type, inputDynamicShapes[1])}; + std::vector WRB = {input_shapes[2], input_shapes[3], input_shapes[4]}; + auto squeeze = std::make_shared(body_params[0], axis); + ov::OutputVector out_vector = {squeeze, body_params[1]}; + auto rnn_cell = ngraph::builder::makeRNN(out_vector, WRB, hidden_size, {"tanh"}, {}, {}, clip); + auto unsqueeze = std::make_shared(rnn_cell->output(0), axis); + ov::ResultVector results{std::make_shared(rnn_cell), + std::make_shared(unsqueeze)}; + auto body = std::make_shared(results, body_params, "rnn_cell"); + tensor_iterator->set_function(body); + + // 2. Set PortMap + if (direction == ov::op::RecurrentSequenceDirection::FORWARD) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, sequence_axis); + tensor_iterator->get_concatenated_slices(results[1], 0, 1, 1, -1, sequence_axis); + } else if (direction == ov::op::RecurrentSequenceDirection::REVERSE) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, sequence_axis); + tensor_iterator->get_concatenated_slices(results[1], -1, -1, 1, 0, sequence_axis); + } else { + OPENVINO_THROW("Bidirectional case is not supported."); + } + + tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[0]); + tensor_iterator->get_iter_value(results[0]); + + // 3. Outer function + function = std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1)}, outer_params); + break; + } + } + if (should_decompose) { + ov::pass::Manager m; + m.register_pass(); + m.run_passes(function); + } +} +} // namespace test +} // namespace ov diff --git a/src/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/ngraph_helpers.hpp b/src/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/ngraph_helpers.hpp index e8d16e0cfb783b..5d0f3cd4ac7d0b 100644 --- a/src/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/ngraph_helpers.hpp +++ b/src/tests/ngraph_helpers/ngraph_functions/include/ngraph_functions/utils/ngraph_helpers.hpp @@ -85,19 +85,11 @@ enum QuantizationGranularity { Perchannel }; +using ov::test::utils::TensorIteratorBody; using ov::test::utils::ReductionType; using ov::test::utils::DFTOpType; using ov::test::utils::InputLayerType; using ov::test::utils::PadMode; - - -enum class TensorIteratorBody { - RNN, - GRU, - LSTM, - // CNN todo: implement -}; - using ov::test::utils::SequenceTestsMode; enum class MemoryTransformation { @@ -169,8 +161,6 @@ std::vector convertOutputPrecision(const std::vector const element::Type_t& toPrecision, const size_t elementsCount); -std::ostream& operator<<(std::ostream& os, TensorIteratorBody type); - std::ostream& operator<<(std::ostream& os, MemoryTransformation type); void resize_function(std::shared_ptr function, const std::vector& targetInputStaticShapes); diff --git a/src/tests/ngraph_helpers/ngraph_functions/src/utils/ngraph_helpers.cpp b/src/tests/ngraph_helpers/ngraph_functions/src/utils/ngraph_helpers.cpp index ff28247546f311..6237536c9436e8 100644 --- a/src/tests/ngraph_helpers/ngraph_functions/src/utils/ngraph_helpers.cpp +++ b/src/tests/ngraph_helpers/ngraph_functions/src/utils/ngraph_helpers.cpp @@ -650,23 +650,6 @@ std::vector convertOutputPrecision(const std::vector } } -std::ostream& operator<<(std::ostream& os, TensorIteratorBody type) { - switch (type) { - case TensorIteratorBody::LSTM: - os << "LSTM"; - break; - case TensorIteratorBody::RNN: - os << "RNN"; - break; - case TensorIteratorBody::GRU: - os << "GRU"; - break; - default: - throw std::runtime_error("NOT_SUPPORTED_OP_TYPE"); - } - return os; -} - std::ostream& operator<<(std::ostream& os, MemoryTransformation type) { switch (type) { case MemoryTransformation::NONE: diff --git a/src/tests/test_utils/common_test_utils/include/common_test_utils/test_enums.hpp b/src/tests/test_utils/common_test_utils/include/common_test_utils/test_enums.hpp index 4311535df95697..6e73dd07a5adac 100644 --- a/src/tests/test_utils/common_test_utils/include/common_test_utils/test_enums.hpp +++ b/src/tests/test_utils/common_test_utils/include/common_test_utils/test_enums.hpp @@ -152,6 +152,13 @@ enum class DFTOpType { INVERSE }; +enum class TensorIteratorBody { + RNN, + GRU, + LSTM, + // CNN todo: implement +}; + // clang-format on std::ostream& operator<<(std::ostream& os, const ReductionType& m); @@ -182,6 +189,8 @@ std::ostream& operator<<(std::ostream& os, ov::op::v8::MatrixNms::SortResultType std::ostream& operator<<(std::ostream& os, ov::op::v8::MatrixNms::DecayFunction type); +std::ostream& operator<<(std::ostream& os, TensorIteratorBody type); + } // namespace utils } // namespace test } // namespace ov diff --git a/src/tests/test_utils/common_test_utils/src/test_enums.cpp b/src/tests/test_utils/common_test_utils/src/test_enums.cpp index 446aae2cda769a..8bb1cff3ce77dc 100644 --- a/src/tests/test_utils/common_test_utils/src/test_enums.cpp +++ b/src/tests/test_utils/common_test_utils/src/test_enums.cpp @@ -322,6 +322,23 @@ std::ostream& operator<<(std::ostream& os, op::v8::MatrixNms::DecayFunction type return os; } +std::ostream& operator<<(std::ostream& os, TensorIteratorBody type) { + switch (type) { + case TensorIteratorBody::LSTM: + os << "LSTM"; + break; + case TensorIteratorBody::RNN: + os << "RNN"; + break; + case TensorIteratorBody::GRU: + os << "GRU"; + break; + default: + throw std::runtime_error("NOT_SUPPORTED_OP_TYPE"); + } + return os; +} + } // namespace utils } // namespace test } // namespace ov From f926e0e3920e27d81355f007f3b5dcfb51342ad1 Mon Sep 17 00:00:00 2001 From: Maxim Vafin Date: Tue, 19 Sep 2023 14:02:46 +0200 Subject: [PATCH 23/46] [PT FE] Simplify repeat operation (#19926) --- src/frontends/pytorch/src/op/repeat.cpp | 34 ------------------------- src/frontends/pytorch/src/op_table.cpp | 3 +-- 2 files changed, 1 insertion(+), 36 deletions(-) delete mode 100644 src/frontends/pytorch/src/op/repeat.cpp diff --git a/src/frontends/pytorch/src/op/repeat.cpp b/src/frontends/pytorch/src/op/repeat.cpp deleted file mode 100644 index 15dc03a466ec92..00000000000000 --- a/src/frontends/pytorch/src/op/repeat.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2018-2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include "openvino/frontend/pytorch/node_context.hpp" -#include "openvino/op/broadcast.hpp" -#include "openvino/op/constant.hpp" -#include "openvino/op/shape_of.hpp" -#include "openvino/op/tile.hpp" -#include "utils.hpp" - -namespace ov { -namespace frontend { -namespace pytorch { -namespace op { - -using namespace ov::op; - -OutputVector translate_repeat(const NodeContext& context) { - num_inputs_check(context, 2, 2); - auto x = context.get_input(0); - auto repeats = context.get_input(1); - auto one = context.mark_node(v0::Constant::create(element::i32, Shape{}, {1})); - auto sizes_shape = context.mark_node(std::make_shared(repeats, element::i32)); - auto expand_shape = context.mark_node(std::make_shared(one, sizes_shape)); - auto expanded_input = - context.mark_node(std::make_shared(x, expand_shape, BroadcastType::BIDIRECTIONAL)); - return {context.mark_node(std::make_shared(expanded_input, repeats))}; -}; - -} // namespace op -} // namespace pytorch -} // namespace frontend -} // namespace ov \ No newline at end of file diff --git a/src/frontends/pytorch/src/op_table.cpp b/src/frontends/pytorch/src/op_table.cpp index 87358dd4d42ee3..4dd60e01b71d7f 100644 --- a/src/frontends/pytorch/src/op_table.cpp +++ b/src/frontends/pytorch/src/op_table.cpp @@ -134,7 +134,6 @@ OP_CONVERTER(translate_randn_like); OP_CONVERTER(translate_reciprocal); OP_CONVERTER(translate_relu6); OP_CONVERTER(translate_remainder); -OP_CONVERTER(translate_repeat); OP_CONVERTER(translate_repeat_interleave); OP_CONVERTER(translate_reshape); OP_CONVERTER(translate_reshape_as); @@ -393,7 +392,7 @@ const std::map get_supported_ops_ts() { {"aten::relu_", op::inplace_op>}, {"aten::relu6", op::translate_relu6}, {"aten::remainder", op::translate_remainder}, - {"aten::repeat", op::translate_repeat}, + {"aten::repeat", op::inplace_op>}, {"aten::repeat_interleave", op::translate_repeat_interleave}, {"aten::reshape", op::translate_reshape}, {"aten::reshape_as", op::translate_reshape_as}, From 57df7a44b7f24f98dd4d0066af5133da01206e68 Mon Sep 17 00:00:00 2001 From: Oleg Pipikin Date: Tue, 19 Sep 2023 15:03:06 +0200 Subject: [PATCH 24/46] Refactor CTCGreedyDecoderSeqLenLayerTest, GreedyDecoderLayerTest, CTCLossLayerTest (#19842) * Refactor CTCGreedyDecoderSeqLenLayerTest * Refactor usingGreedyDecoderLayerTest * Refactor CTCLossLayerTest --- .../single_layer_tests/ctc_greedy_decoder.cpp | 39 +++--- .../ctc_greedy_decoder_seq_len.cpp | 31 +++-- .../single_layer_tests/ctc_loss.cpp | 29 ++-- .../single_op_tests/ctc_greedy_decoder.hpp | 15 +++ .../ctc_greedy_decoder_seq_len.hpp | 15 +++ .../include/single_op_tests/ctc_loss.hpp | 15 +++ .../single_op/ctc_greedy_decoder.hpp | 31 +++++ .../single_op/ctc_greedy_decoder_seq_len.hpp | 36 +++++ .../single_op/ctc_loss.hpp | 43 ++++++ .../src/single_op/ctc_greedy_decoder.cpp | 75 +++++++++++ .../single_op/ctc_greedy_decoder_seq_len.cpp | 124 ++++++++++++++++++ .../src/single_op/ctc_loss.cpp | 92 +++++++++++++ 12 files changed, 495 insertions(+), 50 deletions(-) create mode 100644 src/tests/functional/plugin/shared/include/single_op_tests/ctc_greedy_decoder.hpp create mode 100644 src/tests/functional/plugin/shared/include/single_op_tests/ctc_greedy_decoder_seq_len.hpp create mode 100644 src/tests/functional/plugin/shared/include/single_op_tests/ctc_loss.hpp create mode 100644 src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_greedy_decoder.hpp create mode 100644 src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_greedy_decoder_seq_len.hpp create mode 100644 src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_loss.hpp create mode 100644 src/tests/functional/shared_test_classes/src/single_op/ctc_greedy_decoder.cpp create mode 100644 src/tests/functional/shared_test_classes/src/single_op/ctc_greedy_decoder_seq_len.cpp create mode 100644 src/tests/functional/shared_test_classes/src/single_op/ctc_loss.cpp diff --git a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp index 3e6cc4ebf2f872..0149a60ba1cb23 100644 --- a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp +++ b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_greedy_decoder.cpp @@ -2,35 +2,32 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "single_layer_tests/ctc_greedy_decoder.hpp" +#include "single_op_tests/ctc_greedy_decoder.hpp" #include "common_test_utils/test_constants.hpp" -using namespace LayerTestsDefinitions; -using namespace ngraph::helpers; - namespace { +using ov::test::CTCGreedyDecoderLayerTest; + // Common params -const std::vector netPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16 +const std::vector model_type = { + ov::element::f32, + ov::element::f16 }; std::vector mergeRepeated{true, false}; +std::vector> input_shapes_static = { + {{ 50, 3, 3 }}, + {{ 50, 3, 7 }}, + {{ 50, 3, 8 }}, + {{ 50, 3, 16 }}, + {{ 50, 3, 128 }}, + {{ 50, 3, 49 }}, + {{ 50, 3, 55 }}, + {{ 1, 1, 16 }}}; + const auto basicCases = ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({ 50, 3, 3 }), - std::vector({ 50, 3, 7 }), - std::vector({ 50, 3, 8 }), - std::vector({ 50, 3, 16 }), - std::vector({ 50, 3, 128 }), - std::vector({ 50, 3, 49 }), - std::vector({ 50, 3, 55 }), - std::vector({ 1, 1, 16 })), + ::testing::ValuesIn(model_type), + ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(input_shapes_static)), ::testing::ValuesIn(mergeRepeated), ::testing::Values(ov::test::utils::DEVICE_CPU)); diff --git a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp index 4b843fcb2c941a..bc83d623c8a6b2 100644 --- a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp +++ b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_greedy_decoder_seq_len.cpp @@ -2,30 +2,30 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "single_layer_tests/ctc_greedy_decoder_seq_len.hpp" +#include "single_op_tests/ctc_greedy_decoder_seq_len.hpp" #include "common_test_utils/test_constants.hpp" -using namespace LayerTestsDefinitions; -using namespace ngraph::helpers; - namespace { +using ov::test::CTCGreedyDecoderSeqLenLayerTest; -std::vector> inputShape{{1, 1, 1}, {1, 6, 10}, {3, 3, 16}, {5, 3, 55}}; +std::vector> shapes1 = {{{1, 1, 1}}, + {{1, 6, 10}}, + {{3, 3, 16}}, + {{5, 3, 55}}}; -const std::vector probPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16 +const std::vector probPrecisions = { + ov::element::f32, + ov::element::f16 }; -const std::vector idxPrecisions = { - InferenceEngine::Precision::I32, - InferenceEngine::Precision::I64 +const std::vector idxPrecisions = { + ov::element::i32, + ov::element::i64 }; std::vector mergeRepeated{true, false}; const auto basicCases = ::testing::Combine( - ::testing::ValuesIn(inputShape), + ::testing::ValuesIn(ov::test::static_shapes_to_test_representation({shapes1})), ::testing::Values(10), ::testing::ValuesIn(probPrecisions), ::testing::ValuesIn(idxPrecisions), @@ -37,9 +37,12 @@ INSTANTIATE_TEST_SUITE_P(smoke_set1, CTCGreedyDecoderSeqLenLayerTest, basicCases, CTCGreedyDecoderSeqLenLayerTest::getTestCaseName); +std::vector> shapes2 = {{{2, 8, 11}}, + {{4, 10, 55}}}; + INSTANTIATE_TEST_SUITE_P(smoke_set2, CTCGreedyDecoderSeqLenLayerTest, ::testing::Combine( - ::testing::ValuesIn(std::vector>{{2, 8, 11}, {4, 10, 55}}), + ::testing::ValuesIn(ov::test::static_shapes_to_test_representation({shapes2})), ::testing::ValuesIn(std::vector{5, 100}), ::testing::ValuesIn(probPrecisions), ::testing::ValuesIn(idxPrecisions), diff --git a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_loss.cpp b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_loss.cpp index c5da048ce40bc1..45a341a39003d4 100644 --- a/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_loss.cpp +++ b/src/plugins/intel_cpu/tests/functional/shared_tests_instances/single_layer_tests/ctc_loss.cpp @@ -4,19 +4,18 @@ #include -#include "single_layer_tests/ctc_loss.hpp" - -using namespace LayerTestsDefinitions; +#include "single_op_tests/ctc_loss.hpp" namespace { +using ov::test::CTCLossLayerTest; -const std::vector fPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16 +const std::vector f_type = { + ov::element::f32, + ov::element::f16 }; -const std::vector iPrecisions = { - InferenceEngine::Precision::I32, - InferenceEngine::Precision::I64 +const std::vector i_type = { + ov::element::i32, + ov::element::i64 }; const std::vector preprocessCollapseRepeated = {true, false}; @@ -24,7 +23,6 @@ const std::vector ctcMergeRepeated = {true, false}; const std::vector unique = {true, false}; const auto ctcLossArgsSubset1 = ::testing::Combine( - ::testing::Values(std::vector({2, 3, 3})), // logits shape ::testing::ValuesIn(std::vector>({{2, 3}, {3, 3}})), // logits length ::testing::ValuesIn(std::vector>>( {{{0, 1, 0}, {1, 0, 1}}, {{0, 1, 2}, {1, 1, 1}}})), // labels @@ -38,13 +36,13 @@ const auto ctcLossArgsSubset1 = ::testing::Combine( INSTANTIATE_TEST_SUITE_P(smoke_Set1, CTCLossLayerTest, ::testing::Combine( ctcLossArgsSubset1, - ::testing::ValuesIn(fPrecisions), - ::testing::ValuesIn(iPrecisions), + ::testing::Values(ov::test::static_shapes_to_test_representation({{2, 3, 3}})), + ::testing::ValuesIn(f_type), + ::testing::ValuesIn(i_type), ::testing::Values(ov::test::utils::DEVICE_CPU)), CTCLossLayerTest::getTestCaseName); const auto ctcLossArgsSubset2 = ::testing::Combine( - ::testing::Values(std::vector({3, 6, 8})), // logits shape ::testing::ValuesIn(std::vector>({{6, 5, 6}, {5, 5, 5}})), // logits length ::testing::ValuesIn(std::vector>>( {{{4, 1, 2, 3, 4, 5}, {5, 4, 3, 0, 1, 0}, {2, 1, 3, 1, 3, 0}}, @@ -59,8 +57,9 @@ const auto ctcLossArgsSubset2 = ::testing::Combine( INSTANTIATE_TEST_SUITE_P(smoke_Set2, CTCLossLayerTest, ::testing::Combine( ctcLossArgsSubset2, - ::testing::ValuesIn(fPrecisions), - ::testing::ValuesIn(iPrecisions), + ::testing::Values(ov::test::static_shapes_to_test_representation({{3, 6, 8}})), + ::testing::ValuesIn(f_type), + ::testing::ValuesIn(i_type), ::testing::Values(ov::test::utils::DEVICE_CPU)), CTCLossLayerTest::getTestCaseName); } // namespace diff --git a/src/tests/functional/plugin/shared/include/single_op_tests/ctc_greedy_decoder.hpp b/src/tests/functional/plugin/shared/include/single_op_tests/ctc_greedy_decoder.hpp new file mode 100644 index 00000000000000..2a3785283f2c14 --- /dev/null +++ b/src/tests/functional/plugin/shared/include/single_op_tests/ctc_greedy_decoder.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/single_op/ctc_greedy_decoder.hpp" + +namespace ov { +namespace test { +TEST_P(CTCGreedyDecoderLayerTest, Inference) { + run(); +}; +} // namespace test +} // namespace ov diff --git a/src/tests/functional/plugin/shared/include/single_op_tests/ctc_greedy_decoder_seq_len.hpp b/src/tests/functional/plugin/shared/include/single_op_tests/ctc_greedy_decoder_seq_len.hpp new file mode 100644 index 00000000000000..edcb79b3e050f7 --- /dev/null +++ b/src/tests/functional/plugin/shared/include/single_op_tests/ctc_greedy_decoder_seq_len.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/single_op/ctc_greedy_decoder_seq_len.hpp" + +namespace ov { +namespace test { +TEST_P(CTCGreedyDecoderSeqLenLayerTest, Inference) { + run(); +}; +} // namespace test +} // namespace ov diff --git a/src/tests/functional/plugin/shared/include/single_op_tests/ctc_loss.hpp b/src/tests/functional/plugin/shared/include/single_op_tests/ctc_loss.hpp new file mode 100644 index 00000000000000..43c32bdda6ff80 --- /dev/null +++ b/src/tests/functional/plugin/shared/include/single_op_tests/ctc_loss.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include "shared_test_classes/single_op/ctc_loss.hpp" + +namespace ov { +namespace test { +TEST_P(CTCLossLayerTest, Inference) { + run(); +} +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_greedy_decoder.hpp b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_greedy_decoder.hpp new file mode 100644 index 00000000000000..d795bbea676169 --- /dev/null +++ b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_greedy_decoder.hpp @@ -0,0 +1,31 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +#include "shared_test_classes/base/ov_subgraph.hpp" + +namespace ov { +namespace test { +typedef std::tuple< + ov::element::Type, // Model type + std::vector, // Input shapes + bool, // Merge repeated + std::string // Device name +> ctcGreedyDecoderParams; + +class CTCGreedyDecoderLayerTest + : public testing::WithParamInterface, + virtual public ov::test::SubgraphBaseTest { +public: + static std::string getTestCaseName(const testing::TestParamInfo& obj); +protected: + void SetUp() override; +}; +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_greedy_decoder_seq_len.hpp b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_greedy_decoder_seq_len.hpp new file mode 100644 index 00000000000000..46e85ad6fa9260 --- /dev/null +++ b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_greedy_decoder_seq_len.hpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +#include "shared_test_classes/base/ov_subgraph.hpp" + +namespace ov { +namespace test { +typedef std::tuple< + std::vector, // Input shape + int, // Sequence lengths + ov::element::Type, // Probabilities precision + ov::element::Type, // Indices precision + int, // Blank index + bool, // Merge repeated + std::string // Device name + > ctcGreedyDecoderSeqLenParams; + +class CTCGreedyDecoderSeqLenLayerTest + : public testing::WithParamInterface, + virtual public ov::test::SubgraphBaseTest { +public: + static std::string getTestCaseName(const testing::TestParamInfo& obj); + +protected: + void SetUp() override; +}; + +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_loss.hpp b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_loss.hpp new file mode 100644 index 00000000000000..91439cc2c894be --- /dev/null +++ b/src/tests/functional/shared_test_classes/include/shared_test_classes/single_op/ctc_loss.hpp @@ -0,0 +1,43 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include + +#include "shared_test_classes/base/ov_subgraph.hpp" + +namespace ov { +namespace test { +typedef std::tuple< + std::vector, // logits length + std::vector>, // labels + std::vector, // labels length + int, // blank index + bool, // preprocessCollapseRepeated + bool, // ctcMergeRepeated + bool // Unique +> CTCLossParamsSubset; + +typedef std::tuple< + CTCLossParamsSubset, + std::vector, // Input shapes + ov::element::Type, // Float point precision + ov::element::Type, // Integer precision + std::string // Device name +> CTCLossParams; + +class CTCLossLayerTest : public testing::WithParamInterface, + virtual public ov::test::SubgraphBaseTest { +public: + static std::string getTestCaseName(const testing::TestParamInfo &obj); + +protected: + void SetUp() override; +}; + +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/src/single_op/ctc_greedy_decoder.cpp b/src/tests/functional/shared_test_classes/src/single_op/ctc_greedy_decoder.cpp new file mode 100644 index 00000000000000..a049952f180253 --- /dev/null +++ b/src/tests/functional/shared_test_classes/src/single_op/ctc_greedy_decoder.cpp @@ -0,0 +1,75 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/single_op/ctc_greedy_decoder.hpp" + +#include + +#include "openvino/op/parameter.hpp" +#include "openvino/op/result.hpp" +#include "openvino/op/constant.hpp" +#include "openvino/op/ctc_greedy_decoder.hpp" + +namespace ov { +namespace test { +std::string CTCGreedyDecoderLayerTest::getTestCaseName(const testing::TestParamInfo& obj) { + ov::element::Type model_type; + std::vector shapes; + std::string targetDevice; + bool merge_repeated; + std::tie(model_type, shapes, merge_repeated, targetDevice) = obj.param; + + std::ostringstream result; + const char separator = '_'; + + result << "IS=("; + for (size_t i = 0lu; i < shapes.size(); i++) { + result << ov::test::utils::partialShape2str({shapes[i].first}) << (i < shapes.size() - 1lu ? "_" : ""); + } + result << ")_TS="; + for (size_t i = 0lu; i < shapes.front().second.size(); i++) { + result << "{"; + for (size_t j = 0lu; j < shapes.size(); j++) { + result << ov::test::utils::vec2str(shapes[j].second[i]) << (j < shapes.size() - 1lu ? "_" : ""); + } + result << "}_"; + } + result << "netPRC=" << model_type.get_type_name() << separator; + result << "merge_repeated=" << std::boolalpha << merge_repeated << separator; + result << "trgDev=" << targetDevice; + + return result.str(); +} + +void CTCGreedyDecoderLayerTest::SetUp() { + ov::element::Type model_type; + std::vector shapes; + bool merge_repeated; + std::tie(model_type, shapes, merge_repeated, targetDevice) = GetParam(); + init_input_shapes(shapes); + + auto param = std::make_shared(model_type, inputDynamicShapes.front()); + + size_t T = targetStaticShapes[0][0][0]; + size_t B = targetStaticShapes[0][0][1]; + + std::mt19937 gen(1); + std::uniform_int_distribution dist(1, T); + + std::vector sequence_mask_data(B * T, 0); + for (int b = 0; b < B; b++) { + int len = dist(gen); + for (int t = 0; t < len; t++) { + sequence_mask_data[t * B + b] = 1; + } + } + auto sequence_mask_node = std::make_shared(model_type, ov::Shape{T, B}, sequence_mask_data); + + auto ctc_greedy_decoder = std::make_shared(param, sequence_mask_node, merge_repeated); + + auto result = std::make_shared(ctc_greedy_decoder); + function = std::make_shared(result, ov::ParameterVector{param}, "CTCGreedyDecoder"); +} +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/src/single_op/ctc_greedy_decoder_seq_len.cpp b/src/tests/functional/shared_test_classes/src/single_op/ctc_greedy_decoder_seq_len.cpp new file mode 100644 index 00000000000000..1770aff47aae49 --- /dev/null +++ b/src/tests/functional/shared_test_classes/src/single_op/ctc_greedy_decoder_seq_len.cpp @@ -0,0 +1,124 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/single_op/ctc_greedy_decoder_seq_len.hpp" + +#include +#include +#include +#include + +#include "common_test_utils/ov_tensor_utils.hpp" +#include "openvino/op/parameter.hpp" +#include "openvino/op/constant.hpp" +#include "openvino/op/result.hpp" +#include "openvino/op/ctc_greedy_decoder_seq_len.hpp" + +namespace ov { +namespace test { +std::string CTCGreedyDecoderSeqLenLayerTest::getTestCaseName(const testing::TestParamInfo& obj) { + std::vector shapes; + int sequenceLengths; + ov::element::Type dataPrecision, indicesPrecision; + int blankIndex; + bool mergeRepeated; + std::string targetDevice; + std::tie(shapes, + sequenceLengths, + dataPrecision, + indicesPrecision, + blankIndex, + mergeRepeated, + targetDevice) = obj.param; + + std::ostringstream result; + + result << "IS=("; + for (size_t i = 0lu; i < shapes.size(); i++) { + result << ov::test::utils::partialShape2str({shapes[i].first}) << (i < shapes.size() - 1lu ? "_" : ""); + } + result << ")_TS="; + for (size_t i = 0lu; i < shapes.front().second.size(); i++) { + result << "{"; + for (size_t j = 0lu; j < shapes.size(); j++) { + result << ov::test::utils::vec2str(shapes[j].second[i]) << (j < shapes.size() - 1lu ? "_" : ""); + } + result << "}_"; + } + result << "seqLen=" << sequenceLengths << '_'; + result << "dataPRC=" << dataPrecision.get_type_name() << '_'; + result << "idxPRC=" << indicesPrecision.get_type_name() << '_'; + result << "BlankIdx=" << blankIndex << '_'; + result << "mergeRepeated=" << std::boolalpha << mergeRepeated << '_'; + result << "trgDev=" << targetDevice; + + return result.str(); +} + +void CTCGreedyDecoderSeqLenLayerTest::SetUp() { + std::vector shapes; + int sequenceLengths; + ov::element::Type model_type, indices_type; + int blankIndex; + bool mergeRepeated; + std::tie(shapes, + sequenceLengths, + model_type, + indices_type, + blankIndex, + mergeRepeated, + targetDevice) = GetParam(); + init_input_shapes(shapes); + + ov::ParameterVector params {std::make_shared(model_type, inputDynamicShapes.front())}; + + const auto sequenceLenNode = [&] { + const size_t B = targetStaticShapes[0][0][0]; + const size_t T = targetStaticShapes[0][0][1]; + + // Cap sequence length up to T + const int seqLen = std::min(T, sequenceLengths); + + std::mt19937 gen{42}; + std::uniform_int_distribution dist(1, seqLen); + + std::vector sequenceLenData(B); + for (int b = 0; b < B; b++) { + const int len = dist(gen); + sequenceLenData[b] = len; + } + + return std::make_shared(indices_type, ov::Shape{B}, sequenceLenData); + }(); + + // Cap blank index up to C - 1 + int C = targetStaticShapes[0][0][2]; + blankIndex = std::min(blankIndex, C - 1); + + const auto blankIndexNode = [&] { + if (indices_type == element::i32) { + const auto blankIdxDataI32 = std::vector{blankIndex}; + return std::make_shared(indices_type, ov::Shape{1}, blankIdxDataI32); + } else if (indices_type == element::i64) { + const auto blankIdxDataI64 = std::vector{blankIndex}; + return std::make_shared(indices_type, ov::Shape{1}, blankIdxDataI64); + } + throw std::logic_error("Unsupported index precision"); + }(); + + auto ctcGreedyDecoderSeqLen = std::make_shared(params[0], + sequenceLenNode, + blankIndexNode, + mergeRepeated, + indices_type, + indices_type); + + ov::OutputVector results; + for (int i = 0; i < ctcGreedyDecoderSeqLen->get_output_size(); i++) { + results.push_back(std::make_shared(ctcGreedyDecoderSeqLen->output(i))); + } + function = std::make_shared(results, params, "CTCGreedyDecoderSeqLen"); +} +} // namespace test +} // namespace ov diff --git a/src/tests/functional/shared_test_classes/src/single_op/ctc_loss.cpp b/src/tests/functional/shared_test_classes/src/single_op/ctc_loss.cpp new file mode 100644 index 00000000000000..cc4cbbb2fe7eff --- /dev/null +++ b/src/tests/functional/shared_test_classes/src/single_op/ctc_loss.cpp @@ -0,0 +1,92 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "shared_test_classes/single_op/ctc_loss.hpp" + +#include "openvino/op/parameter.hpp" +#include "openvino/op/result.hpp" +#include "openvino/op/constant.hpp" +#include "openvino/op/ctc_loss.hpp" + +namespace ov { +namespace test { +std::string CTCLossLayerTest::getTestCaseName(const testing::TestParamInfo& obj) { + std::vector shapes; + ov::element::Type fp_type, int_type; + bool preprocess_collapse_repeated, ctc_merge_repeated, unique; + std::vector logits_length, labels_length; + std::vector> labels; + int blank_index; + std::string targetDevice; + CTCLossParamsSubset ctcLossArgsSubset; + std::tie(ctcLossArgsSubset, shapes, fp_type, int_type, targetDevice) = obj.param; + std::tie(logits_length, labels, labels_length, blank_index, preprocess_collapse_repeated, ctc_merge_repeated, unique) = ctcLossArgsSubset; + + std::ostringstream result; + result << "IS=("; + for (size_t i = 0lu; i < shapes.size(); i++) { + result << ov::test::utils::partialShape2str({shapes[i].first}) << (i < shapes.size() - 1lu ? "_" : ""); + } + result << ")_TS="; + for (size_t i = 0lu; i < shapes.front().second.size(); i++) { + result << "{"; + for (size_t j = 0lu; j < shapes.size(); j++) { + result << ov::test::utils::vec2str(shapes[j].second[i]) << (j < shapes.size() - 1lu ? "_" : ""); + } + result << "}_"; + } + result << "LL=" << ov::test::utils::vec2str(logits_length) << "_"; + result << "A=" << ov::test::utils::vec2str(labels) << "_"; + result << "AL=" << ov::test::utils::vec2str(labels_length) << "_"; + result << "BI=" << blank_index << "_"; + result << "PCR=" << preprocess_collapse_repeated << "_"; + result << "CMR=" << ctc_merge_repeated << "_"; + result << "U=" << unique << "_"; + result << "PF=" << fp_type.get_type_name() << "_"; + result << "PI=" << int_type.get_type_name() << "_"; + result << "targetDevice=" << targetDevice; + return result.str(); +} + +void CTCLossLayerTest::SetUp() { + std::vector shapes; + ov::element::Type fp_type, int_type; + bool preprocess_collapse_repeated, ctc_merge_repeated, unique; + std::vector logits_length, labels_length; + std::vector> labels; + int blank_index; + CTCLossParamsSubset ctcLossArgsSubset; + std::tie(ctcLossArgsSubset, shapes, fp_type, int_type, targetDevice) = this->GetParam(); + std::tie(logits_length, labels, labels_length, blank_index, preprocess_collapse_repeated, + ctc_merge_repeated, unique) = ctcLossArgsSubset; + init_input_shapes(shapes); + + auto param = std::make_shared(fp_type, inputDynamicShapes.front()); + + size_t N = targetStaticShapes[0][0][0]; + size_t T = targetStaticShapes[0][0][1]; + + std::vector labelsOneD(N * T); + for (int i = 0; i < labels.size(); i++) + std::copy(labels[i].begin(), labels[i].end(), labelsOneD.data() + i * T); + + auto logits_length_node = std::make_shared(int_type, ov::Shape{N}, logits_length); + auto labels_node = std::make_shared(int_type, ov::Shape{N, T}, labelsOneD); + auto labels_length_node = std::make_shared(int_type, ov::Shape{N}, labels_length); + auto blank_index_node = std::make_shared(int_type, ov::Shape{}, blank_index); + + auto ctc_loss = std::make_shared(param, + logits_length_node, + labels_node, + labels_length_node, + blank_index_node, + preprocess_collapse_repeated, + ctc_merge_repeated, + unique); + + auto result = std::make_shared(ctc_loss); + function = std::make_shared(result, ov::ParameterVector{param}, "CTCLoss"); +} +} // namespace test +} // namespace ov From e5a3500174494c20e2caeaff308b4473475c7a14 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Tue, 19 Sep 2023 17:14:28 +0400 Subject: [PATCH 25/46] Fixed compilation on macOS 14 with new core development tools (#19946) --- src/plugins/intel_cpu/src/nodes/mha.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/intel_cpu/src/nodes/mha.cpp b/src/plugins/intel_cpu/src/nodes/mha.cpp index d4405be5d468d0..19cf63ac727cba 100644 --- a/src/plugins/intel_cpu/src/nodes/mha.cpp +++ b/src/plugins/intel_cpu/src/nodes/mha.cpp @@ -16,6 +16,7 @@ #include "common/cpu_convert.h" #include "transformations/cpu_opset/x64/op/mha.hpp" #include "dnnl_extension_utils.h" +#include "utils/bfloat16.hpp" #include using namespace InferenceEngine; From 67a41b28ec43577b80465f3883940d4920f111f3 Mon Sep 17 00:00:00 2001 From: PiotrekCzajkowski <130136084+PiotrekCzajkowski@users.noreply.github.com> Date: Tue, 19 Sep 2023 15:16:16 +0200 Subject: [PATCH 26/46] Add file via upload (#19605) * Add files via upload add new words to dict * Add files via upload Fix typos in words and new words to cspell.json file. --- cspell.json | 327 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 327 insertions(+) diff --git a/cspell.json b/cspell.json index cfbab3df891ec3..f59d00a6a052f6 100644 --- a/cspell.json +++ b/cspell.json @@ -4,80 +4,407 @@ "dictionaryDefinitions": [], "dictionaries": [], "words": [ + "aarch64", + "acdadcfa", + "acea", + "abmrd", + "acfb", + "acosh", + "Acosh", + "adfcd", + "addcmul", + "addif", + "addmm", + "aeaa", + "agem", + "agew", + "armeabi", "armhf", + "artefacts", + "ARTEFACTS", + "Asinh", + "asynch", + "Atanh", + "autodoc", + "Autograd", + "autoplugin", + "AUTOPLUGIN", "autoremove", + "autosummary", + "bace", + "Backprop", "bblayers", + "Beautif", + "Bilat", + "bindir", "bitbake", + "BFYX", + "BFXY", + "bkgr", + "brctl", + "Bucketize", + "BUILDDIR", "buildtools", + "buildsystems", + "BYXF", + "bvalue", + "bvlc", "caffe", + "caffemodel", + "camvid", + "cbba", + "cbcd", + "cdad", + "cdrom", "chrpath", + "classov", + "cldnn", + "clumber", + "codepath", + "codepaths", + "coeffs", + "concat", + "Concat", + "Conts", + "constexpr", + "consts", + "Consts", + "conv", + "Convolutional", + "CPPLINT", + "cpplint", + "crbegin", + "crend", + "ctest", + "ctput", + "CVAT", + "cython", + "dadb", + "DANDROID", + "DARM", + "Datumaro", + "datumaro", + "DBUILD", + "DCMAKE", + "ddepth", + "Depthwise", + "dearmor", + "devicesupport", + "dequantization", + "Dequantization", + "deeplabv", + "deeced", + "DENABLE", + "delif", + "denormal", + "DENORMAL", + "denormalized", + "Detectron", + "Dequantize", "devel", "devtoolset", "dgpu", "diffstat", + "dldt", + "dlstreamer", + "dkms", "Dockerfiles", + "DOPENVINO", + "downscript", + "doxid", + "doxygen", + "Doxygen", + "doxygensnippet", + "DTHREADING", "dpkg", + "DPYTHON", + "DSELECTIVE", + "dylib", "DWORD", + "efficientdet", + "Efficientdet", + "Einsum", + "Elems", + "Elementwise", + "elementwise", + "Eltwise", "endsphinxdirective", + "enumov", + "emcmake", + "emmake", + "emod", + "emom", + "emow", + "Emscripten", + "emscripten", + "emsdk", "epel", "ERRORLEVEL", + "evolutionally", "executionpolicy", "fafe", + "fdupes", + "flatbuffers", + "FLATBUFFERS", + "frontends", + "Frontends", + "FYXB", + "gaddb", + "GAPI", + "gapi", + "Gaussed", + "gcompoundkernel", + "gcomputation", + "GCPU", + "gcpukernel", + "Gelu", + "GELU", + "Geti", + "getitem", + "gimg", + "gitee", + "gflags", "globbing", "gmmlib", "GNAs", + "gmock", + "gnueabihf", "googlenet", "gpgcheck", "gpgkey", + "graphviz", + "Graphviz", + "groupov", + "gtest", + "hardtanh", "hashfile", + "HDDL", "HKLM", "HOSTTOOLS", + "Hotspots", + "hotspots", + "hostnet", + "hwloc", + "hwquote", + "idbf", + "IDFT", "iigd", + "ifdef", + "ifdown", + "ifup", + "imgproc", + "imshow", + "inet", + "INTEGRITYCHECK", + "ILSVRC", + "inferenced", + "Informations", "insmod", "intelocl", + "INTERPROCEDURAL", + "INSTALLDIR", + "IRDFT", + "jemalloc", "kaldi", + "Keras", + "keypress", + "keyrings", "Khronos", + "KROIs", + "Landm", + "landm", + "Latency", + "Lcov", "ldconfig", + "libc", "libopencl", + "libopencv", "libpython", + "libtbb", + "libtbbbind", + "libtpm", + "libvirtd", "linmac", + "Liskov", + "lowlatency", "LTSC", + "LSTM", + "makefiles", + "malloc", + "memleaks", + "manylinux", "maxdepth", + "miktext", + "Mish", "mklink", + "mmap", + "mobilenet", + "Mobilenet", "monodepth", + "mozallowfullscreen", + "msallowfullscreen", + "MSVC", + "msvc", + "Multiclass", + "muxed", "mxnet", + "namespaceov", + "NCHW", + "ncpu", + "netdev", + "netplan", + "ngraph", + "nireq", + "NNCF", + "nncf", "nocache", "noglob", "nohup", + "nlohmann", "norestart", + "noqueue", + "nproc", + "NUMA", + "numpy", + "Numpy", + "oallowfullscreen", "ocloc", + "OCSP", + "oneapi", + "onetbb", "onnx", "opencl", "openembedded", "openvino", + "Opset", + "opset", + "opsets", + "OVMS", + "ovms", + "ovsa", + "OVSA", + "ovsatool", + "OVTF", "PACKAGECONFIG", + "paddlepaddle", + "parameterizable", + "partitioner", "patchelf", + "passpattern", + "Pexels", + "pdmodel", + "PDPD", "pkgdata", "pkgs", + "pkill", + "polylines", + "postproc", + "postprocess", + "preprocess", + "Preprocess", + "protobuf", + "Protobuf", + "PROTOBUF", + "prototxt", + "PSROI", + "Pugi", + "pugixml", + "PUGIXML", "pypi", + "PYTHONPATH", "pzstd", + "qcow", + "qlen", + "QSPECTRE", + "Qspectre", "quantizer", + "Rects", + "Relu", + "relu", + "rcnn", + "RCNN", + "RDFT", "Redistributable", "remotesigned", "repolist", + "reproject", + "reshapable", + "Requantize", + "retval", + "RHODS", "rmmod", + "runtool", + "scons", + "SCONS", + "segm", + "Selu", "servercore", + "setuptools", "setupvars", "SETX", + "SIMD", + "Softmax", "skylake", "sphinxdirective", + "Strided", + "squeezenet", + "SWTPM", + "swtpm", + "TBBBIND", + "TBBROOT", + "Tensro", + "texlive", + "textrm", + "tflite", + "thirdparty", + "Thresholded", "toctree", + "toolset", + "Torchvision", + "tpmrm", + "tpmstate", + "tput", + "Tunables", + "unet", "Uninstallation", + "unixio", + "unsharp", + "Unsharp", + "Unsh", + "Unsqueeze", + "Usecase", + "usecases", + "USERPROFILE", "userspace", + "VAAPI", + "valgrind", + "vcpkg", + "vcvars", "venv", + "virbr", + "virsh", + "virt", + "virtio", + "VMHWM", + "VMRSS", + "VNNI", + "vtune", + "vtunesummary", + "vtunebottonup", + "WHOLEARCHIVE", "WDDM", "WORKDIR", + "WORKSIZE", + "xbyak", + "Xbyak", + "xdot", + "xvfz", "yocto", + "yolo", + "YOLO", + "yolov", + "Yolov", + "YXFB", "zstd" ], "ignoreWords": [], From 233ae78ff4542f08eac242ff6a65ae96a9b83610 Mon Sep 17 00:00:00 2001 From: Andrey Kashchikhin Date: Tue, 19 Sep 2023 15:06:47 +0100 Subject: [PATCH 27/46] [CI] [GHA] Introduce GHA Linux ONNX Runtime Pipeline (#19883) * add pipeline * address comments * rm triggers --- .github/workflows/linux_onnxruntime.yml | 182 ++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 .github/workflows/linux_onnxruntime.yml diff --git a/.github/workflows/linux_onnxruntime.yml b/.github/workflows/linux_onnxruntime.yml new file mode 100644 index 00000000000000..5a96a821e92080 --- /dev/null +++ b/.github/workflows/linux_onnxruntime.yml @@ -0,0 +1,182 @@ +name: Linux ONNX Runtime (Ubuntu 20.04, Python 3.11) +on: + workflow_dispatch: + schedule: + # run daily at 00:00 + - cron: '0 0 * * *' +# pull_request: +# paths-ignore: +# - '**/docs/**' +# - 'docs/**' +# - '**/**.md' +# - '**.md' +# - '**/layer_tests_summary/**' +# - '**/conformance/**' +# push: +# paths-ignore: +# - '**/docs/**' +# - 'docs/**' +# - '**/**.md' +# - '**.md' +# - '**/layer_tests_summary/**' +# - '**/conformance/**' +# branches: +# - master + +concurrency: + group: ${{ github.head_ref || github.run_id }}-linux-onnx-runtime + cancel-in-progress: true + +jobs: + Build: + # TODO: remove. Temporary measure to prevent the workflow from scheduling on forks. + if: ${{ github.repository_owner == 'openvinotoolkit' }} + defaults: + run: + shell: bash + runs-on: ubuntu-20.04-8-cores + env: + CMAKE_BUILD_TYPE: 'Release' + CMAKE_GENERATOR: 'Ninja' + CMAKE_CXX_COMPILER_LAUNCHER: ccache + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_LINKER_LAUNCHER: ccache + CMAKE_C_LINKER_LAUNCHER: ccache + BUILD_TYPE: Release + OPENVINO_REPO: ${{ github.workspace }}/openvino + ONNX_RUNTIME_REPO: ${{ github.workspace }}/onnxruntime + ONNX_RUNTIME_UTILS: ${{ github.workspace }}/openvino/.ci/azure/ci_utils/onnxruntime + ONNX_RUNTIME_BUILD_DIR: ${{ github.workspace }}/onnxruntime/build + BUILD_DIR: ${{ github.workspace }}/build + INSTALL_DIR: ${{ github.workspace }}/install/openvino + steps: + - name: Clone OpenVINO + uses: actions/checkout@v3 + with: + path: 'openvino' + submodules: 'true' + + - name: Clone ONNX Runtime + run: | + branch=`tr -s '\n ' < ${{ env.ONNX_RUNTIME_UTILS }}/version` + git clone --branch $branch --single-branch --recursive https://github.com/microsoft/onnxruntime.git ${{ env.ONNX_RUNTIME_REPO }} + + - name: Create Directories + run: | + mkdir -p ${{ env.BUILD_DIR }} + mkdir -p ${{ env.INSTALL_DIR }} + + - name: Setup Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + # + # Dependencies + # + + - name: Install build dependencies + run: | + sudo -E ${{ env.OPENVINO_REPO }}/install_build_dependencies.sh + + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + max-size: "2000M" + # Should save cache only if run in the master branch of the base repo + # github.ref_name is 'ref/PR_#' in case of the PR, and 'branch_name' when executed on push + save: ${{ github.ref_name == 'master' && 'true' || 'false' }} + verbose: 2 + key: ${{ github.job }}-linux-onnx-runtime + restore-keys: | + ${{ github.job }}-linux-onnx-runtime + + # + # Build + # + + - name: Get number of CPU cores + uses: SimenB/github-actions-cpu-cores@v1 + id: cpu-cores + + - name: CMake configure + run: | + cmake \ + -GNinja \ + -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ + -DCMAKE_COMPILE_WARNING_AS_ERROR=OFF \ + -DENABLE_INTEL_GNA=OFF \ + -DENABLE_INTEL_GPU=OFF \ + -DENABLE_CPPLINT=OFF \ + -DENABLE_PROFILING_ITT=OFF \ + -DENABLE_SAMPLES=OFF \ + -DENABLE_OV_TF_FRONTEND=OFF \ + -DENABLE_OV_TF_LITE=OFF \ + -DENABLE_OV_PADDLE_FRONTEND=OFF \ + -DENABLE_OV_PYTORCH_FRONTEND=OFF \ + -S ${{ env.OPENVINO_REPO }} \ + -B ${{ env.BUILD_DIR }} + + - name: Clean ccache stats + run: ccache --zero-stats --show-config + + - name: Build + run: cmake --build ${{ env.BUILD_DIR }} --parallel ${{ steps.cpu-cores.outputs.count }} --config ${{ env.BUILD_TYPE }} + + - name: Show ccache stats + run: ccache --show-stats + + - name: Install OpenVINO + run: cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/cmake_install.cmake + + - name: Build Lin ONNX Runtime + run: | + source ${{ env.INSTALL_DIR }}/setupvars.sh + + ${{ env.ONNX_RUNTIME_REPO }}/build.sh \ + --config RelWithDebInfo \ + --use_openvino CPU_FP32 \ + --build_shared_lib \ + --parallel \ + --skip_tests \ + --compile_no_warning_as_error \ + --build_dir ${{ env.ONNX_RUNTIME_BUILD_DIR }} + env: + CXXFLAGS: "-Wno-error=deprecated-declarations" + + - name: Run onnxruntime_test_all + run: | + source ${{ env.INSTALL_DIR }}/setupvars.sh + skip_tests=$(tr -s '\n ' ':' < ${{ env.ONNX_RUNTIME_UTILS }}/skip_tests) + ./onnxruntime_test_all --gtest_filter=-$skip_tests + working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo + + - name: Run onnxruntime_shared_lib_test + run: | + source ${{ env.INSTALL_DIR }}/setupvars.sh + ./onnxruntime_shared_lib_test --gtest_filter=-CApiTest.test_custom_op_openvino_wrapper_library + working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo + + - name: Run onnxruntime_global_thread_pools_test + run: | + source ${{ env.INSTALL_DIR }}/setupvars.sh + ./onnxruntime_global_thread_pools_test + working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo + + - name: Run onnxruntime_api_tests_without_env + run: | + source ${{ env.INSTALL_DIR }}/setupvars.sh + ./onnxruntime_api_tests_without_env + working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo + + - name: Run pytorch-converted tests + run: | + source ${{ env.INSTALL_DIR }}/setupvars.sh + ./onnx_test_runner "${{ env.ONNX_RUNTIME_REPO }}/cmake/external/onnx/onnx/backend/test/data/pytorch-converted" + working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo + + - name: Run pytorch-operator tests + run: | + source ${{ env.INSTALL_DIR }}/setupvars.sh + ./onnx_test_runner "${{ env.ONNX_RUNTIME_REPO }}/cmake/external/onnx/onnx/backend/test/data/pytorch-operator" + working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo From 472ad39a9d57bfdc8ff38920bc8f3927c5cb745a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 18:18:42 +0400 Subject: [PATCH 28/46] Update numpy requirement from <1.26,>=1.16.6 to >=1.16.6,<1.27 in /tests (#19938) Updates the requirements on [numpy](https://github.com/numpy/numpy) to permit the latest version. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst) - [Commits](https://github.com/numpy/numpy/compare/v1.16.6...v1.26.0) --- updated-dependencies: - dependency-name: numpy dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/constraints.txt b/tests/constraints.txt index 3f5a718dff257a..97c88475f178f7 100644 --- a/tests/constraints.txt +++ b/tests/constraints.txt @@ -1,4 +1,4 @@ -numpy>=1.16.6,<1.26 +numpy>=1.16.6,<1.27 attrs==23.1.0 distro==1.8.0 h5py>=3.1.0 From b6e0706961d6a522ba1c9379b8ed195794bc61a5 Mon Sep 17 00:00:00 2001 From: Ilya Churaev Date: Tue, 19 Sep 2023 18:20:30 +0400 Subject: [PATCH 29/46] Enable clang format for template plugin tests (#19942) --- .../template/tests/functional/CMakeLists.txt | 2 +- .../template/tests/functional/core_config.cpp | 4 +- .../tests/functional/op_reference/abs.cpp | 55 +- .../tests/functional/op_reference/acos.cpp | 80 +- .../tests/functional/op_reference/acosh.cpp | 46 +- .../op_reference/adaptive_avg_pool.cpp | 118 +- .../op_reference/adaptive_max_pool.cpp | 141 +- .../tests/functional/op_reference/add.cpp | 98 +- .../tests/functional/op_reference/asin.cpp | 95 +- .../tests/functional/op_reference/asinh.cpp | 93 +- .../tests/functional/op_reference/atan.cpp | 62 +- .../functional/op_reference/augru_cell.cpp | 268 +- .../op_reference/augru_sequence.cpp | 1251 +- .../functional/op_reference/avg_pool.cpp | 64 +- .../op_reference/base_reference_test.cpp | 134 +- .../op_reference/base_reference_test.hpp | 4 +- .../functional/op_reference/batch_norm.cpp | 83 +- .../op_reference/batch_to_space.cpp | 105 +- .../op_reference/binary_convolution.cpp | 356 +- .../functional/op_reference/broadcast.cpp | 322 +- .../functional/op_reference/bucketize.cpp | 60 +- .../tests/functional/op_reference/ceiling.cpp | 87 +- .../tests/functional/op_reference/clamp.cpp | 165 +- .../functional/op_reference/comparison.cpp | 6 +- .../functional/op_reference/comparison.hpp | 42 +- .../tests/functional/op_reference/concat.cpp | 645 +- .../functional/op_reference/constant.cpp | 138 +- .../functional/op_reference/conversion.cpp | 6 +- .../functional/op_reference/conversion.hpp | 35 +- .../tests/functional/op_reference/convert.cpp | 1617 +- .../op_reference/convert_color_i420.cpp | 78 +- .../op_reference/convert_color_nv12.cpp | 47 +- .../functional/op_reference/convert_like.cpp | 1617 +- .../functional/op_reference/convolution.cpp | 64 +- .../op_reference/convolution_backprop.cpp | 5132 ++++-- .../tests/functional/op_reference/cos.cpp | 72 +- .../tests/functional/op_reference/cosh.cpp | 92 +- .../op_reference/ctc_greedy_decoder.cpp | 75 +- .../ctc_greedy_decoder_seq_len.cpp | 106 +- .../functional/op_reference/ctc_loss.cpp | 265 +- .../tests/functional/op_reference/cum_sum.cpp | 267 +- .../op_reference/deformable_convolution.cpp | 13049 +++++++++------- .../op_reference/deformable_psroi_pooling.cpp | 698 +- .../op_reference/depth_to_space.cpp | 87 +- .../op_reference/detection_output.cpp | 869 +- .../tests/functional/op_reference/dft.cpp | 28 +- .../tests/functional/op_reference/divide.cpp | 244 +- .../tests/functional/op_reference/einsum.cpp | 73 +- .../tests/functional/op_reference/elu.cpp | 117 +- .../op_reference/embedding_segments_sum.cpp | 19 +- .../op_reference/embeddingbag_offsetssum.cpp | 17 +- .../op_reference/embeddingbag_packedsum.cpp | 11 +- .../tests/functional/op_reference/equal.cpp | 112 +- .../tests/functional/op_reference/erf.cpp | 63 +- .../tests/functional/op_reference/exp.cpp | 125 +- ...xperimental_detectron_detection_output.cpp | 154 +- ...imental_detectron_detection_prior_grid.cpp | 258 +- ...erimental_detectron_generate_proposals.cpp | 245 +- ...mental_detectron_roi_feature_extractor.cpp | 205 +- .../experimental_detectron_topkrois.cpp | 53 +- .../op_reference/extract_image_patches.cpp | 190 +- .../tests/functional/op_reference/eye.cpp | 498 +- .../functional/op_reference/fake_quantize.cpp | 229 +- .../tests/functional/op_reference/floor.cpp | 83 +- .../functional/op_reference/floor_mod.cpp | 96 +- .../tests/functional/op_reference/gather.cpp | 1032 +- .../op_reference/gather_elements.cpp | 158 +- .../functional/op_reference/gather_nd.cpp | 463 +- .../functional/op_reference/gather_tree.cpp | 143 +- .../tests/functional/op_reference/gelu.cpp | 124 +- .../op_reference/generate_proposals.cpp | 399 +- .../tests/functional/op_reference/greater.cpp | 65 +- .../functional/op_reference/greater_equal.cpp | 64 +- .../tests/functional/op_reference/grn.cpp | 151 +- .../op_reference/group_convolution.cpp | 295 +- .../group_convolution_backprop.cpp | 595 +- .../functional/op_reference/gru_cell.cpp | 280 +- .../functional/op_reference/gru_sequence.cpp | 2359 ++- .../functional/op_reference/hard_sigmoid.cpp | 60 +- .../functional/op_reference/hsigmoid.cpp | 41 +- .../tests/functional/op_reference/hswish.cpp | 49 +- .../tests/functional/op_reference/idft.cpp | 38 +- .../tests/functional/op_reference/if.cpp | 214 +- .../tests/functional/op_reference/irdft.cpp | 1127 +- .../functional/op_reference/is_finite.cpp | 46 +- .../tests/functional/op_reference/is_inf.cpp | 131 +- .../tests/functional/op_reference/is_nan.cpp | 49 +- .../tests/functional/op_reference/less.cpp | 65 +- .../tests/functional/op_reference/less_eq.cpp | 65 +- .../tests/functional/op_reference/log.cpp | 61 +- .../functional/op_reference/log_softmax.cpp | 348 +- .../tests/functional/op_reference/logical.hpp | 17 +- .../functional/op_reference/logical_and.cpp | 39 +- .../functional/op_reference/logical_not.cpp | 15 +- .../functional/op_reference/logical_or.cpp | 39 +- .../functional/op_reference/logical_xor.cpp | 40 +- .../tests/functional/op_reference/loop.cpp | 321 +- .../tests/functional/op_reference/lrn.cpp | 77 +- .../functional/op_reference/lstm_cell.cpp | 762 +- .../functional/op_reference/lstm_sequence.cpp | 5891 +++---- .../tests/functional/op_reference/matmul.cpp | 3 +- .../functional/op_reference/matrix_nms.cpp | 774 +- .../functional/op_reference/max_pool.cpp | 3 +- .../tests/functional/op_reference/maximum.cpp | 135 +- .../tests/functional/op_reference/memory.cpp | 26 +- .../tests/functional/op_reference/minimum.cpp | 98 +- .../tests/functional/op_reference/mish.cpp | 44 +- .../tests/functional/op_reference/mod.cpp | 168 +- .../op_reference/multiclass_nms.cpp | 909 +- .../functional/op_reference/multiply.cpp | 92 +- .../tests/functional/op_reference/mvn.cpp | 254 +- .../functional/op_reference/negative.cpp | 46 +- .../op_reference/non_max_suppression.cpp | 1806 +-- .../tests/functional/op_reference/nonzero.cpp | 395 +- .../functional/op_reference/normalize_l2.cpp | 977 +- .../functional/op_reference/not_equal.cpp | 106 +- .../tests/functional/op_reference/one_hot.cpp | 199 +- .../tests/functional/op_reference/pad.cpp | 3009 ++-- .../op_reference/parameter_as_output.cpp | 26 +- .../tests/functional/op_reference/power.cpp | 78 +- .../tests/functional/op_reference/prelu.cpp | 474 +- .../op_reference/prior_box_clustered.cpp | 89 +- .../functional/op_reference/proposal.cpp | 645 +- .../functional/op_reference/psroi_pooling.cpp | 236 +- .../op_reference/random_uniform.cpp | 133 +- .../tests/functional/op_reference/range.cpp | 171 +- .../tests/functional/op_reference/rdft.cpp | 548 +- .../functional/op_reference/reduce_l1.cpp | 32 +- .../functional/op_reference/reduce_l2.cpp | 53 +- .../functional/op_reference/reduce_max.cpp | 98 +- .../functional/op_reference/reduce_mean.cpp | 74 +- .../functional/op_reference/reduce_min.cpp | 99 +- .../functional/op_reference/reduce_prod.cpp | 144 +- .../functional/op_reference/reduce_sum.cpp | 175 +- .../functional/op_reference/reduction.cpp | 6 +- .../functional/op_reference/reduction.hpp | 27 +- .../functional/op_reference/region_yolo.cpp | 82 +- .../tests/functional/op_reference/relu.cpp | 77 +- .../functional/op_reference/reorg_yolo.cpp | 57 +- .../tests/functional/op_reference/reshape.cpp | 231 +- .../tests/functional/op_reference/result.cpp | 56 +- .../tests/functional/op_reference/reverse.cpp | 1 - .../op_reference/reverse_sequence.cpp | 175 +- .../functional/op_reference/rnn_cell.cpp | 272 +- .../functional/op_reference/rnn_sequence.cpp | 1820 +-- .../functional/op_reference/roi_align.cpp | 330 +- .../functional/op_reference/roi_pooling.cpp | 388 +- .../tests/functional/op_reference/roll.cpp | 210 +- .../tests/functional/op_reference/round.cpp | 134 +- .../op_reference/scatter_elements_update.cpp | 35 +- .../op_reference/scatter_nd_update.cpp | 184 +- .../op_reference/scatter_update.cpp | 1304 +- .../tests/functional/op_reference/select.cpp | 142 +- .../tests/functional/op_reference/selu.cpp | 100 +- .../functional/op_reference/shape_of.cpp | 154 +- .../op_reference/shuffle_channels.cpp | 190 +- .../tests/functional/op_reference/sigmoid.cpp | 82 +- .../tests/functional/op_reference/sign.cpp | 73 +- .../tests/functional/op_reference/sin.cpp | 92 +- .../tests/functional/op_reference/sinh.cpp | 92 +- .../tests/functional/op_reference/slice.cpp | 135 +- .../tests/functional/op_reference/softmax.cpp | 173 +- .../functional/op_reference/softplus.cpp | 38 +- .../functional/op_reference/softsign.cpp | 38 +- .../op_reference/space_to_batch.cpp | 100 +- .../op_reference/space_to_depth.cpp | 103 +- .../tests/functional/op_reference/split.cpp | 153 +- .../op_reference/squared_difference.cpp | 111 +- .../tests/functional/op_reference/squeeze.cpp | 22 +- .../functional/op_reference/strided_slice.cpp | 219 +- .../functional/op_reference/subtract.cpp | 84 +- .../tests/functional/op_reference/swish.cpp | 80 +- .../tests/functional/op_reference/tan.cpp | 82 +- .../tests/functional/op_reference/tanh.cpp | 92 +- .../op_reference/tensor_iterator.cpp | 4156 ++--- .../tests/functional/op_reference/tile.cpp | 116 +- .../tests/functional/op_reference/topk.cpp | 1930 ++- .../functional/op_reference/transpose.cpp | 122 +- .../functional/op_reference/unsqueeze.cpp | 78 +- .../op_reference/variadic_split.cpp | 383 +- .../preprocessing/yuv_to_grey_tests.cpp | 4 +- .../tests/functional/set_device_name.cpp | 10 +- .../executable_network/exec_network_base.cpp | 41 +- .../behavior/infer_request/callback.cpp | 18 +- .../behavior/infer_request/config.cpp | 18 +- .../behavior/infer_request/io_blob.cpp | 18 +- .../behavior/infer_request/memory_states.cpp | 1 - .../behavior/infer_request/multithreading.cpp | 18 +- .../behavior/infer_request/wait.cpp | 18 +- .../exec_network_base.cpp | 107 +- .../ov_executable_network/get_metric.cpp | 2 - .../ov_exec_net_import_export.cpp | 62 +- .../ov_executable_network/properties.cpp | 15 +- .../ov_infer_request/batched_tensors.cpp | 17 +- .../behavior/ov_infer_request/callback.cpp | 18 +- .../ov_infer_request/cancellation.cpp | 12 +- .../infer_request_dynamic.cpp | 53 +- .../behavior/ov_infer_request/inference.cpp | 12 +- .../ov_infer_request/inference_chaining.cpp | 58 +- .../behavior/ov_infer_request/io_tensor.cpp | 54 +- .../ov_infer_request/multithreading.cpp | 18 +- .../behavior/ov_infer_request/wait.cpp | 18 +- .../behavior/ov_plugin/life_time.cpp | 14 +- .../behavior/ov_plugin/properties_tests.cpp | 6 +- .../behavior/plugin/caching_tests.cpp | 26 +- .../behavior/plugin/core_integration.cpp | 96 +- .../behavior/plugin/life_time.cpp | 38 +- .../behavior/plugin/preprocessing.cpp | 51 +- .../behavior/plugin/set_preprocess.cpp | 85 +- .../behavior/plugin/synthetic.cpp | 150 +- .../behavior/plugin/version.cpp | 11 +- .../single_layer_tests/convolution.cpp | 191 +- .../single_layer_tests/eltwise.cpp | 166 +- .../single_layer_tests/reshape.cpp | 82 +- .../single_layer_tests/softmax.cpp | 237 +- .../single_layer_tests/split.cpp | 29 +- .../base_reference_cnn_test.cpp | 20 +- .../subgraph_reference/preprocess.cpp | 741 +- .../subgraph_reference/preprocess_legacy.cpp | 12 +- .../subgraph_reference/preprocess_opencv.cpp | 105 +- 220 files changed, 42186 insertions(+), 34257 deletions(-) diff --git a/src/plugins/template/tests/functional/CMakeLists.txt b/src/plugins/template/tests/functional/CMakeLists.txt index 983ee2534a497c..aef4a4ecfa71a5 100644 --- a/src/plugins/template/tests/functional/CMakeLists.txt +++ b/src/plugins/template/tests/functional/CMakeLists.txt @@ -20,7 +20,7 @@ ov_add_test_target( INCLUDES "${TEMPLATE_PLUGIN_SOURCE_DIR}/include" "${CMAKE_CURRENT_SOURCE_DIR}/op_reference" - # ADD_CPPLINT + ADD_CLANG_FORMAT LABELS TEMPLATE ) diff --git a/src/plugins/template/tests/functional/core_config.cpp b/src/plugins/template/tests/functional/core_config.cpp index 39c114e8eabab4..2c54a0d17b2f8d 100644 --- a/src/plugins/template/tests/functional/core_config.cpp +++ b/src/plugins/template/tests/functional/core_config.cpp @@ -3,10 +3,10 @@ // #include "functional_test_utils/core_config.hpp" + #include "shared_test_classes/base/ov_subgraph.hpp" -void CoreConfiguration(LayerTestsUtils::LayerTestsCommon* test) { -} +void CoreConfiguration(LayerTestsUtils::LayerTestsCommon* test) {} namespace ov { namespace test { diff --git a/src/plugins/template/tests/functional/op_reference/abs.cpp b/src/plugins/template/tests/functional/op_reference/abs.cpp index 944886da90bdc2..099b614afa391e 100644 --- a/src/plugins/template/tests/functional/op_reference/abs.cpp +++ b/src/plugins/template/tests/functional/op_reference/abs.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/abs.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/abs.hpp" using namespace ov; using namespace reference_tests; @@ -50,8 +52,8 @@ class ReferenceAbsLayerTest : public testing::TestWithParam, public C private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto log = std::make_shared(in); return std::make_shared(NodeVector{log}, ParameterVector{in}); @@ -66,12 +68,10 @@ template std::vector generateParamsForAbsFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - AbsParams(ov::PartialShape{4}, - IN_ET, - std::vector{1.f, -2.f, 0.f, -4.75f}, - std::vector{1.f, 2.f, 0.f, 4.75f}) - }; + std::vector params{AbsParams(ov::PartialShape{4}, + IN_ET, + std::vector{1.f, -2.f, 0.f, -4.75f}, + std::vector{1.f, 2.f, 0.f, 4.75f})}; return params; } @@ -80,11 +80,7 @@ std::vector generateParamsForAbsInt() { using T = typename element_type_traits::value_type; std::vector params{ - AbsParams(ov::PartialShape{4}, - IN_ET, - std::vector{1, -2, 0, -4}, - std::vector{1, 2, 0, 4}) - }; + AbsParams(ov::PartialShape{4}, IN_ET, std::vector{1, -2, 0, -4}, std::vector{1, 2, 0, 4})}; return params; } @@ -93,24 +89,18 @@ std::vector generateParamsForAbsUInt() { using T = typename element_type_traits::value_type; std::vector params{ - AbsParams(ov::PartialShape{4}, - IN_ET, - std::vector{1, 2, 0, 4}, - std::vector{1, 2, 0, 4}) - }; + AbsParams(ov::PartialShape{4}, IN_ET, std::vector{1, 2, 0, 4}, std::vector{1, 2, 0, 4})}; return params; } std::vector generateCombinedParamsForAbs() { - const std::vector> allTypeParams{ - generateParamsForAbsFloat(), - generateParamsForAbsFloat(), - generateParamsForAbsFloat(), - generateParamsForAbsInt(), - generateParamsForAbsInt(), - generateParamsForAbsUInt(), - generateParamsForAbsUInt() - }; + const std::vector> allTypeParams{generateParamsForAbsFloat(), + generateParamsForAbsFloat(), + generateParamsForAbsFloat(), + generateParamsForAbsInt(), + generateParamsForAbsInt(), + generateParamsForAbsUInt(), + generateParamsForAbsUInt()}; std::vector combinedParams; @@ -121,10 +111,9 @@ std::vector generateCombinedParamsForAbs() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Abs_With_Hardcoded_Refs, - ReferenceAbsLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAbs()), - ReferenceAbsLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Abs_With_Hardcoded_Refs, + ReferenceAbsLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAbs()), + ReferenceAbsLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/acos.cpp b/src/plugins/template/tests/functional/op_reference/acos.cpp index 22402222df3782..7a661ee098ffb3 100644 --- a/src/plugins/template/tests/functional/op_reference/acos.cpp +++ b/src/plugins/template/tests/functional/op_reference/acos.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/acos.hpp" + #include -#include "openvino/op/acos.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ class ReferenceAcosLayerTest : public testing::TestWithParam, public static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto acos = std::make_shared(in); - return std::make_shared(NodeVector {acos}, ParameterVector {in}); + return std::make_shared(NodeVector{acos}, ParameterVector{in}); } }; @@ -53,30 +54,55 @@ TEST_P(ReferenceAcosLayerTest, AcosWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Acos_With_Hardcoded_Refs, ReferenceAcosLayerTest, - ::testing::Values(Builder {} - .input({{11}, element::f16, std::vector {-1.f, -0.75f, -0.5f, -0.25f, -0.125f, - 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) - .expected({{11}, element::f16, std::vector {3.14159265f, 2.41885841f, 2.09439510f, 1.82347658f, 1.69612416f, - 1.57079633f, 1.44546850f, 1.31811607f, 1.04719755f, 0.72273425f, - 0.00000000f}}), - Builder {} - .input({{11}, element::f32, std::vector {-1.f, -0.75f, -0.5f, -0.25f, -0.125f, - 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) - .expected({{11}, element::f32, std::vector {3.14159265f, 2.41885841f, 2.09439510f, 1.82347658f, 1.69612416f, - 1.57079633f, 1.44546850f, 1.31811607f, 1.04719755f, 0.72273425f, - 0.00000000f}}), - Builder {} - .input({{3}, element::i32, std::vector {-1, 0, 1}}) - .expected({{3}, element::i32, std::vector {3, 2, 0}}), - Builder {} - .input({{3}, element::i64, std::vector {-1, 0, 1}}) - .expected({{3}, element::i64, std::vector {3, 2, 0}}), - Builder {} - .input({{2}, element::u32, std::vector {0, 1}}) - .expected({{2}, element::u32, std::vector {2, 0}}), - Builder {} - .input({{2}, element::u64, std::vector {0, 1}}) - .expected({{2}, element::u64, std::vector {2, 0}})), + smoke_Acos_With_Hardcoded_Refs, + ReferenceAcosLayerTest, + ::testing::Values( + Builder{} + .input( + {{11}, + element::f16, + std::vector{-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) + .expected({{11}, + element::f16, + std::vector{3.14159265f, + 2.41885841f, + 2.09439510f, + 1.82347658f, + 1.69612416f, + 1.57079633f, + 1.44546850f, + 1.31811607f, + 1.04719755f, + 0.72273425f, + 0.00000000f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) + .expected({{11}, + element::f32, + std::vector{3.14159265f, + 2.41885841f, + 2.09439510f, + 1.82347658f, + 1.69612416f, + 1.57079633f, + 1.44546850f, + 1.31811607f, + 1.04719755f, + 0.72273425f, + 0.00000000f}}), + Builder{} + .input({{3}, element::i32, std::vector{-1, 0, 1}}) + .expected({{3}, element::i32, std::vector{3, 2, 0}}), + Builder{} + .input({{3}, element::i64, std::vector{-1, 0, 1}}) + .expected({{3}, element::i64, std::vector{3, 2, 0}}), + Builder{} + .input({{2}, element::u32, std::vector{0, 1}}) + .expected({{2}, element::u32, std::vector{2, 0}}), + Builder{} + .input({{2}, element::u64, std::vector{0, 1}}) + .expected({{2}, element::u64, std::vector{2, 0}})), ReferenceAcosLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/acosh.cpp b/src/plugins/template/tests/functional/op_reference/acosh.cpp index 8e2f916655b541..a281cc3f28922d 100644 --- a/src/plugins/template/tests/functional/op_reference/acosh.cpp +++ b/src/plugins/template/tests/functional/op_reference/acosh.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/acosh.hpp" + #include -#include "openvino/op/acosh.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ class ReferenceAcoshLayerTest : public testing::TestWithParam, publ static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto acosh = std::make_shared(in); - return std::make_shared(NodeVector {acosh}, ParameterVector {in}); + return std::make_shared(NodeVector{acosh}, ParameterVector{in}); } }; @@ -53,24 +54,27 @@ TEST_P(ReferenceAcoshLayerTest, AcoshWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Acosh_With_Hardcoded_Refs, ReferenceAcoshLayerTest, - ::testing::Values(Builder {} - .input({{8}, element::f16, std::vector {1.f, 2.f, 3.f, 4.f, 5.f, 10.f, 100.f, 1000.f}}) - .expected({{8}, element::f16, std::vector {0., 1.317, 1.763, 2.063, 2.292, 2.993, 5.298, 7.6012}}), - Builder {} - .input({{8}, element::f32, std::vector {1.f, 2.f, 3.f, 4.f, 5.f, 10.f, 100.f, 1000.f}}) - .expected({{8}, element::f32, std::vector {0., 1.317, 1.763, 2.063, 2.292, 2.993, 5.298, 7.6012}}), - Builder {} - .input({{8}, element::i32, std::vector {1, 2, 3, 4, 5, 10, 100, 1000}}) - .expected({{8}, element::i32, std::vector {0, 1, 2, 2, 2, 3, 5, 8}}), - Builder {} - .input({{8}, element::i64, std::vector {1, 2, 3, 4, 5, 10, 100, 1000}}) - .expected({{8}, element::i64, std::vector {0, 1, 2, 2, 2, 3, 5, 8}}), - Builder {} - .input({{8}, element::u32, std::vector {1, 2, 3, 4, 5, 10, 100, 1000}}) - .expected({{8}, element::u32, std::vector {0, 1, 2, 2, 2, 3, 5, 8}}), - Builder {} - .input({{8}, element::u64, std::vector {1, 2, 3, 4, 5, 10, 100, 1000}}) - .expected({{8}, element::u64, std::vector {0, 1, 2, 2, 2, 3, 5, 8}})), + smoke_Acosh_With_Hardcoded_Refs, + ReferenceAcoshLayerTest, + ::testing::Values( + Builder{} + .input({{8}, element::f16, std::vector{1.f, 2.f, 3.f, 4.f, 5.f, 10.f, 100.f, 1000.f}}) + .expected( + {{8}, element::f16, std::vector{0., 1.317, 1.763, 2.063, 2.292, 2.993, 5.298, 7.6012}}), + Builder{} + .input({{8}, element::f32, std::vector{1.f, 2.f, 3.f, 4.f, 5.f, 10.f, 100.f, 1000.f}}) + .expected({{8}, element::f32, std::vector{0., 1.317, 1.763, 2.063, 2.292, 2.993, 5.298, 7.6012}}), + Builder{} + .input({{8}, element::i32, std::vector{1, 2, 3, 4, 5, 10, 100, 1000}}) + .expected({{8}, element::i32, std::vector{0, 1, 2, 2, 2, 3, 5, 8}}), + Builder{} + .input({{8}, element::i64, std::vector{1, 2, 3, 4, 5, 10, 100, 1000}}) + .expected({{8}, element::i64, std::vector{0, 1, 2, 2, 2, 3, 5, 8}}), + Builder{} + .input({{8}, element::u32, std::vector{1, 2, 3, 4, 5, 10, 100, 1000}}) + .expected({{8}, element::u32, std::vector{0, 1, 2, 2, 2, 3, 5, 8}}), + Builder{} + .input({{8}, element::u64, std::vector{1, 2, 3, 4, 5, 10, 100, 1000}}) + .expected({{8}, element::u64, std::vector{0, 1, 2, 2, 2, 3, 5, 8}})), ReferenceAcoshLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/adaptive_avg_pool.cpp b/src/plugins/template/tests/functional/op_reference/adaptive_avg_pool.cpp index d73df2f853c75c..8467889b60c130 100644 --- a/src/plugins/template/tests/functional/op_reference/adaptive_avg_pool.cpp +++ b/src/plugins/template/tests/functional/op_reference/adaptive_avg_pool.cpp @@ -2,10 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/adaptive_avg_pool.hpp" + #include #include "base_reference_test.hpp" -#include "openvino/op/adaptive_avg_pool.hpp" #include "openvino/op/constant.hpp" using namespace ov; @@ -41,7 +42,8 @@ struct AdaptiveAvgPoolParams { std::vector m_adaptive_values; }; -class ReferenceAdaptiveAvgPoolLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceAdaptiveAvgPoolLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -65,9 +67,9 @@ class ReferenceAdaptiveAvgPoolLayerTest : public testing::TestWithParam CreateFunction(const Shape& input_shape, - const element::Type& input_type, - const Shape& adaptive_shape, - const std::vector adaptive_values) { + const element::Type& input_type, + const Shape& adaptive_shape, + const std::vector adaptive_values) { const auto in = std::make_shared(input_type, input_shape); const auto out = op::v0::Constant::create(element::Type_t::i64, adaptive_shape, adaptive_values); const auto adaptive_avg_pool = std::make_shared(in, out); @@ -84,49 +86,51 @@ std::vector generateParamsForAdaptiveAvgPool() { using T = typename element_type_traits::value_type; std::vector params{ - AdaptiveAvgPoolParams(ov::Shape{2, 3, 7}, - ov::Shape{2, 3, 3}, - IN_ET, - IN_ET, - std::vector{0, 4, 1, 3, -2, -5, -2, -2, 1, -3, 1, -3, -4, 0, -2, 1, -1, -2, 3, -1, -3, - -1, -2, 3, 4, -3, -4, 1, 2, 0, -4, -5, -2, -2, -3, 2, 3, 1, -5, 2, -4, -2}, - std::vector{1.66666663, - 0.66666669, - -3., - -1.33333337, - -1.66666663, - -2.33333325, - -0.66666669, - 0., - -0.33333334, - - 0., - 1.33333337, - -2., - -0.66666669, - -3.66666675, - -2.33333325, - 2., - -0.66666669, - -1.33333337}, - ov::Shape{1}, - {3}), + AdaptiveAvgPoolParams( + ov::Shape{2, 3, 7}, + ov::Shape{2, 3, 3}, + IN_ET, + IN_ET, + std::vector{0, 4, 1, 3, -2, -5, -2, -2, 1, -3, 1, -3, -4, 0, -2, 1, -1, -2, 3, -1, -3, + -1, -2, 3, 4, -3, -4, 1, 2, 0, -4, -5, -2, -2, -3, 2, 3, 1, -5, 2, -4, -2}, + std::vector{1.66666663, + 0.66666669, + -3., + -1.33333337, + -1.66666663, + -2.33333325, + -0.66666669, + 0., + -0.33333334, + + 0., + 1.33333337, + -2., + -0.66666669, + -3.66666675, + -2.33333325, + 2., + -0.66666669, + -1.33333337}, + ov::Shape{1}, + {3}), AdaptiveAvgPoolParams( ov::Shape{1, 3, 7, 10}, ov::Shape{1, 3, 3, 3}, IN_ET, IN_ET, - std::vector{-2, -3, -4, 3, -5, 4, 0, -4, -2, -4, -5, 0, -3, 0, -2, 0, 0, -5, -4, -1, 3, -1, 0, -1, - 0, -2, 0, 4, 1, 4, 0, -1, -4, 2, -2, -5, -1, -1, -2, 1, 2, -2, -1, 2, 0, -1, 0, -5, - 4, 4, 3, 0, -4, -4, -4, -2, 0, 1, -2, -1, 4, -2, -4, 1, -1, -3, -4, -1, 1, -4, - - -2, -4, -5, 0, -4, 3, 4, -5, -4, -2, 0, 2, -4, -3, 3, -1, 1, -4, -5, 4, 2, -5, 2, -3, - 0, 4, 3, 3, 1, 2, -1, -4, 1, -3, -3, -2, 3, 4, -2, -5, 1, 4, 4, -2, 2, 1, -5, -2, - -5, 1, 1, -2, -3, -3, -1, -5, 1, -3, -5, -3, -4, -1, 4, -3, 4, -1, 4, 3, 1, 4, - - -2, -4, -4, 4, -3, 4, 2, -3, -2, 4, -3, 0, 1, -4, 4, 4, 0, 3, -1, 3, 3, -5, 0, 3, - -3, 1, -2, 4, -5, -5, 1, 0, -1, 0, -3, -2, 0, -3, 3, -2, -2, 0, -3, 4, -1, 2, -2, 2, - -3, -1, -4, -2, 0, 2, 0, 2, 0, -3, 4, 3, -5, -3, -5, 1, -5, -3, -5, 4, -3, 3}, + std::vector{ + -2, -3, -4, 3, -5, 4, 0, -4, -2, -4, -5, 0, -3, 0, -2, 0, 0, -5, -4, -1, 3, -1, 0, -1, + 0, -2, 0, 4, 1, 4, 0, -1, -4, 2, -2, -5, -1, -1, -2, 1, 2, -2, -1, 2, 0, -1, 0, -5, + 4, 4, 3, 0, -4, -4, -4, -2, 0, 1, -2, -1, 4, -2, -4, 1, -1, -3, -4, -1, 1, -4, + + -2, -4, -5, 0, -4, 3, 4, -5, -4, -2, 0, 2, -4, -3, 3, -1, 1, -4, -5, 4, 2, -5, 2, -3, + 0, 4, 3, 3, 1, 2, -1, -4, 1, -3, -3, -2, 3, 4, -2, -5, 1, 4, 4, -2, 2, 1, -5, -2, + -5, 1, 1, -2, -3, -3, -1, -5, 1, -3, -5, -3, -4, -1, 4, -3, 4, -1, 4, 3, 1, 4, + + -2, -4, -4, 4, -3, 4, 2, -3, -2, 4, -3, 0, 1, -4, 4, 4, 0, 3, -1, 3, 3, -5, 0, 3, + -3, 1, -2, 4, -5, -5, 1, 0, -1, 0, -3, -2, 0, -3, 3, -2, -2, 0, -3, 4, -1, 2, -2, 2, + -3, -1, -4, -2, 0, 2, 0, 2, 0, -3, 4, 3, -5, -3, -5, 1, -5, -3, -5, 4, -3, 3}, std::vector{-1.08333337, -0.25000000, -0.91666669, -0.08333334, -0.66666669, 0.75000000, -0.41666666, -1.33333337, -0.58333331, @@ -142,14 +146,14 @@ std::vector generateParamsForAdaptiveAvgPool() { ov::Shape{2, 2, 2, 2, 2}, IN_ET, IN_ET, - std::vector{-5, 1, -3, -4, 4, -4, 3, -3, -1, 0, 0, -2, -4, 2, 0, -4, -5, -2, -4, -4, 0, -2, 3, -3, 4, -1, -4, - -1, -1, -5, 4, -1, -2, -3, 0, 4, -1, -5, -4, 1, 1, 4, -5, -5, -5, 4, -3, -3, -3, 4, 0, -3, -5, 1, - 4, 2, 1, -5, -5, 1, 0, -4, -1, 2, -4, -2, 4, 3, 1, -3, -3, -2, -4, -3, -3, 3, -1, 1, 2, 2, -4, - -5, -4, 1, 3, -4, -1, 2, 4, -5, 0, 1, -2, 0, 0, -2, 3, -2, -5, -3, -5, -2, -1, 3, -2, 4, 3, -3}, - std::vector{-0.750, -0.250, -1.375, -1.125, -1.125, -0.500, -0.875, -1.250, - -0.375, -1.625, -1., -0.500, -0.250, -0.750, -1.875, -0.625, - 0.125, -0.375, -1.625, -1.250, 0., -1., 0.875, -0.375, - -1.125, -1.375, 0.750, -1.875, -0.625, -1.125, 1.250, -1.}, + std::vector{-5, 1, -3, -4, 4, -4, 3, -3, -1, 0, 0, -2, -4, 2, 0, -4, -5, -2, -4, -4, 0, -2, + 3, -3, 4, -1, -4, -1, -1, -5, 4, -1, -2, -3, 0, 4, -1, -5, -4, 1, 1, 4, -5, -5, + -5, 4, -3, -3, -3, 4, 0, -3, -5, 1, 4, 2, 1, -5, -5, 1, 0, -4, -1, 2, -4, -2, + 4, 3, 1, -3, -3, -2, -4, -3, -3, 3, -1, 1, 2, 2, -4, -5, -4, 1, 3, -4, -1, 2, + 4, -5, 0, 1, -2, 0, 0, -2, 3, -2, -5, -3, -5, -2, -1, 3, -2, 4, 3, -3}, + std::vector{-0.750, -0.250, -1.375, -1.125, -1.125, -0.500, -0.875, -1.250, -0.375, -1.625, -1., + -0.500, -0.250, -0.750, -1.875, -0.625, 0.125, -0.375, -1.625, -1.250, 0., -1., + 0.875, -0.375, -1.125, -1.375, 0.750, -1.875, -0.625, -1.125, 1.250, -1.}, ov::Shape{3}, {2, 2, 2}), }; @@ -160,8 +164,7 @@ std::vector generateCombinedParamsForAdaptiveAvgPool() { const std::vector> allTypeParams{ generateParamsForAdaptiveAvgPool(), generateParamsForAdaptiveAvgPool(), - generateParamsForAdaptiveAvgPool() - }; + generateParamsForAdaptiveAvgPool()}; std::vector combinedParams; @@ -172,10 +175,9 @@ std::vector generateCombinedParamsForAdaptiveAvgPool() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_AdaptiveAvgPool_With_Hardcoded_Refs, - ReferenceAdaptiveAvgPoolLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAdaptiveAvgPool()), - ReferenceAdaptiveAvgPoolLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_AdaptiveAvgPool_With_Hardcoded_Refs, + ReferenceAdaptiveAvgPoolLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAdaptiveAvgPool()), + ReferenceAdaptiveAvgPoolLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/adaptive_max_pool.cpp b/src/plugins/template/tests/functional/op_reference/adaptive_max_pool.cpp index 0fc8fab948c51e..68ac723f0ae8e2 100644 --- a/src/plugins/template/tests/functional/op_reference/adaptive_max_pool.cpp +++ b/src/plugins/template/tests/functional/op_reference/adaptive_max_pool.cpp @@ -2,10 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/adaptive_max_pool.hpp" + #include #include "base_reference_test.hpp" -#include "openvino/op/adaptive_max_pool.hpp" #include "openvino/op/constant.hpp" using namespace ov; @@ -44,7 +45,8 @@ struct AdaptiveMaxPoolParams { std::vector m_adaptive_values; }; -class ReferenceAdaptiveMaxPoolLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceAdaptiveMaxPoolLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -68,9 +70,9 @@ class ReferenceAdaptiveMaxPoolLayerTest : public testing::TestWithParam CreateFunction(const Shape& input_shape, - const element::Type& input_type, - const Shape& adaptive_shape, - const std::vector adaptive_values) { + const element::Type& input_type, + const Shape& adaptive_shape, + const std::vector adaptive_values) { const auto in = std::make_shared(input_type, input_shape); const auto out = op::v0::Constant::create(element::Type_t::i64, adaptive_shape, adaptive_values); const auto adaptive_max_pool = std::make_shared(in, out); @@ -93,7 +95,7 @@ std::vector generateParamsForAdaptiveMaxPoolWithExpectedR IN_ET, IN_ET, std::vector{0, 4, 1, 3, -2, -5, -2, -2, 1, -3, 1, -3, -4, 0, -2, 1, -1, -2, 3, -1, -3, - -1, -2, 3, 4, -3, -4, 1, 2, 0, -4, -5, -2, -2, -3, 2, 3, 1, -5, 2, -4, -2}, + -1, -2, 3, 4, -3, -4, 1, 2, 0, -4, -5, -2, -2, -3, 2, 3, 1, -5, 2, -4, -2}, std::vector{4, 3, -2, @@ -114,77 +116,69 @@ std::vector generateParamsForAdaptiveMaxPoolWithExpectedR 2, 2}, std::vector{1, - 3, - 4, - 1, - 3, - 6, - 1, - 4, - 4, - - 2, - 3, - 6, - 0, - 4, - 4, - 1, - 4, - 4}, - ov::Shape{1}, + 3, + 4, + 1, + 3, + 6, + 1, + 4, + 4, + + 2, + 3, + 6, + 0, + 4, + 4, + 1, + 4, + 4}, + ov::Shape{1}, std::vector{3}), AdaptiveMaxPoolParams( ov::Shape{1, 3, 7, 10}, ov::Shape{1, 3, 3, 3}, IN_ET, IN_ET, - std::vector{0, -2, -5, -5, 2, 3, 2, -3, 1, -2, -4, -1, -1, -1, 2, -4, 3, -5, -1, -1, 1, 2, 4, -2, - -3, -2, 0, -5, 2, -4, -1, -4, 4, 2, 1, -2, 2, -3, 0, 1, -3, 3, -1, 4, 0, 2, 0, 3, - 4, -4, 1, 4, -1, -5, -2, 4, -3, 3, 2, 1, 0, 4, 2, -5, 2, -5, -2, -1, 4, 2, - - 0, 4, -2, 0, -5, -3, 4, -4, -2, -2, 2, 1, 4, 3, 2, -5, -4, -4, 0, 1, 4, -4, -3, 3, - 3, 4, -2, -3, -4, -2, 0, 1, -1, 3, -2, 2, 0, -3, -1, -1, 0, 0, 2, 2, -2, 1, -3, 1, - 2, 4, 3, -5, -4, 1, -4, 2, 0, -2, -5, 2, -3, -2, -3, -4, 2, -2, -4, 2, -4, -3, - - 1, -5, -1, -5, 2, 1, 3, 4, 3, 0, -5, 4, -3, -4, -1, 2, -4, 2, 0, -5, -3, 0, 2, -3, - -5, 3, -2, -1, -5, -4, -5, 0, -5, -1, -3, 3, 3, -4, -3, -4, -5, 4, -1, 1, -1, -4, 1, -3, - -4, -1, -2, -3, -5, 2, 2, -5, 1, 1, -5, -4, 0, 2, 4, 2, 0, 2, 4, 0, -5, 2}, - std::vector{4, 3, 3, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 3, 2, 4, - 4, 3, 4, 4, 3, 3, 4, 4, 4}, - std::vector{22, 5, 16, 22, 43, 48, 43, 43, 48, - 1, 6, 6, 20, 25, 49, 50, 43, 49, - 11, 6, 7, 41, 25, 36, 41, 66, 66}, + std::vector{ + 0, -2, -5, -5, 2, 3, 2, -3, 1, -2, -4, -1, -1, -1, 2, -4, 3, -5, -1, -1, 1, 2, 4, -2, + -3, -2, 0, -5, 2, -4, -1, -4, 4, 2, 1, -2, 2, -3, 0, 1, -3, 3, -1, 4, 0, 2, 0, 3, + 4, -4, 1, 4, -1, -5, -2, 4, -3, 3, 2, 1, 0, 4, 2, -5, 2, -5, -2, -1, 4, 2, + + 0, 4, -2, 0, -5, -3, 4, -4, -2, -2, 2, 1, 4, 3, 2, -5, -4, -4, 0, 1, 4, -4, -3, 3, + 3, 4, -2, -3, -4, -2, 0, 1, -1, 3, -2, 2, 0, -3, -1, -1, 0, 0, 2, 2, -2, 1, -3, 1, + 2, 4, 3, -5, -4, 1, -4, 2, 0, -2, -5, 2, -3, -2, -3, -4, 2, -2, -4, 2, -4, -3, + + 1, -5, -1, -5, 2, 1, 3, 4, 3, 0, -5, 4, -3, -4, -1, 2, -4, 2, 0, -5, -3, 0, 2, -3, + -5, 3, -2, -1, -5, -4, -5, 0, -5, -1, -3, 3, 3, -4, -3, -4, -5, 4, -1, 1, -1, -4, 1, -3, + -4, -1, -2, -3, -5, 2, 2, -5, 1, 1, -5, -4, 0, 2, 4, 2, 0, 2, 4, 0, -5, 2}, + std::vector{4, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2, 4, 4, 3, 4, 4, 3, 3, 4, 4, 4}, + std::vector{22, 5, 16, 22, 43, 48, 43, 43, 48, 1, 6, 6, 20, 25, + 49, 50, 43, 49, 11, 6, 7, 41, 25, 36, 41, 66, 66}, ov::Shape{2}, std::vector{3, 3}), - AdaptiveMaxPoolParams( - ov::Shape{2, 2, 3, 3, 3}, - ov::Shape{2, 2, 2, 2, 2}, - IN_ET, - IN_ET, - std::vector{-5, 1, -3, -4, 4, -4, 3, -3, -1, 0, 0, -2, -4, 2, - 0, -4, -5, -2, -4, -4, 0, -2, 3, -3, 4, -1, -4, - - -1, -1, -5, 4, -1, -2, -3, 0, 4, -1, -5, -4, 1, 1, - 4, -5, -5, -5, 4, -3, -3, -3, 4, 0, -3, -5, 1, - - 4, 2, 1, -5, -5, 1, 0, -4, -1, 2, -4, -2, 4, 3, - 1, -3, -3, -2, -4, -3, -3, 3, -1, 1, 2, 2, -4, - - -5, -4, 1, 3, -4, -1, 2, 4, -5, 0, 1, -2, 0, 0, - -2, 3, -2, -5, -3, -5, -2, -1, 3, -2, 4, 3, -3}, - std::vector{4, 4, 4, 4, 3, 3, 4, 3, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 3, 4, 3, 4, 3, 4, 3, - 3, 1, 4, 4, 3, 3, 4, 3}, - std::vector{4, 4, 4, 4, 22, 22, 24, 22, - 3, 14, 3, 8, 18, 14, 22, 14, - 0, 13, 12, 13, 12, 13, 12, 13, - 3, 2, 7, 7, 22, 22, 24, 22}, - ov::Shape{3}, - std::vector{2, 2, 2}) - }; + AdaptiveMaxPoolParams(ov::Shape{2, 2, 3, 3, 3}, + ov::Shape{2, 2, 2, 2, 2}, + IN_ET, + IN_ET, + std::vector{-5, 1, -3, -4, 4, -4, 3, -3, -1, 0, 0, -2, -4, 2, + 0, -4, -5, -2, -4, -4, 0, -2, 3, -3, 4, -1, -4, + + -1, -1, -5, 4, -1, -2, -3, 0, 4, -1, -5, -4, 1, 1, + 4, -5, -5, -5, 4, -3, -3, -3, 4, 0, -3, -5, 1, + + 4, 2, 1, -5, -5, 1, 0, -4, -1, 2, -4, -2, 4, 3, + 1, -3, -3, -2, -4, -3, -3, 3, -1, 1, 2, 2, -4, + + -5, -4, 1, 3, -4, -1, 2, 4, -5, 0, 1, -2, 0, 0, + -2, 3, -2, -5, -3, -5, -2, -1, 3, -2, 4, 3, -3}, + std::vector{4, 4, 4, 4, 3, 3, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 3, 4, 3, 4, 3, 4, 3, 3, 1, 4, 4, 3, 3, 4, 3}, + std::vector{4, 4, 4, 4, 22, 22, 24, 22, 3, 14, 3, 8, 18, 14, 22, 14, + 0, 13, 12, 13, 12, 13, 12, 13, 3, 2, 7, 7, 22, 22, 24, 22}, + ov::Shape{3}, + std::vector{2, 2, 2})}; return params; } @@ -208,10 +202,9 @@ std::vector generateCombinedParamsForAdaptiveMaxPool() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_AdaptiveMaxPool_With_Hardcoded_Refs, - ReferenceAdaptiveMaxPoolLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAdaptiveMaxPool()), - ReferenceAdaptiveMaxPoolLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_AdaptiveMaxPool_With_Hardcoded_Refs, + ReferenceAdaptiveMaxPoolLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAdaptiveMaxPool()), + ReferenceAdaptiveMaxPoolLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/add.cpp b/src/plugins/template/tests/functional/op_reference/add.cpp index 7a5e99ba91d493..96a0091a949594 100644 --- a/src/plugins/template/tests/functional/op_reference/add.cpp +++ b/src/plugins/template/tests/functional/op_reference/add.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/add.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/add.hpp" using namespace ov; using namespace reference_tests; @@ -57,9 +59,9 @@ class ReferenceAddLayerTest : public testing::TestWithParam, public C private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto add = std::make_shared(in1, in2); @@ -88,9 +90,9 @@ class ReferenceAddInPlaceLayerTest : public testing::TestWithParam, p private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); auto add = std::make_shared(in1, in2); @@ -146,31 +148,27 @@ template std::vector generateParamsForAddInPlace() { using T = typename element_type_traits::value_type; - std::vector params{ - AddParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{1, 2, 3, 4}, - std::vector{5, 6, 7, 8}, - std::vector{48, 64, 80, 96}) - }; + std::vector params{AddParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{1, 2, 3, 4}, + std::vector{5, 6, 7, 8}, + std::vector{48, 64, 80, 96})}; return params; } std::vector generateCombinedParamsForAdd() { - const std::vector> allTypeParams{ - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd() - }; + const std::vector> allTypeParams{generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd()}; std::vector combinedParams; @@ -182,19 +180,17 @@ std::vector generateCombinedParamsForAdd() { } std::vector generateCombinedParamsForAddInPlace() { - const std::vector> allTypeParams{ - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace() - }; + const std::vector> allTypeParams{generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace()}; std::vector combinedParams; @@ -205,16 +201,14 @@ std::vector generateCombinedParamsForAddInPlace() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Add_With_Hardcoded_Refs, - ReferenceAddLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAdd()), - ReferenceAddLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Add_In_Place_With_Hardcoded_Refs, - ReferenceAddInPlaceLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAddInPlace()), - ReferenceAddLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Add_With_Hardcoded_Refs, + ReferenceAddLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAdd()), + ReferenceAddLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Add_In_Place_With_Hardcoded_Refs, + ReferenceAddInPlaceLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAddInPlace()), + ReferenceAddLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/asin.cpp b/src/plugins/template/tests/functional/op_reference/asin.cpp index 362b7fe6acc980..56dfd504d9d110 100644 --- a/src/plugins/template/tests/functional/op_reference/asin.cpp +++ b/src/plugins/template/tests/functional/op_reference/asin.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/asin.hpp" + #include -#include "openvino/op/asin.hpp" -#include "shared_test_classes/base/layer_test_utils.hpp" #include "base_reference_test.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" using namespace ov; @@ -43,7 +44,7 @@ class ReferenceAsinLayerTest : public testing::TestWithParam, public static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Asin = std::make_shared(in); - return std::make_shared(NodeVector {Asin}, ParameterVector {in}); + return std::make_shared(NodeVector{Asin}, ParameterVector{in}); } }; @@ -54,46 +55,56 @@ TEST_P(ReferenceAsinLayerTest, AsinWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Asin_With_Hardcoded_Refs, ReferenceAsinLayerTest, + smoke_Asin_With_Hardcoded_Refs, + ReferenceAsinLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) - .expected({{11}, element::f16, std::vector {-1.57079633f, - -0.84806208f, - -0.52359878f, - -0.25268026f, - -0.12532783f, - 0.00000000f, - 0.12532783f, - 0.25268026f, - 0.52359878f, - 0.84806208f, - 1.57079633f}}), - Builder {} - .input({{11}, element::f32, std::vector {-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) - .expected({{11}, element::f32, std::vector {-1.57079633f, - -0.84806208f, - -0.52359878f, - -0.25268026f, - -0.12532783f, - 0.00000000f, - 0.12532783f, - 0.25268026f, - 0.52359878f, - 0.84806208f, - 1.57079633f}}), - Builder {} - .input({{3}, element::i32, std::vector {-1, 0, 1}}) - .expected({{3}, element::i32, std::vector {-1, 0, 1}}), - Builder {} - .input({{3}, element::i64, std::vector {-1, 0, 1}}) - .expected({{3}, element::i64, std::vector {-1, 0, 1}}), - Builder {} - .input({{2}, element::u32, std::vector {0, 1}}) - .expected({{2}, element::u32, std::vector {0, 1}}), - Builder {} - .input({{2}, element::u64, std::vector {0, 1}}) - .expected({{2}, element::u64, std::vector {0, 1}})), + Builder{} + .input( + {{11}, + element::f16, + std::vector{-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) + .expected({{11}, + element::f16, + std::vector{-1.57079633f, + -0.84806208f, + -0.52359878f, + -0.25268026f, + -0.12532783f, + 0.00000000f, + 0.12532783f, + 0.25268026f, + 0.52359878f, + 0.84806208f, + 1.57079633f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) + .expected({{11}, + element::f32, + std::vector{-1.57079633f, + -0.84806208f, + -0.52359878f, + -0.25268026f, + -0.12532783f, + 0.00000000f, + 0.12532783f, + 0.25268026f, + 0.52359878f, + 0.84806208f, + 1.57079633f}}), + Builder{} + .input({{3}, element::i32, std::vector{-1, 0, 1}}) + .expected({{3}, element::i32, std::vector{-1, 0, 1}}), + Builder{} + .input({{3}, element::i64, std::vector{-1, 0, 1}}) + .expected({{3}, element::i64, std::vector{-1, 0, 1}}), + Builder{} + .input({{2}, element::u32, std::vector{0, 1}}) + .expected({{2}, element::u32, std::vector{0, 1}}), + Builder{} + .input({{2}, element::u64, std::vector{0, 1}}) + .expected({{2}, element::u64, std::vector{0, 1}})), ReferenceAsinLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/asinh.cpp b/src/plugins/template/tests/functional/op_reference/asinh.cpp index 6691662c6df644..0fbd3f5783819e 100644 --- a/src/plugins/template/tests/functional/op_reference/asinh.cpp +++ b/src/plugins/template/tests/functional/op_reference/asinh.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/asinh.hpp" + #include -#include "openvino/op/asinh.hpp" -#include "shared_test_classes/base/layer_test_utils.hpp" #include "base_reference_test.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" using namespace ov; @@ -43,7 +44,7 @@ class ReferenceAsinhLayerTest : public testing::TestWithParam, publ static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Asinh = std::make_shared(in); - return std::make_shared(NodeVector {Asinh}, ParameterVector {in}); + return std::make_shared(NodeVector{Asinh}, ParameterVector{in}); } }; @@ -54,46 +55,54 @@ TEST_P(ReferenceAsinhLayerTest, AsinhWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Asinh_With_Hardcoded_Refs, ReferenceAsinhLayerTest, + smoke_Asinh_With_Hardcoded_Refs, + ReferenceAsinhLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {0.f, 1.f, -1.f, 2.f, -2.f, 3.f, -3.f, 4.f, 5.f, 10.f, 100.f}}) - .expected({{11}, element::f16, std::vector {0.00000000f, - 0.88137359f, - -0.88137359f, - 1.44363548f, - -1.44363548f, - 1.81844646f, - -1.81844646f, - 2.09471255f, - 2.31243834f, - 2.99822295f, - 5.29834237f}}), - Builder {} - .input({{11}, element::f32, std::vector {0.f, 1.f, -1.f, 2.f, -2.f, 3.f, -3.f, 4.f, 5.f, 10.f, 100.f}}) - .expected({{11}, element::f32, std::vector {0.00000000f, - 0.88137359f, - -0.88137359f, - 1.44363548f, - -1.44363548f, - 1.81844646f, - -1.81844646f, - 2.09471255f, - 2.31243834f, - 2.99822295f, - 5.29834237f}}), - Builder {} - .input({{11}, element::i32, std::vector {-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5}}) - .expected({{11}, element::i32, std::vector {-2, -2, -2, -1, -1, 0, 1, 1, 2, 2, 2}}), - Builder {} - .input({{11}, element::i64, std::vector {-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5}}) - .expected({{11}, element::i64, std::vector {-2, -2, -2, -1, -1, 0, 1, 1, 2, 2, 2}}), - Builder {} - .input({{6}, element::u32, std::vector {0, 1, 2, 3, 4, 5}}) - .expected({{6}, element::u32, std::vector {0, 1, 1, 2, 2, 2}}), - Builder {} - .input({{6}, element::u64, std::vector {0, 1, 2, 3, 4, 5}}) - .expected({{6}, element::u64, std::vector {0, 1, 1, 2, 2, 2}})), + Builder{} + .input({{11}, + element::f16, + std::vector{0.f, 1.f, -1.f, 2.f, -2.f, 3.f, -3.f, 4.f, 5.f, 10.f, 100.f}}) + .expected({{11}, + element::f16, + std::vector{0.00000000f, + 0.88137359f, + -0.88137359f, + 1.44363548f, + -1.44363548f, + 1.81844646f, + -1.81844646f, + 2.09471255f, + 2.31243834f, + 2.99822295f, + 5.29834237f}}), + Builder{} + .input( + {{11}, element::f32, std::vector{0.f, 1.f, -1.f, 2.f, -2.f, 3.f, -3.f, 4.f, 5.f, 10.f, 100.f}}) + .expected({{11}, + element::f32, + std::vector{0.00000000f, + 0.88137359f, + -0.88137359f, + 1.44363548f, + -1.44363548f, + 1.81844646f, + -1.81844646f, + 2.09471255f, + 2.31243834f, + 2.99822295f, + 5.29834237f}}), + Builder{} + .input({{11}, element::i32, std::vector{-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5}}) + .expected({{11}, element::i32, std::vector{-2, -2, -2, -1, -1, 0, 1, 1, 2, 2, 2}}), + Builder{} + .input({{11}, element::i64, std::vector{-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5}}) + .expected({{11}, element::i64, std::vector{-2, -2, -2, -1, -1, 0, 1, 1, 2, 2, 2}}), + Builder{} + .input({{6}, element::u32, std::vector{0, 1, 2, 3, 4, 5}}) + .expected({{6}, element::u32, std::vector{0, 1, 1, 2, 2, 2}}), + Builder{} + .input({{6}, element::u64, std::vector{0, 1, 2, 3, 4, 5}}) + .expected({{6}, element::u64, std::vector{0, 1, 1, 2, 2, 2}})), ReferenceAsinhLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/atan.cpp b/src/plugins/template/tests/functional/op_reference/atan.cpp index 17e5ca343330de..99ff77e977e4ec 100644 --- a/src/plugins/template/tests/functional/op_reference/atan.cpp +++ b/src/plugins/template/tests/functional/op_reference/atan.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/atan.hpp" + #include -#include "openvino/op/atan.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -53,34 +54,43 @@ TEST_P(ReferenceAtanLayerTest, AtanWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Atan_With_Hardcoded_Refs, ReferenceAtanLayerTest, + smoke_Atan_With_Hardcoded_Refs, + ReferenceAtanLayerTest, ::testing::Values( Builder{} - .input({{11}, element::f16, std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f16, std::vector{-1.32581766f, - -1.10714872f, - -0.78539816f, - -0.46364761f, - -0.24497866f, - 0.00000000f, - 0.24497866f, - 0.46364761f, - 0.78539816f, - 1.10714872f, - 1.32581766f}}), + .input({{11}, + element::f16, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f16, + std::vector{-1.32581766f, + -1.10714872f, + -0.78539816f, + -0.46364761f, + -0.24497866f, + 0.00000000f, + 0.24497866f, + 0.46364761f, + 0.78539816f, + 1.10714872f, + 1.32581766f}}), Builder{} - .input({{11}, element::f32, std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f32, std::vector{-1.32581766f, - -1.10714872f, - -0.78539816f, - -0.46364761f, - -0.24497866f, - 0.00000000f, - 0.24497866f, - 0.46364761f, - 0.78539816f, - 1.10714872f, - 1.32581766f}}), + .input({{11}, + element::f32, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f32, + std::vector{-1.32581766f, + -1.10714872f, + -0.78539816f, + -0.46364761f, + -0.24497866f, + 0.00000000f, + 0.24497866f, + 0.46364761f, + 0.78539816f, + 1.10714872f, + 1.32581766f}}), Builder{} .input({{5}, element::i32, std::vector{-2, -1, 0, 1, 2}}) .expected({{5}, element::i32, std::vector{-1, -1, 0, 1, 1}}), diff --git a/src/plugins/template/tests/functional/op_reference/augru_cell.cpp b/src/plugins/template/tests/functional/op_reference/augru_cell.cpp index 239dd84342ce4d..c72ad13aaeb6b4 100644 --- a/src/plugins/template/tests/functional/op_reference/augru_cell.cpp +++ b/src/plugins/template/tests/functional/op_reference/augru_cell.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "ov_ops/augru_cell.hpp" + #include -#include "ov_ops/augru_cell.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,12 +13,30 @@ using namespace ov; namespace { struct AUGRUCellParams { - AUGRUCellParams( - const int32_t batchSize, const int32_t inputSize, const int32_t hiddenSize, const int32_t gatesCount, - const reference_tests::Tensor& X, const reference_tests::Tensor& H_t, const reference_tests::Tensor& W, const reference_tests::Tensor& R, const reference_tests::Tensor& B, const reference_tests::Tensor& A, - const reference_tests::Tensor& Ho, const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), gatesCount(gatesCount), - X(X), H_t(H_t), W(W), R(R), B(B), A(A), Ho(Ho), testcaseName(testcaseName) {} + AUGRUCellParams(const int32_t batchSize, + const int32_t inputSize, + const int32_t hiddenSize, + const int32_t gatesCount, + const reference_tests::Tensor& X, + const reference_tests::Tensor& H_t, + const reference_tests::Tensor& W, + const reference_tests::Tensor& R, + const reference_tests::Tensor& B, + const reference_tests::Tensor& A, + const reference_tests::Tensor& Ho, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + gatesCount(gatesCount), + X(X), + H_t(H_t), + W(W), + R(R), + B(B), + A(A), + Ho(Ho), + testcaseName(testcaseName) {} int32_t batchSize; int32_t inputSize; @@ -76,13 +95,7 @@ class ReferenceAUGRUCellTest : public testing::TestWithParam, p const auto B = std::make_shared(params.B.type, params.B.shape); const auto A = std::make_shared(params.A.type, params.A.shape); - const auto augru_cell = std::make_shared(X, - H_t, - W, - R, - B, - A, - params.hiddenSize); + const auto augru_cell = std::make_shared(X, H_t, W, R, B, A, params.hiddenSize); auto function = std::make_shared(NodeVector{augru_cell}, ParameterVector{X, H_t, W, R, B, A}); return function; @@ -96,107 +109,144 @@ TEST_P(ReferenceAUGRUCellTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ AUGRUCellParams( - 2, 3, 3, 3, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, - 0.8295078f, 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, - 0.3096991f, 0.5638341f, 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, - 0.8049057f, 0.43966424f, 0.46294412f, 0.9833361f, 0.31369713f, 0.1719934f, - 0.4937093f, 0.6353004f, 0.77982515f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, 0.1623331f, 0.01389796f, - 0.99669236f, 0.53901845f, 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, - 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, 0.65131867f, 0.78163475f, - 0.12058706f, 0.45591718f, 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, - 0.51267904f, 0.49030215f, 0.08498167f}), - reference_tests::Tensor(ET, {3 * 3}, std::vector{ - 0.8286678f + 0.9175602f, - 0.9153158f + 0.14958014f, - 0.9581612f + 0.49230585f, - 0.6639213f + 0.63162816f, - 0.84239805f + 0.4161903f, - 0.5282445f + 0.22148274f, - 0.14153397f + 0.50496656f, - 0.22404431f + 0.34798595f, - 0.6549655f + 0.6699164f}), + 2, + 3, + 3, + 3, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), + reference_tests::Tensor( + ET, + {3 * 3, 3}, + std::vector{0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, 0.8295078f, + 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, 0.3096991f, 0.5638341f, + 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, 0.8049057f, 0.43966424f, 0.46294412f, + 0.9833361f, 0.31369713f, 0.1719934f, 0.4937093f, 0.6353004f, 0.77982515f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, + 0.1623331f, 0.01389796f, 0.99669236f, 0.53901845f, + 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, + 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, + 0.65131867f, 0.78163475f, 0.12058706f, 0.45591718f, + 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, + 0.51267904f, 0.49030215f, 0.08498167f}), + reference_tests::Tensor(ET, + {3 * 3}, + std::vector{0.8286678f + 0.9175602f, + 0.9153158f + 0.14958014f, + 0.9581612f + 0.49230585f, + 0.6639213f + 0.63162816f, + 0.84239805f + 0.4161903f, + 0.5282445f + 0.22148274f, + 0.14153397f + 0.50496656f, + 0.22404431f + 0.34798595f, + 0.6549655f + 0.6699164f}), reference_tests::Tensor(ET, {2, 1}, std::vector(2, 0)), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.480763f, 0.996927f, 0.830836f, 0.50231f, 0.894105f, 0.58932f}), + reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.480763f, 0.996927f, 0.830836f, 0.50231f, 0.894105f, 0.58932f}), "augru_zero_attentional_gate"), AUGRUCellParams( - 2, 3, 3, 3, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, - 0.8295078f, 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, - 0.3096991f, 0.5638341f, 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, - 0.8049057f, 0.43966424f, 0.46294412f, 0.9833361f, 0.31369713f, 0.1719934f, - 0.4937093f, 0.6353004f, 0.77982515f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, 0.1623331f, 0.01389796f, - 0.99669236f, 0.53901845f, 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, - 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, 0.65131867f, 0.78163475f, - 0.12058706f, 0.45591718f, 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, - 0.51267904f, 0.49030215f, 0.08498167f}), - reference_tests::Tensor(ET, {3 * 3}, std::vector{ - 0.8286678f + 0.9175602f, - 0.9153158f + 0.14958014f, - 0.9581612f + 0.49230585f, - 0.6639213f + 0.63162816f, - 0.84239805f + 0.4161903f, - 0.5282445f + 0.22148274f, - 0.14153397f + 0.50496656f, - 0.22404431f + 0.34798595f, - 0.6549655f + 0.6699164f}), + 2, + 3, + 3, + 3, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), + reference_tests::Tensor( + ET, + {3 * 3, 3}, + std::vector{0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, 0.8295078f, + 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, 0.3096991f, 0.5638341f, + 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, 0.8049057f, 0.43966424f, 0.46294412f, + 0.9833361f, 0.31369713f, 0.1719934f, 0.4937093f, 0.6353004f, 0.77982515f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, + 0.1623331f, 0.01389796f, 0.99669236f, 0.53901845f, + 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, + 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, + 0.65131867f, 0.78163475f, 0.12058706f, 0.45591718f, + 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, + 0.51267904f, 0.49030215f, 0.08498167f}), + reference_tests::Tensor(ET, + {3 * 3}, + std::vector{0.8286678f + 0.9175602f, + 0.9153158f + 0.14958014f, + 0.9581612f + 0.49230585f, + 0.6639213f + 0.63162816f, + 0.84239805f + 0.4161903f, + 0.5282445f + 0.22148274f, + 0.14153397f + 0.50496656f, + 0.22404431f + 0.34798595f, + 0.6549655f + 0.6699164f}), reference_tests::Tensor(ET, {2, 1}, std::vector{0.4f, 0.7f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.686381f, 0.997266f, 0.897868f, 0.832165f, 0.963144f, 0.868483f}), - "augru_attentional_gate_provided"), -AUGRUCellParams( - 2, 3, 4, 3, - reference_tests::Tensor(ET, {1, 3}, std::vector{ - 0.64053001f, 0.84805253f, 0.84544252f}), - reference_tests::Tensor(ET, {1, 4}, std::vector{ - 0.43200249f, 0.08097203f, 0.68151259f, 0.09095205f}), - reference_tests::Tensor(ET, {3 * 4, 3}, std::vector{ - 0.23187583f, 0.66675389f, 0.01945467f, 0.60630121f, 0.18400699f, 0.16003634f, - 0.04636866f, 0.75745989f, 0.96562912f, 0.56330529f, 0.20863093f, 0.93179716f, - 0.99211225f, 0.73087621f, 0.21175275f, 0.03808638f, 0.63130526f, 0.76965886f, - 0.67656870f, 0.57886251f, 0.94375534f, 0.88943972f, 0.96256618f, 0.38204562f, - 0.76424904f, 0.30076485f, 0.60250044f, 0.40778284f, 0.70017757f, 0.00410288f, - 0.97978094f, 0.73106175f, 0.22250106f, 0.44011834f, 0.11434720f, 0.62128995}), - reference_tests::Tensor(ET, {3 * 4, 4}, std::vector{ - 0.60702709f, 0.47515485f, 0.26202747f, 0.53851601f, 0.73423241f, 0.11627945f, - 0.04631785f, 0.43604361f, 0.12472080f, 0.47546322f, 0.23103632f, 0.36108585f, - 0.45139418f, 0.79838954f, 0.28194170f, 0.76877929f, 0.28428253f, 0.13822001f, - 0.51670576f, 0.80312243f, 0.11050813f, 0.19925340f, 0.29769184f, 0.78933459f, - 0.79981487f, 0.55313454f, 0.04135296f, 0.50578146f, 0.76553680f, 0.44311704f, - 0.30525652f, 0.26301583f, 0.41771479f, 0.18182059f, 0.11106816f, 0.67427757f, - 0.59174944f, 0.13339960f, 0.33362533f, 0.78938375f, 0.99260256f, 0.86955733f, - 0.24899024f, 0.87134874f, 0.02803802f, 0.61244129f, 0.40803782f, 0.90735816f, - 0.51267904f, 0.49030215f, 0.08498167f}), - reference_tests::Tensor(ET, {3 * 4}, std::vector{ - 0.61387895f, 0.56121052f, 0.89328753f, 0.15302506f, 0.90491122f, 0.78289335f, - 0.97930211f, 0.75002178f, 0.92500923f, 0.18957983f, 0.07849785f, 0.76568159f}), + reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.686381f, 0.997266f, 0.897868f, 0.832165f, 0.963144f, 0.868483f}), + "augru_attentional_gate_provided"), + AUGRUCellParams( + 2, + 3, + 4, + 3, + reference_tests::Tensor(ET, {1, 3}, std::vector{0.64053001f, 0.84805253f, 0.84544252f}), + reference_tests::Tensor(ET, {1, 4}, std::vector{0.43200249f, 0.08097203f, 0.68151259f, 0.09095205f}), + reference_tests::Tensor( + ET, + {3 * 4, 3}, + std::vector{0.23187583f, 0.66675389f, 0.01945467f, 0.60630121f, 0.18400699f, 0.16003634f, + 0.04636866f, 0.75745989f, 0.96562912f, 0.56330529f, 0.20863093f, 0.93179716f, + 0.99211225f, 0.73087621f, 0.21175275f, 0.03808638f, 0.63130526f, 0.76965886f, + 0.67656870f, 0.57886251f, 0.94375534f, 0.88943972f, 0.96256618f, 0.38204562f, + 0.76424904f, 0.30076485f, 0.60250044f, 0.40778284f, 0.70017757f, 0.00410288f, + 0.97978094f, 0.73106175f, 0.22250106f, 0.44011834f, 0.11434720f, 0.62128995}), + reference_tests::Tensor( + ET, + {3 * 4, 4}, + std::vector{0.60702709f, 0.47515485f, 0.26202747f, 0.53851601f, 0.73423241f, 0.11627945f, + 0.04631785f, 0.43604361f, 0.12472080f, 0.47546322f, 0.23103632f, 0.36108585f, + 0.45139418f, 0.79838954f, 0.28194170f, 0.76877929f, 0.28428253f, 0.13822001f, + 0.51670576f, 0.80312243f, 0.11050813f, 0.19925340f, 0.29769184f, 0.78933459f, + 0.79981487f, 0.55313454f, 0.04135296f, 0.50578146f, 0.76553680f, 0.44311704f, + 0.30525652f, 0.26301583f, 0.41771479f, 0.18182059f, 0.11106816f, 0.67427757f, + 0.59174944f, 0.13339960f, 0.33362533f, 0.78938375f, 0.99260256f, 0.86955733f, + 0.24899024f, 0.87134874f, 0.02803802f, 0.61244129f, 0.40803782f, 0.90735816f, + 0.51267904f, 0.49030215f, 0.08498167f}), + reference_tests::Tensor(ET, + {3 * 4}, + std::vector{0.61387895f, + 0.56121052f, + 0.89328753f, + 0.15302506f, + 0.90491122f, + 0.78289335f, + 0.97930211f, + 0.75002178f, + 0.92500923f, + 0.18957983f, + 0.07849785f, + 0.76568159f}), reference_tests::Tensor(ET, {1, 1}, std::vector{0.3333f}), - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 0.666063f, 0.451451f, 0.792762f, 0.453281f}), - "augru_different_input_and_hidden_size"), - }; + reference_tests::Tensor(ET, {2, 2}, std::vector{0.666063f, 0.451451f, 0.792762f, 0.453281f}), + "augru_different_input_and_hidden_size"), + }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -210,7 +260,9 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_AUGRUCell_With_Hardcoded_Refs, ReferenceAUGRUCellTest, - testing::ValuesIn(generateCombinedParams()), ReferenceAUGRUCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_AUGRUCell_With_Hardcoded_Refs, + ReferenceAUGRUCellTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceAUGRUCellTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/augru_sequence.cpp b/src/plugins/template/tests/functional/op_reference/augru_sequence.cpp index 27d5c48330bc05..c9d654da23367e 100644 --- a/src/plugins/template/tests/functional/op_reference/augru_sequence.cpp +++ b/src/plugins/template/tests/functional/op_reference/augru_sequence.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "ov_ops/augru_sequence.hpp" + #include -#include "ov_ops/augru_sequence.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,42 +14,53 @@ using namespace ov; namespace { struct AUGRUSequenceParams { template - AUGRUSequenceParams( - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& seqLengthsValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, const std::vector& AValues, - const std::vector& YValues, const std::vector& HoValues, - const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - iType(iType), oType(iType), - testcaseName(testcaseName) { - numDirections = 1; + AUGRUSequenceParams(const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& seqLengthsValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& AValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + numDirections = 1; - Shape XShape = Shape{batchSize, seqLength, inputSize}; - Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape seqLengthsShape = Shape{batchSize}; - Shape WShape = Shape{numDirections, 3 * hiddenSize, inputSize}; - Shape RShape = Shape{numDirections, 3 * hiddenSize, hiddenSize}; - Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; - Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape XShape = Shape{batchSize, seqLength, inputSize}; + Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape seqLengthsShape = Shape{batchSize}; + Shape WShape = Shape{numDirections, 3 * hiddenSize, inputSize}; + Shape RShape = Shape{numDirections, 3 * hiddenSize, hiddenSize}; + Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; + Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); - Shape BShape = Shape{numDirections, 3 * hiddenSize}; - B = reference_tests::Tensor(BShape, iType, BValues); + Shape BShape = Shape{numDirections, 3 * hiddenSize}; + B = reference_tests::Tensor(BShape, iType, BValues); - Shape AShape = Shape{batchSize, seqLength, 1}; - A = reference_tests::Tensor(AShape, iType, AValues); - - } + Shape AShape = Shape{batchSize, seqLength, 1}; + A = reference_tests::Tensor(AShape, iType, AValues); + } size_t batchSize; size_t inputSize; @@ -75,7 +87,13 @@ class ReferenceAUGRUSequenceTest : public testing::TestWithParam CreateFunction(const AUGRUSequenceParams& params) { const auto X = std::make_shared(params.X.type, params.X.shape); const auto H_t = std::make_shared(params.H_t.type, params.H_t.shape); - const auto sequence_lengths = std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); + const auto sequence_lengths = + std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); const auto W = std::make_shared(params.W.type, params.W.shape); const auto R = std::make_shared(params.R.type, params.R.shape); const auto B = std::make_shared(params.B.type, params.B.shape); const auto A = std::make_shared(params.A.type, params.A.shape); const auto augru_sequence = - std::make_shared(X, - H_t, - sequence_lengths, - W, - R, - B, - A, - params.hiddenSize); + std::make_shared(X, H_t, sequence_lengths, W, R, B, A, params.hiddenSize); - auto function = std::make_shared(augru_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B, A}); + auto function = + std::make_shared(augru_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B, A}); return function; } }; @@ -130,504 +143,528 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ AUGRUSequenceParams( - 5, 10, 10, 10, + 5, + 10, + 10, + 10, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, - std::vector(5*10, 0), - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - "augru_sequence_zero_attentional_gate"), + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{ + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, + std::vector(5 * 10, 0), + std::vector{ + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, + 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, + 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, + 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, + 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, 9.99136, + 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, + 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, + 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, + 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, + 9.41985, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, + 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, + 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, + 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, + 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, + 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, + 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, + 4.87629, 9.45215, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, + 1.53319, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, + 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, + 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, 1.83521, + 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, + 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, + 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, + 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, + 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, + 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, + 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, + 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, + 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, + 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, + 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, + 1.86555, 9.13033, 10, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, + 9.13033, 10, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, + 10, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, + 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, 6.94572, + 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, 6.94572, 3.68646, + 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, + 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + "augru_sequence_zero_attentional_gate"), AUGRUSequenceParams( - 5, 10, 10, 10, + 5, + 10, + 10, + 10, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, - std::vector - {0.034518f, 0.673286f, 0.406714f, 0.252863f, 0.403579f, 0.985528f, - 0.195026f, 0.102555f, 0.862911f, 0.698157f, 0.159086f, 0.980120f, - 0.821253f, 0.041956f, 0.297002f, 0.154800f, 0.107107f, 0.457263f, - 0.512179f, 0.372368f, 0.672125f, 0.078459f, 0.593353f, 0.800342f, - 0.245871f, 0.675492f, 0.799024f, 0.432696f, 0.095204f, 0.187363f, - 0.715765f, 0.981477f, 0.806237f, 0.544187f, 0.450795f, 0.717673f, - 0.426730f, 0.601688f, 0.765923f, 0.675334f, 0.341641f, 0.958286f, - 0.137889f, 0.239074f, 0.015245f, 0.148769f, 0.793591f, 0.210904f, - 0.973056f, 0.646550f}, - std::vector{ - 1, 9.66487, 9.10331, 2.11332, 9.681, 3.05146, 4.44603, 4.37069, 6.81965, 9.12921, 1, - 3.83094, 3.64746, 1.36374, 3.8362, 1.67024, 2.12587, 2.10125, 2.90136, 3.65593, 1, - 2.67955, 2.5707, 1.2158, 2.68268, 1.39764, 1.66796, 1.65336, 2.12805, 2.57572, 1, - 2.25486, 2.17353, 1.16123, 2.25719, 1.29709, 1.49906, 1.48815, 1.84281, 2.17728, 1, - 1.74842, 1.69992, 1.09616, 1.74982, 1.17719, 1.29765, 1.29114, 1.50267, 1.70216, 1, - 1.01083, 1.01013, 1.00139, 1.01085, 1.00256, 1.00431, 1.00421, 1.00727, 1.01016, 1, - 1.00872, 1.00815, 1.00112, 1.00874, 1.00206, 1.00347, 1.00339, 1.00586, 1.00818, 1, - 1.00782, 1.00732, 1.00101, 1.00784, 1.00185, 1.00311, 1.00304, 1.00526, 1.00734, 1, - 1.00107, 1.001, 1.00014, 1.00107, 1.00025, 1.00043, 1.00042, 1.00072, 1.00101, 1, - 1.00032, 1.0003, 1.00004, 1.00032, 1.00008, 1.00013, 1.00013, 1.00022, 1.0003, 7.40507, - 3.37092, 4.9699, 4.35616, 2.7375, 5.04457, 7.91707, 4.46023, 4.25963, 8.10753, 1.12733, - 1.04713, 1.07892, 1.06672, 1.03454, 1.08041, 1.13751, 1.06879, 1.0648, 1.1413, 1.02276, - 1.00842, 1.01411, 1.01193, 1.00617, 1.01437, 1.02458, 1.0123, 1.01158, 1.02526, 1.02181, - 1.00807, 1.01352, 1.01143, 1.00592, 1.01377, 1.02355, 1.01178, 1.0111, 1.0242, 1.01533, - 1.00567, 1.0095, 1.00803, 1.00416, 1.00968, 1.01655, 1.00828, 1.0078, 1.01701, 1.01296, - 1.0048, 1.00803, 1.00679, 1.00351, 1.00818, 1.01399, 1.007, 1.00659, 1.01438, 1.01157, - 1.00428, 1.00717, 1.00606, 1.00314, 1.00731, 1.01249, 1.00625, 1.00589, 1.01284, 1.00628, - 1.00232, 1.00389, 1.00329, 1.0017, 1.00396, 1.00678, 1.00339, 1.0032, 1.00697, 1.00306, - 1.00113, 1.0019, 1.0016, 1.00083, 1.00193, 1.00331, 1.00165, 1.00156, 1.0034, 1.00192, - 1.00071, 1.00119, 1.00101, 1.00052, 1.00121, 1.00208, 1.00104, 1.00098, 1.00213, 3.29693, - 3.11274, 3.36884, 1.27384, 2.529, 3.55257, 3.44671, 3.44806, 1.80574, 1.17482, 3.11671, - 2.94697, 3.18298, 1.25236, 2.40904, 3.35229, 3.25474, 3.25598, 1.74252, 1.1611, 1.86076, - 1.79173, 1.8877, 1.10262, 1.57298, 1.95655, 1.91688, 1.91739, 1.30194, 1.06551, 1.17186, - 1.15808, 1.17724, 1.02049, 1.1144, 1.19098, 1.18306, 1.18316, 1.06029, 1.01308, 1.1296, - 1.11921, 1.13366, 1.01545, 1.08627, 1.14403, 1.13805, 1.13813, 1.04546, 1.00986, 1.04206, - 1.03868, 1.04337, 1.00501, 1.028, 1.04674, 1.0448, 1.04482, 1.01475, 1.0032, 1.00845, - 1.00777, 1.00872, 1.00101, 1.00563, 1.00939, 1.009, 1.00901, 1.00296, 1.00064, 1.0048, - 1.00441, 1.00495, 1.00057, 1.00319, 1.00533, 1.00511, 1.00511, 1.00168, 1.00037, 1.00434, - 1.00399, 1.00447, 1.00052, 1.00289, 1.00482, 1.00462, 1.00462, 1.00152, 1.00033, 1.00353, - 1.00324, 1.00364, 1.00042, 1.00235, 1.00392, 1.00376, 1.00376, 1.00124, 1.00027, 2.71529, - 2.51713, 2.71817, 2.0534, 1.50536, 1.74091, 1.36356, 3.00381, 2.05532, 1.08741, 1.03177, - 1.0281, 1.03183, 1.01951, 1.00936, 1.01372, 1.00673, 1.03712, 1.01955, 1.00162, 1.00616, - 1.00545, 1.00617, 1.00378, 1.00181, 1.00266, 1.0013, 1.00719, 1.00379, 1.00031, 1.00281, - 1.00248, 1.00281, 1.00172, 1.00083, 1.00121, 1.00059, 1.00328, 1.00173, 1.00014, 1.00154, - 1.00136, 1.00154, 1.00095, 1.00045, 1.00067, 1.00033, 1.0018, 1.00095, 1.00008, 1.00044, - 1.00038, 1.00044, 1.00027, 1.00013, 1.00019, 1.00009, 1.00051, 1.00027, 1.00002, 1.00025, - 1.00022, 1.00025, 1.00015, 1.00007, 1.00011, 1.00005, 1.00029, 1.00015, 1.00001, 1.0001, - 1.00009, 1.0001, 1.00006, 1.00003, 1.00004, 1.00002, 1.00012, 1.00006, 1.00001, 1.00002, - 1.00002, 1.00002, 1.00001, 1.00001, 1.00001, 1, 1.00003, 1.00001, 1, 1.00001, - 1.00001, 1.00001, 1, 1, 1, 1, 1.00001, 1, 1, 4.69752, - 4.91442, 2.76866, 3.64345, 2.31614, 1.4347, 3.78035, 1.56984, 6.35268, 6.92523, 1.15424, - 1.16329, 1.07378, 1.11027, 1.0549, 1.01813, 1.11598, 1.02377, 1.22328, 1.24717, 1.13297, - 1.14077, 1.0636, 1.09506, 1.04733, 1.01563, 1.09999, 1.02049, 1.19249, 1.21308, 1.10118, - 1.10712, 1.0484, 1.07234, 1.03602, 1.0119, 1.07608, 1.01559, 1.14647, 1.16214, 1.09964, - 1.10548, 1.04766, 1.07123, 1.03547, 1.01171, 1.07492, 1.01536, 1.14424, 1.15967, 1.08482, - 1.08979, 1.04057, 1.06064, 1.03019, 1.00997, 1.06378, 1.01307, 1.12278, 1.13592, 1.01751, - 1.01853, 1.00837, 1.01252, 1.00623, 1.00206, 1.01316, 1.0027, 1.02534, 1.02805, 1.01381, - 1.01462, 1.00661, 1.00988, 1.00492, 1.00162, 1.01039, 1.00213, 1.02, 1.02214, 1.00037, - 1.00039, 1.00018, 1.00027, 1.00013, 1.00004, 1.00028, 1.00006, 1.00054, 1.0006, 1.00013, - 1.00014, 1.00006, 1.00009, 1.00005, 1.00002, 1.0001, 1.00002, 1.00019, 1.00021}, - std::vector{ - 1, 1.00032, 1.0003, 1.00004, 1.00032, 1.00008, 1.00013, 1.00013, 1.00022, 1.0003, 1.00192, - 1.00071, 1.00119, 1.00101, 1.00052, 1.00121, 1.00208, 1.00104, 1.00098, 1.00213, 1.00353, - 1.00324, 1.00364, 1.00042, 1.00235, 1.00392, 1.00376, 1.00376, 1.00124, 1.00027, 1.00001, - 1.00001, 1.00001, 1, 1, 1, 1, 1.00001, 1, 1, 1.00013, - 1.00014, 1.00006, 1.00009, 1.00005, 1.00002, 1.0001, 1.00002, 1.00019, 1.00021}, - "augru_sequence_attentional_gate_provided"), + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{ + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, + std::vector{0.034518f, 0.673286f, 0.406714f, 0.252863f, 0.403579f, 0.985528f, 0.195026f, 0.102555f, + 0.862911f, 0.698157f, 0.159086f, 0.980120f, 0.821253f, 0.041956f, 0.297002f, 0.154800f, + 0.107107f, 0.457263f, 0.512179f, 0.372368f, 0.672125f, 0.078459f, 0.593353f, 0.800342f, + 0.245871f, 0.675492f, 0.799024f, 0.432696f, 0.095204f, 0.187363f, 0.715765f, 0.981477f, + 0.806237f, 0.544187f, 0.450795f, 0.717673f, 0.426730f, 0.601688f, 0.765923f, 0.675334f, + 0.341641f, 0.958286f, 0.137889f, 0.239074f, 0.015245f, 0.148769f, 0.793591f, 0.210904f, + 0.973056f, 0.646550f}, + std::vector{ + 1, 9.66487, 9.10331, 2.11332, 9.681, 3.05146, 4.44603, 4.37069, 6.81965, 9.12921, 1, + 3.83094, 3.64746, 1.36374, 3.8362, 1.67024, 2.12587, 2.10125, 2.90136, 3.65593, 1, 2.67955, + 2.5707, 1.2158, 2.68268, 1.39764, 1.66796, 1.65336, 2.12805, 2.57572, 1, 2.25486, 2.17353, + 1.16123, 2.25719, 1.29709, 1.49906, 1.48815, 1.84281, 2.17728, 1, 1.74842, 1.69992, 1.09616, + 1.74982, 1.17719, 1.29765, 1.29114, 1.50267, 1.70216, 1, 1.01083, 1.01013, 1.00139, 1.01085, + 1.00256, 1.00431, 1.00421, 1.00727, 1.01016, 1, 1.00872, 1.00815, 1.00112, 1.00874, 1.00206, + 1.00347, 1.00339, 1.00586, 1.00818, 1, 1.00782, 1.00732, 1.00101, 1.00784, 1.00185, 1.00311, + 1.00304, 1.00526, 1.00734, 1, 1.00107, 1.001, 1.00014, 1.00107, 1.00025, 1.00043, 1.00042, + 1.00072, 1.00101, 1, 1.00032, 1.0003, 1.00004, 1.00032, 1.00008, 1.00013, 1.00013, 1.00022, + 1.0003, 7.40507, 3.37092, 4.9699, 4.35616, 2.7375, 5.04457, 7.91707, 4.46023, 4.25963, 8.10753, + 1.12733, 1.04713, 1.07892, 1.06672, 1.03454, 1.08041, 1.13751, 1.06879, 1.0648, 1.1413, 1.02276, + 1.00842, 1.01411, 1.01193, 1.00617, 1.01437, 1.02458, 1.0123, 1.01158, 1.02526, 1.02181, 1.00807, + 1.01352, 1.01143, 1.00592, 1.01377, 1.02355, 1.01178, 1.0111, 1.0242, 1.01533, 1.00567, 1.0095, + 1.00803, 1.00416, 1.00968, 1.01655, 1.00828, 1.0078, 1.01701, 1.01296, 1.0048, 1.00803, 1.00679, + 1.00351, 1.00818, 1.01399, 1.007, 1.00659, 1.01438, 1.01157, 1.00428, 1.00717, 1.00606, 1.00314, + 1.00731, 1.01249, 1.00625, 1.00589, 1.01284, 1.00628, 1.00232, 1.00389, 1.00329, 1.0017, 1.00396, + 1.00678, 1.00339, 1.0032, 1.00697, 1.00306, 1.00113, 1.0019, 1.0016, 1.00083, 1.00193, 1.00331, + 1.00165, 1.00156, 1.0034, 1.00192, 1.00071, 1.00119, 1.00101, 1.00052, 1.00121, 1.00208, 1.00104, + 1.00098, 1.00213, 3.29693, 3.11274, 3.36884, 1.27384, 2.529, 3.55257, 3.44671, 3.44806, 1.80574, + 1.17482, 3.11671, 2.94697, 3.18298, 1.25236, 2.40904, 3.35229, 3.25474, 3.25598, 1.74252, 1.1611, + 1.86076, 1.79173, 1.8877, 1.10262, 1.57298, 1.95655, 1.91688, 1.91739, 1.30194, 1.06551, 1.17186, + 1.15808, 1.17724, 1.02049, 1.1144, 1.19098, 1.18306, 1.18316, 1.06029, 1.01308, 1.1296, 1.11921, + 1.13366, 1.01545, 1.08627, 1.14403, 1.13805, 1.13813, 1.04546, 1.00986, 1.04206, 1.03868, 1.04337, + 1.00501, 1.028, 1.04674, 1.0448, 1.04482, 1.01475, 1.0032, 1.00845, 1.00777, 1.00872, 1.00101, + 1.00563, 1.00939, 1.009, 1.00901, 1.00296, 1.00064, 1.0048, 1.00441, 1.00495, 1.00057, 1.00319, + 1.00533, 1.00511, 1.00511, 1.00168, 1.00037, 1.00434, 1.00399, 1.00447, 1.00052, 1.00289, 1.00482, + 1.00462, 1.00462, 1.00152, 1.00033, 1.00353, 1.00324, 1.00364, 1.00042, 1.00235, 1.00392, 1.00376, + 1.00376, 1.00124, 1.00027, 2.71529, 2.51713, 2.71817, 2.0534, 1.50536, 1.74091, 1.36356, 3.00381, + 2.05532, 1.08741, 1.03177, 1.0281, 1.03183, 1.01951, 1.00936, 1.01372, 1.00673, 1.03712, 1.01955, + 1.00162, 1.00616, 1.00545, 1.00617, 1.00378, 1.00181, 1.00266, 1.0013, 1.00719, 1.00379, 1.00031, + 1.00281, 1.00248, 1.00281, 1.00172, 1.00083, 1.00121, 1.00059, 1.00328, 1.00173, 1.00014, 1.00154, + 1.00136, 1.00154, 1.00095, 1.00045, 1.00067, 1.00033, 1.0018, 1.00095, 1.00008, 1.00044, 1.00038, + 1.00044, 1.00027, 1.00013, 1.00019, 1.00009, 1.00051, 1.00027, 1.00002, 1.00025, 1.00022, 1.00025, + 1.00015, 1.00007, 1.00011, 1.00005, 1.00029, 1.00015, 1.00001, 1.0001, 1.00009, 1.0001, 1.00006, + 1.00003, 1.00004, 1.00002, 1.00012, 1.00006, 1.00001, 1.00002, 1.00002, 1.00002, 1.00001, 1.00001, + 1.00001, 1, 1.00003, 1.00001, 1, 1.00001, 1.00001, 1.00001, 1, 1, 1, + 1, 1.00001, 1, 1, 4.69752, 4.91442, 2.76866, 3.64345, 2.31614, 1.4347, 3.78035, + 1.56984, 6.35268, 6.92523, 1.15424, 1.16329, 1.07378, 1.11027, 1.0549, 1.01813, 1.11598, 1.02377, + 1.22328, 1.24717, 1.13297, 1.14077, 1.0636, 1.09506, 1.04733, 1.01563, 1.09999, 1.02049, 1.19249, + 1.21308, 1.10118, 1.10712, 1.0484, 1.07234, 1.03602, 1.0119, 1.07608, 1.01559, 1.14647, 1.16214, + 1.09964, 1.10548, 1.04766, 1.07123, 1.03547, 1.01171, 1.07492, 1.01536, 1.14424, 1.15967, 1.08482, + 1.08979, 1.04057, 1.06064, 1.03019, 1.00997, 1.06378, 1.01307, 1.12278, 1.13592, 1.01751, 1.01853, + 1.00837, 1.01252, 1.00623, 1.00206, 1.01316, 1.0027, 1.02534, 1.02805, 1.01381, 1.01462, 1.00661, + 1.00988, 1.00492, 1.00162, 1.01039, 1.00213, 1.02, 1.02214, 1.00037, 1.00039, 1.00018, 1.00027, + 1.00013, 1.00004, 1.00028, 1.00006, 1.00054, 1.0006, 1.00013, 1.00014, 1.00006, 1.00009, 1.00005, + 1.00002, 1.0001, 1.00002, 1.00019, 1.00021}, + std::vector{1, 1.00032, 1.0003, 1.00004, 1.00032, 1.00008, 1.00013, 1.00013, 1.00022, 1.0003, + 1.00192, 1.00071, 1.00119, 1.00101, 1.00052, 1.00121, 1.00208, 1.00104, 1.00098, 1.00213, + 1.00353, 1.00324, 1.00364, 1.00042, 1.00235, 1.00392, 1.00376, 1.00376, 1.00124, 1.00027, + 1.00001, 1.00001, 1.00001, 1, 1, 1, 1, 1.00001, 1, 1, + 1.00013, 1.00014, 1.00006, 1.00009, 1.00005, 1.00002, 1.0001, 1.00002, 1.00019, 1.00021}, + "augru_sequence_attentional_gate_provided"), AUGRUSequenceParams( - 3, 4, 5, 6, + 3, + 4, + 5, + 6, ET, std::vector{ - 18.351103f, 13.520717f, 11.687705f, 16.378006f, 15.568568f, 2.611258f, - 8.754645f, 1.173500f, 19.354236f, 18.344900f, 16.889204f, 15.882624f, - 5.627136f, 18.532579f, 3.884619f, 5.119867f, 19.311458f, 13.728893f, - 14.391294f, 14.994748f, 1.131725f, 7.582668f, 14.131282f, 19.547387f, - 17.038887f, 9.964800f, 0.993434f, 11.316858f, 5.330938f, 17.378582f, - 14.467881f, 4.232232f, 1.326875f, 5.338556f, 6.427002f, 7.961141f, - 11.043235f, 13.890585f, 15.062217f, 11.441225f, 14.734964f, 17.898548f, - 3.364136f, 12.155336f, 13.873233f, 5.822778f, 14.347963f, 3.387873f, - 11.021886f, 15.638179f, 15.419064f, 3.743839f, 7.656481f, 9.581622f, - 11.851100f, 4.481464f, 2.963150f, 18.103926f, 1.524719f, 6.200507f, - 10.349086f, 1.085302f, 9.037059f, 8.240071f, 9.869549f, 13.749188f, - 6.019619f, 7.583932f, 9.870675f, 5.238130f, 3.383805f, 6.283896f}, - std::vector{ - 17.012305f, 0.280625f, 4.584126f, 5.899313f, 17.788775f, 19.869320f, - 17.561679f, 1.209108f, 2.772207f, 15.623852f, 0.212452f, 8.111215f, - 5.552669f, 10.256264f, 0.026503f}, + 18.351103f, 13.520717f, 11.687705f, 16.378006f, 15.568568f, 2.611258f, 8.754645f, 1.173500f, + 19.354236f, 18.344900f, 16.889204f, 15.882624f, 5.627136f, 18.532579f, 3.884619f, 5.119867f, + 19.311458f, 13.728893f, 14.391294f, 14.994748f, 1.131725f, 7.582668f, 14.131282f, 19.547387f, + 17.038887f, 9.964800f, 0.993434f, 11.316858f, 5.330938f, 17.378582f, 14.467881f, 4.232232f, + 1.326875f, 5.338556f, 6.427002f, 7.961141f, 11.043235f, 13.890585f, 15.062217f, 11.441225f, + 14.734964f, 17.898548f, 3.364136f, 12.155336f, 13.873233f, 5.822778f, 14.347963f, 3.387873f, + 11.021886f, 15.638179f, 15.419064f, 3.743839f, 7.656481f, 9.581622f, 11.851100f, 4.481464f, + 2.963150f, 18.103926f, 1.524719f, 6.200507f, 10.349086f, 1.085302f, 9.037059f, 8.240071f, + 9.869549f, 13.749188f, 6.019619f, 7.583932f, 9.870675f, 5.238130f, 3.383805f, 6.283896f}, + std::vector{17.012305f, + 0.280625f, + 4.584126f, + 5.899313f, + 17.788775f, + 19.869320f, + 17.561679f, + 1.209108f, + 2.772207f, + 15.623852f, + 0.212452f, + 8.111215f, + 5.552669f, + 10.256264f, + 0.026503f}, std::vector{6, 6, 6}, - std::vector{ - 2.599543f, 1.017497f, 2.188785f, 9.186879f, 19.503938f, 9.249134f, - 1.613915f, 16.139065f, 16.139263f, 6.162586f, 3.584053f, 13.815329f, - 3.166837f, 9.710348f, 13.262320f, 5.637648f, 7.555024f, 4.282188f, - 0.890288f, 9.009603f, 6.672247f, 10.287107f, 3.250285f, 17.159962f, - 12.805244f, 7.266579f, 6.671443f, 4.756829f, 14.331350f, 4.955475f, - 15.988379f, 1.444935f, 8.917654f, 13.265950f, 14.192596f, 6.813692f, - 6.118729f, 9.446750f, 6.676908f, 2.862558f, 7.298118f, 14.044843f, - 4.047191f, 18.313578f, 14.433683f, 10.046828f, 6.272552f, 5.960752f, - 7.687321f, 17.799588f, 17.974497f, 3.092019f, 17.537077f, 5.673742f, - 7.945506f, 16.820461f, 3.382466f, 14.536867f, 10.431873f, 17.666089f}, - std::vector{ - 19.883110f, 3.627721f, 12.381158f, 8.494785f, 0.744855f, 2.083576f, - 3.628426f, 13.435420f, 8.021385f, 16.324589f, 9.171570f, 5.194103f, - 9.534415f, 3.747218f, 14.976561f, 15.450245f, 0.690866f, 14.611735f, - 12.058640f, 12.255162f, 11.922434f, 5.324248f, 16.084200f, 11.910202f, - 8.972001f, 8.331036f, 5.271550f, 3.376512f, 17.947813f, 11.445078f, - 19.813407f, 7.357054f, 18.609516f, 1.641881f, 15.659794f, 12.757155f, - 19.407852f, 15.042537f, 5.609916f, 5.240596f, 16.863105f, 2.939757f, - 7.419171f, 17.463287f, 15.461648f, 3.089222f, 0.349571f, 17.916363f, - 17.127918f, 9.218649f, 16.540375f, 19.735329f, 14.503906f, 2.743288f, - 18.953856f, 7.761779f, 15.795299f, 4.491015f, 16.724311f, 10.091499f, - 8.233435f, 7.727666f, 17.705235f, 10.873172f, 6.631204f, 4.461747f, - 0.832513f, 7.237117f, 12.597311f, 13.430508f, 11.884650f, 3.903417f, - 8.122048f, 14.688200f, 3.733118f}, - std::vector{ - 14.387985f, 12.398350f, 12.775042f, 11.106416f, 18.022651f, 2.087257f, - 17.773750f, 15.364595f, 9.153267f, 14.613577f, 11.195361f, 15.070744f, - 1.611076f, 11.896046f, 10.134009f}, - std::vector - {9.273749f, 12.871767f, 16.940379f, 9.644809f, 8.121616f, 12.174741f, - 11.509982f, 10.122257f, 4.616639f, 13.560133f, 3.175609f, 5.129174f, - 2.827964f, 9.646965f, 9.387886f, 1.972116f, 17.192705f, 6.235506f}, - std::vector{ - -131.482, 6.95193, -28.6542, -39.5357, -137.906, 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, -197.316, - -173.063, -1.19772, -17.6259, -152.696, 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, 2.43961, - -11.999, -7.32212, -15.9201, 2.77952, 1, 94.1084, 72.961, 147.308, 1, 1, - -779.982, -602.601, -1226.21, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1,}, - std::vector{ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - "augru_sequence_different_input_size_and_hidden_size_and_seq_length"), -AUGRUSequenceParams( - 3, 4, 4, 4, + std::vector{2.599543f, 1.017497f, 2.188785f, 9.186879f, 19.503938f, 9.249134f, 1.613915f, + 16.139065f, 16.139263f, 6.162586f, 3.584053f, 13.815329f, 3.166837f, 9.710348f, + 13.262320f, 5.637648f, 7.555024f, 4.282188f, 0.890288f, 9.009603f, 6.672247f, + 10.287107f, 3.250285f, 17.159962f, 12.805244f, 7.266579f, 6.671443f, 4.756829f, + 14.331350f, 4.955475f, 15.988379f, 1.444935f, 8.917654f, 13.265950f, 14.192596f, + 6.813692f, 6.118729f, 9.446750f, 6.676908f, 2.862558f, 7.298118f, 14.044843f, + 4.047191f, 18.313578f, 14.433683f, 10.046828f, 6.272552f, 5.960752f, 7.687321f, + 17.799588f, 17.974497f, 3.092019f, 17.537077f, 5.673742f, 7.945506f, 16.820461f, + 3.382466f, 14.536867f, 10.431873f, 17.666089f}, + std::vector{19.883110f, 3.627721f, 12.381158f, 8.494785f, 0.744855f, 2.083576f, 3.628426f, + 13.435420f, 8.021385f, 16.324589f, 9.171570f, 5.194103f, 9.534415f, 3.747218f, + 14.976561f, 15.450245f, 0.690866f, 14.611735f, 12.058640f, 12.255162f, 11.922434f, + 5.324248f, 16.084200f, 11.910202f, 8.972001f, 8.331036f, 5.271550f, 3.376512f, + 17.947813f, 11.445078f, 19.813407f, 7.357054f, 18.609516f, 1.641881f, 15.659794f, + 12.757155f, 19.407852f, 15.042537f, 5.609916f, 5.240596f, 16.863105f, 2.939757f, + 7.419171f, 17.463287f, 15.461648f, 3.089222f, 0.349571f, 17.916363f, 17.127918f, + 9.218649f, 16.540375f, 19.735329f, 14.503906f, 2.743288f, 18.953856f, 7.761779f, + 15.795299f, 4.491015f, 16.724311f, 10.091499f, 8.233435f, 7.727666f, 17.705235f, + 10.873172f, 6.631204f, 4.461747f, 0.832513f, 7.237117f, 12.597311f, 13.430508f, + 11.884650f, 3.903417f, 8.122048f, 14.688200f, 3.733118f}, + std::vector{14.387985f, + 12.398350f, + 12.775042f, + 11.106416f, + 18.022651f, + 2.087257f, + 17.773750f, + 15.364595f, + 9.153267f, + 14.613577f, + 11.195361f, + 15.070744f, + 1.611076f, + 11.896046f, + 10.134009f}, + std::vector{9.273749f, + 12.871767f, + 16.940379f, + 9.644809f, + 8.121616f, + 12.174741f, + 11.509982f, + 10.122257f, + 4.616639f, + 13.560133f, + 3.175609f, + 5.129174f, + 2.827964f, + 9.646965f, + 9.387886f, + 1.972116f, + 17.192705f, + 6.235506f}, + std::vector{ + -131.482, 6.95193, -28.6542, -39.5357, -137.906, 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, + -197.316, -173.063, -1.19772, -17.6259, -152.696, 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, + 2.43961, -11.999, -7.32212, -15.9201, 2.77952, 1, 94.1084, 72.961, 147.308, 1, + 1, -779.982, -602.601, -1226.21, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }, + std::vector{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + "augru_sequence_different_input_size_and_hidden_size_and_seq_length"), + AUGRUSequenceParams( + 3, + 4, + 4, + 4, ET, - std::vector{ - 6.333189f, 5.312533f, 3.092159f, 6.788004f, 6.543326f, 6.307378f, - 7.487966f, 3.300125f, 5.563141f, 5.551623f, 3.812029f, 0.132248f, - 6.767892f, 7.179934f, 4.832786f, 7.047989f, 7.439896f, 5.970488f, - 4.878981f, 7.562621f, 7.069236f, 6.484528f, 3.208064f, 5.561788f, - 3.716249f, 3.412311f, 2.414488f, 7.465214f, 6.444024f, 6.718469f, - 1.158724f, 0.874442f, 3.319976f, 3.639372f, 5.725887f, 6.594659f, - 2.427224f, 7.611652f, 4.804684f, 3.739928f, 1.892036f, 2.038615f, - 1.297785f, 2.687379f, 7.228432f, 3.015881f, 1.658817f, 6.812868f}, - std::vector{ - 1.905747f, 1.157613f, 7.828747f, 0.730339f, 0.177484f, 6.356011f, - 7.802150f, 0.351901f, 2.614103f, 5.295752f, 1.925256f, 5.925945f}, + std::vector{6.333189f, 5.312533f, 3.092159f, 6.788004f, 6.543326f, 6.307378f, 7.487966f, 3.300125f, + 5.563141f, 5.551623f, 3.812029f, 0.132248f, 6.767892f, 7.179934f, 4.832786f, 7.047989f, + 7.439896f, 5.970488f, 4.878981f, 7.562621f, 7.069236f, 6.484528f, 3.208064f, 5.561788f, + 3.716249f, 3.412311f, 2.414488f, 7.465214f, 6.444024f, 6.718469f, 1.158724f, 0.874442f, + 3.319976f, 3.639372f, 5.725887f, 6.594659f, 2.427224f, 7.611652f, 4.804684f, 3.739928f, + 1.892036f, 2.038615f, 1.297785f, 2.687379f, 7.228432f, 3.015881f, 1.658817f, 6.812868f}, + std::vector{1.905747f, + 1.157613f, + 7.828747f, + 0.730339f, + 0.177484f, + 6.356011f, + 7.802150f, + 0.351901f, + 2.614103f, + 5.295752f, + 1.925256f, + 5.925945f}, std::vector{2, 4, 6}, - std::vector{ - 4.092708f, 3.566296f, 1.985790f, 6.146150f, 6.427968f, 7.096002f, - 7.786629f, 1.156184f, 2.091389f, 3.677408f, 0.800674f, 2.707813f, - 5.396107f, 5.135335f, 3.197786f, 2.983154f, 3.029478f, 1.616802f, - 2.162019f, 6.922834f, 5.473023f, 4.648859f, 7.976208f, 0.100666f, - 1.022222f, 6.531802f, 4.358081f, 2.619875f, 2.189079f, 4.086223f, - 7.818407f, 1.802662f, 7.781939f, 7.542665f, 0.512391f, 6.402292f, - 6.450581f, 5.147434f, 5.103659f, 0.894397f, 3.192224f, 3.798631f, - 4.647818f, 3.119819f, 6.469874f, 1.386456f, 2.030223f, 6.888086f}, - std::vector{ - 5.094750f, 0.455363f, 4.989539f, 0.998320f, 6.369301f, 6.971411f, - 1.183518f, 1.386444f, 7.572741f, 4.089349f, 0.116142f, 3.784642f, - 7.925501f, 6.721643f, 3.293674f, 5.754296f, 0.642623f, 2.969238f, - 3.536983f, 6.635469f, 1.634170f, 0.507635f, 0.205818f, 0.014995f, - 4.528792f, 7.128315f, 2.403315f, 7.728932f, 4.206394f, 6.285463f, - 5.314773f, 6.473219f, 2.506818f, 0.430820f, 3.337787f, 3.828441f, - 2.620897f, 5.545934f, 2.593279f, 3.601373f, 2.595556f, 0.687849f, - 5.277596f, 4.074282f, 1.844880f, 1.232070f, 4.970289f, 5.472321f}, - std::vector{ - 5.516398f, 5.621736f, 4.341954f, 6.820305f, 4.760572f, 7.643595f, - 1.733547f, 3.100034f, 7.009072f, 3.027971f, 5.044797f, 0.534897f}, - std::vector - {5.472119f, 1.116471f, 4.916850f, 1.217513f, 5.672895f, 4.827186f, - 2.210116f, 3.160670f, 4.265747f, 3.949529f, 4.224079f, 3.049556f}, - std::vector{ - -3.05061, 0.295136, -29.539, 2.20596, 1, 1.0821, 2.32396, -1.30623, 0, 0, 0, - 0, 0, 0, 0, 0, 4.84353, -24.0281, -30.7857, 4.0285, 1, - -1, 122.647, 1, 1, 3.42023, -146.207, 1, 1, 1, 319.066, - 1, -4.27125, -13.0288, -2.02165, -15.0869, 16.5477, 1, 1, 1, -49.1271, - 1, 1, 1, 0.999999, -1, -1, 1}, - std::vector{ - 1, 1.0821, 2.32396, -1.30623, 1, 1, 319.066, 1, 0, 0, 0, 0}, - "augru_sequence_different_sequence_len_in_each_batch"), + std::vector{4.092708f, 3.566296f, 1.985790f, 6.146150f, 6.427968f, 7.096002f, 7.786629f, 1.156184f, + 2.091389f, 3.677408f, 0.800674f, 2.707813f, 5.396107f, 5.135335f, 3.197786f, 2.983154f, + 3.029478f, 1.616802f, 2.162019f, 6.922834f, 5.473023f, 4.648859f, 7.976208f, 0.100666f, + 1.022222f, 6.531802f, 4.358081f, 2.619875f, 2.189079f, 4.086223f, 7.818407f, 1.802662f, + 7.781939f, 7.542665f, 0.512391f, 6.402292f, 6.450581f, 5.147434f, 5.103659f, 0.894397f, + 3.192224f, 3.798631f, 4.647818f, 3.119819f, 6.469874f, 1.386456f, 2.030223f, 6.888086f}, + std::vector{5.094750f, 0.455363f, 4.989539f, 0.998320f, 6.369301f, 6.971411f, 1.183518f, 1.386444f, + 7.572741f, 4.089349f, 0.116142f, 3.784642f, 7.925501f, 6.721643f, 3.293674f, 5.754296f, + 0.642623f, 2.969238f, 3.536983f, 6.635469f, 1.634170f, 0.507635f, 0.205818f, 0.014995f, + 4.528792f, 7.128315f, 2.403315f, 7.728932f, 4.206394f, 6.285463f, 5.314773f, 6.473219f, + 2.506818f, 0.430820f, 3.337787f, 3.828441f, 2.620897f, 5.545934f, 2.593279f, 3.601373f, + 2.595556f, 0.687849f, 5.277596f, 4.074282f, 1.844880f, 1.232070f, 4.970289f, 5.472321f}, + std::vector{5.516398f, + 5.621736f, + 4.341954f, + 6.820305f, + 4.760572f, + 7.643595f, + 1.733547f, + 3.100034f, + 7.009072f, + 3.027971f, + 5.044797f, + 0.534897f}, + std::vector{5.472119f, + 1.116471f, + 4.916850f, + 1.217513f, + 5.672895f, + 4.827186f, + 2.210116f, + 3.160670f, + 4.265747f, + 3.949529f, + 4.224079f, + 3.049556f}, + std::vector{-3.05061, 0.295136, -29.539, 2.20596, 1, 1.0821, 2.32396, -1.30623, + 0, 0, 0, 0, 0, 0, 0, 0, + 4.84353, -24.0281, -30.7857, 4.0285, 1, -1, 122.647, 1, + 1, 3.42023, -146.207, 1, 1, 1, 319.066, 1, + -4.27125, -13.0288, -2.02165, -15.0869, 16.5477, 1, 1, 1, + -49.1271, 1, 1, 1, 0.999999, -1, -1, 1}, + std::vector{1, 1.0821, 2.32396, -1.30623, 1, 1, 319.066, 1, 0, 0, 0, 0}, + "augru_sequence_different_sequence_len_in_each_batch"), }; return params; } @@ -635,80 +672,106 @@ AUGRUSequenceParams( template std::vector generateParamsBF16() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ AUGRUSequenceParams( - 3, 4, 5, 6, + 3, + 4, + 5, + 6, ET, std::vector{ - 18.351103f, 13.520717f, 11.687705f, 16.378006f, 15.568568f, 2.611258f, - 8.754645f, 1.173500f, 19.354236f, 18.344900f, 16.889204f, 15.882624f, - 5.627136f, 18.532579f, 3.884619f, 5.119867f, 19.311458f, 13.728893f, - 14.391294f, 14.994748f, 1.131725f, 7.582668f, 14.131282f, 19.547387f, - 17.038887f, 9.964800f, 0.993434f, 11.316858f, 5.330938f, 17.378582f, - 14.467881f, 4.232232f, 1.326875f, 5.338556f, 6.427002f, 7.961141f, - 11.043235f, 13.890585f, 15.062217f, 11.441225f, 14.734964f, 17.898548f, - 3.364136f, 12.155336f, 13.873233f, 5.822778f, 14.347963f, 3.387873f, - 11.021886f, 15.638179f, 15.419064f, 3.743839f, 7.656481f, 9.581622f, - 11.851100f, 4.481464f, 2.963150f, 18.103926f, 1.524719f, 6.200507f, - 10.349086f, 1.085302f, 9.037059f, 8.240071f, 9.869549f, 13.749188f, - 6.019619f, 7.583932f, 9.870675f, 5.238130f, 3.383805f, 6.283896f}, - std::vector{ - 17.012305f, 0.280625f, 4.584126f, 5.899313f, 17.788775f, 19.869320f, - 17.561679f, 1.209108f, 2.772207f, 15.623852f, 0.212452f, 8.111215f, - 5.552669f, 10.256264f, 0.026503f}, + 18.351103f, 13.520717f, 11.687705f, 16.378006f, 15.568568f, 2.611258f, 8.754645f, 1.173500f, + 19.354236f, 18.344900f, 16.889204f, 15.882624f, 5.627136f, 18.532579f, 3.884619f, 5.119867f, + 19.311458f, 13.728893f, 14.391294f, 14.994748f, 1.131725f, 7.582668f, 14.131282f, 19.547387f, + 17.038887f, 9.964800f, 0.993434f, 11.316858f, 5.330938f, 17.378582f, 14.467881f, 4.232232f, + 1.326875f, 5.338556f, 6.427002f, 7.961141f, 11.043235f, 13.890585f, 15.062217f, 11.441225f, + 14.734964f, 17.898548f, 3.364136f, 12.155336f, 13.873233f, 5.822778f, 14.347963f, 3.387873f, + 11.021886f, 15.638179f, 15.419064f, 3.743839f, 7.656481f, 9.581622f, 11.851100f, 4.481464f, + 2.963150f, 18.103926f, 1.524719f, 6.200507f, 10.349086f, 1.085302f, 9.037059f, 8.240071f, + 9.869549f, 13.749188f, 6.019619f, 7.583932f, 9.870675f, 5.238130f, 3.383805f, 6.283896f}, + std::vector{17.012305f, + 0.280625f, + 4.584126f, + 5.899313f, + 17.788775f, + 19.869320f, + 17.561679f, + 1.209108f, + 2.772207f, + 15.623852f, + 0.212452f, + 8.111215f, + 5.552669f, + 10.256264f, + 0.026503f}, std::vector{6, 6, 6}, - std::vector{ - 2.599543f, 1.017497f, 2.188785f, 9.186879f, 19.503938f, 9.249134f, - 1.613915f, 16.139065f, 16.139263f, 6.162586f, 3.584053f, 13.815329f, - 3.166837f, 9.710348f, 13.262320f, 5.637648f, 7.555024f, 4.282188f, - 0.890288f, 9.009603f, 6.672247f, 10.287107f, 3.250285f, 17.159962f, - 12.805244f, 7.266579f, 6.671443f, 4.756829f, 14.331350f, 4.955475f, - 15.988379f, 1.444935f, 8.917654f, 13.265950f, 14.192596f, 6.813692f, - 6.118729f, 9.446750f, 6.676908f, 2.862558f, 7.298118f, 14.044843f, - 4.047191f, 18.313578f, 14.433683f, 10.046828f, 6.272552f, 5.960752f, - 7.687321f, 17.799588f, 17.974497f, 3.092019f, 17.537077f, 5.673742f, - 7.945506f, 16.820461f, 3.382466f, 14.536867f, 10.431873f, 17.666089f}, - std::vector{ - 19.883110f, 3.627721f, 12.381158f, 8.494785f, 0.744855f, 2.083576f, - 3.628426f, 13.435420f, 8.021385f, 16.324589f, 9.171570f, 5.194103f, - 9.534415f, 3.747218f, 14.976561f, 15.450245f, 0.690866f, 14.611735f, - 12.058640f, 12.255162f, 11.922434f, 5.324248f, 16.084200f, 11.910202f, - 8.972001f, 8.331036f, 5.271550f, 3.376512f, 17.947813f, 11.445078f, - 19.813407f, 7.357054f, 18.609516f, 1.641881f, 15.659794f, 12.757155f, - 19.407852f, 15.042537f, 5.609916f, 5.240596f, 16.863105f, 2.939757f, - 7.419171f, 17.463287f, 15.461648f, 3.089222f, 0.349571f, 17.916363f, - 17.127918f, 9.218649f, 16.540375f, 19.735329f, 14.503906f, 2.743288f, - 18.953856f, 7.761779f, 15.795299f, 4.491015f, 16.724311f, 10.091499f, - 8.233435f, 7.727666f, 17.705235f, 10.873172f, 6.631204f, 4.461747f, - 0.832513f, 7.237117f, 12.597311f, 13.430508f, 11.884650f, 3.903417f, - 8.122048f, 14.688200f, 3.733118f}, - std::vector{ - 14.387985f, 12.398350f, 12.775042f, 11.106416f, 18.022651f, 2.087257f, - 17.773750f, 15.364595f, 9.153267f, 14.613577f, 11.195361f, 15.070744f, - 1.611076f, 11.896046f, 10.134009f}, - std::vector - {9.273749f, 12.871767f, 16.940379f, 9.644809f, 8.121616f, 12.174741f, - 11.509982f, 10.122257f, 4.616639f, 13.560133f, 3.175609f, 5.129174f, - 2.827964f, 9.646965f, 9.387886f, 1.972116f, 17.192705f, 6.235506f}, - std::vector{ - -130, 6.9375, -28.25, -39.25, -136, 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, -196, - -172, -1.125, -17.5, -152, 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, 2.42188, - -11.9375, -7.25, -15.6875, 2.75, 1, 93, 72, 144, 1, 1, - -768, -592, -1184, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1}, - std::vector{ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - "augru_sequence_bfloat16"), + std::vector{2.599543f, 1.017497f, 2.188785f, 9.186879f, 19.503938f, 9.249134f, 1.613915f, + 16.139065f, 16.139263f, 6.162586f, 3.584053f, 13.815329f, 3.166837f, 9.710348f, + 13.262320f, 5.637648f, 7.555024f, 4.282188f, 0.890288f, 9.009603f, 6.672247f, + 10.287107f, 3.250285f, 17.159962f, 12.805244f, 7.266579f, 6.671443f, 4.756829f, + 14.331350f, 4.955475f, 15.988379f, 1.444935f, 8.917654f, 13.265950f, 14.192596f, + 6.813692f, 6.118729f, 9.446750f, 6.676908f, 2.862558f, 7.298118f, 14.044843f, + 4.047191f, 18.313578f, 14.433683f, 10.046828f, 6.272552f, 5.960752f, 7.687321f, + 17.799588f, 17.974497f, 3.092019f, 17.537077f, 5.673742f, 7.945506f, 16.820461f, + 3.382466f, 14.536867f, 10.431873f, 17.666089f}, + std::vector{19.883110f, 3.627721f, 12.381158f, 8.494785f, 0.744855f, 2.083576f, 3.628426f, + 13.435420f, 8.021385f, 16.324589f, 9.171570f, 5.194103f, 9.534415f, 3.747218f, + 14.976561f, 15.450245f, 0.690866f, 14.611735f, 12.058640f, 12.255162f, 11.922434f, + 5.324248f, 16.084200f, 11.910202f, 8.972001f, 8.331036f, 5.271550f, 3.376512f, + 17.947813f, 11.445078f, 19.813407f, 7.357054f, 18.609516f, 1.641881f, 15.659794f, + 12.757155f, 19.407852f, 15.042537f, 5.609916f, 5.240596f, 16.863105f, 2.939757f, + 7.419171f, 17.463287f, 15.461648f, 3.089222f, 0.349571f, 17.916363f, 17.127918f, + 9.218649f, 16.540375f, 19.735329f, 14.503906f, 2.743288f, 18.953856f, 7.761779f, + 15.795299f, 4.491015f, 16.724311f, 10.091499f, 8.233435f, 7.727666f, 17.705235f, + 10.873172f, 6.631204f, 4.461747f, 0.832513f, 7.237117f, 12.597311f, 13.430508f, + 11.884650f, 3.903417f, 8.122048f, 14.688200f, 3.733118f}, + std::vector{14.387985f, + 12.398350f, + 12.775042f, + 11.106416f, + 18.022651f, + 2.087257f, + 17.773750f, + 15.364595f, + 9.153267f, + 14.613577f, + 11.195361f, + 15.070744f, + 1.611076f, + 11.896046f, + 10.134009f}, + std::vector{9.273749f, + 12.871767f, + 16.940379f, + 9.644809f, + 8.121616f, + 12.174741f, + 11.509982f, + 10.122257f, + 4.616639f, + 13.560133f, + 3.175609f, + 5.129174f, + 2.827964f, + 9.646965f, + 9.387886f, + 1.972116f, + 17.192705f, + 6.235506f}, + std::vector{-130, 6.9375, -28.25, -39.25, -136, 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, + -196, -172, -1.125, -17.5, -152, 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, + 2.42188, -11.9375, -7.25, -15.6875, 2.75, 1, 93, 72, 144, 1, 1, -768, -592, -1184, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + std::vector{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + "augru_sequence_bfloat16"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -722,7 +785,9 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_AUGRUSequence_With_Hardcoded_Refs, ReferenceAUGRUSequenceTest, - testing::ValuesIn(generateCombinedParams()), ReferenceAUGRUSequenceTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_AUGRUSequence_With_Hardcoded_Refs, + ReferenceAUGRUSequenceTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceAUGRUSequenceTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/avg_pool.cpp b/src/plugins/template/tests/functional/op_reference/avg_pool.cpp index ba97db25396a97..7bf582184f317f 100644 --- a/src/plugins/template/tests/functional/op_reference/avg_pool.cpp +++ b/src/plugins/template/tests/functional/op_reference/avg_pool.cpp @@ -2,10 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/avg_pool.hpp" + #include #include "base_reference_test.hpp" -#include "openvino/op/avg_pool.hpp" using namespace ov; using namespace reference_tests; @@ -15,18 +16,18 @@ namespace { struct AvgPoolParams { template AvgPoolParams(const Shape& input_shape, - const Shape& output_shape, - const element::Type& input_type, - const element::Type& ouput_type, - const std::vector& input_values, - const std::vector& output_values, - const Strides& strides, - const Shape& pads_begin, - const Shape& pads_end, - const Shape& kernel, - const bool exclude_pad, - const op::RoundingType& rounding_type, - const op::PadType& pad_type) + const Shape& output_shape, + const element::Type& input_type, + const element::Type& ouput_type, + const std::vector& input_values, + const std::vector& output_values, + const Strides& strides, + const Shape& pads_begin, + const Shape& pads_end, + const Shape& kernel, + const bool exclude_pad, + const op::RoundingType& rounding_type, + const op::PadType& pad_type) : m_input_shape(input_shape), m_output_shape(output_shape), m_input_type(input_type), @@ -88,14 +89,14 @@ class ReferenceAvgPoolLayerTest : public testing::TestWithParam, private: static std::shared_ptr CreateFunction(const Shape& input_shape, - const element::Type& input_type, - const Strides& strides, - const Shape& pads_begin, - const Shape& pads_end, - const Shape& kernel, - const bool exclude_pad, - const op::RoundingType rounding_type, - const op::PadType pad_type) { + const element::Type& input_type, + const Strides& strides, + const Shape& pads_begin, + const Shape& pads_end, + const Shape& kernel, + const bool exclude_pad, + const op::RoundingType rounding_type, + const op::PadType pad_type) { const auto in = std::make_shared(input_type, input_shape); const auto avgPool = std::make_shared(in, strides, @@ -113,8 +114,8 @@ TEST_P(ReferenceAvgPoolLayerTest, AvgPoolWithHardcodedRefs) { Exec(); } -template -std::vector getContinuousIncreasingValue(size_t elementSize, float step) { +template +std::vector getContinuousIncreasingValue(size_t elementSize, float step) { std::vector a(elementSize); std::iota(std::begin(a), std::end(a), step); return a; @@ -247,11 +248,9 @@ std::vector generateParamsForAvgPool() { } std::vector generateCombinedParamsForAvgPool() { - const std::vector> allTypeParams{ - generateParamsForAvgPool(), - generateParamsForAvgPool(), - generateParamsForAvgPool() - }; + const std::vector> allTypeParams{generateParamsForAvgPool(), + generateParamsForAvgPool(), + generateParamsForAvgPool()}; std::vector combinedParams; @@ -262,10 +261,9 @@ std::vector generateCombinedParamsForAvgPool() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_AvgPool_With_Hardcoded_Refs, - ReferenceAvgPoolLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAvgPool()), - ReferenceAvgPoolLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_AvgPool_With_Hardcoded_Refs, + ReferenceAvgPoolLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAvgPool()), + ReferenceAvgPoolLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/base_reference_test.cpp b/src/plugins/template/tests/functional/op_reference/base_reference_test.cpp index d454e072f9ff94..d5f5a3a4f19b96 100644 --- a/src/plugins/template/tests/functional/op_reference/base_reference_test.cpp +++ b/src/plugins/template/tests/functional/op_reference/base_reference_test.cpp @@ -2,21 +2,21 @@ // SPDX-License-Identifier: Apache-2.0 // #include "base_reference_test.hpp" -#include "functional_test_utils/ov_plugin_cache.hpp" -#include "shared_test_classes/base/layer_test_utils.hpp" #include +#include "functional_test_utils/ov_plugin_cache.hpp" #include "openvino/core/type/element_type.hpp" #include "openvino/runtime/allocator.hpp" #include "openvino/runtime/tensor.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" #include "transformations/utils/utils.hpp" using namespace ov; namespace reference_tests { -CommonReferenceTest::CommonReferenceTest(): targetDevice("TEMPLATE") { +CommonReferenceTest::CommonReferenceTest() : targetDevice("TEMPLATE") { core = test::utils::PluginCache::get().core(targetDevice); } @@ -75,8 +75,12 @@ void CommonReferenceTest::Validate() { } } -void CommonReferenceTest::ValidateBlobs(const ov::Tensor& refBlob, const ov::Tensor& outBlob, const size_t blob_idx, - float threshold, float abs_threshold, size_t actual_comparision_size) { +void CommonReferenceTest::ValidateBlobs(const ov::Tensor& refBlob, + const ov::Tensor& outBlob, + const size_t blob_idx, + float threshold, + float abs_threshold, + size_t actual_comparision_size) { ASSERT_EQ(refBlob.get_element_type(), outBlob.get_element_type()) << "Incompatible element type for blob with index " << blob_idx; ASSERT_EQ(refBlob.get_byte_size(), outBlob.get_byte_size()) @@ -88,80 +92,110 @@ void CommonReferenceTest::ValidateBlobs(const ov::Tensor& refBlob, const ov::Ten const auto& element_type = refBlob.get_element_type(); switch (element_type) { case ov::element::bf16: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::f16: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::f32: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::f64: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::i8: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::i16: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::i32: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::i64: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::boolean: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::u8: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::u16: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::u32: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::u64: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::i4: case ov::element::u4: - LayerTestsUtils::LayerTestsCommon::Compare( - static_cast(refBlob.data()), static_cast(outBlob.data()), - actual_comparision_size / 2, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(static_cast(refBlob.data()), + static_cast(outBlob.data()), + actual_comparision_size / 2, + threshold, + abs_threshold); break; case ov::element::u1: - LayerTestsUtils::LayerTestsCommon::Compare( - static_cast(refBlob.data()), static_cast(outBlob.data()), - actual_comparision_size / 8, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(static_cast(refBlob.data()), + static_cast(outBlob.data()), + actual_comparision_size / 8, + threshold, + abs_threshold); break; default: FAIL() << "Comparator for " << element_type << " element type isn't supported"; diff --git a/src/plugins/template/tests/functional/op_reference/base_reference_test.hpp b/src/plugins/template/tests/functional/op_reference/base_reference_test.hpp index 75fea35cb4edc6..2add89bdbdaf78 100644 --- a/src/plugins/template/tests/functional/op_reference/base_reference_test.hpp +++ b/src/plugins/template/tests/functional/op_reference/base_reference_test.hpp @@ -55,9 +55,7 @@ ov::Tensor CreateTensor(const ov::element::Type& element_type, const std::vector // Create blob with correct input shape (not 1-dimensional). Will be used in tests with dynamic input shapes template -ov::Tensor CreateTensor(const ov::Shape& shape, - const ov::element::Type& element_type, - const std::vector& values) { +ov::Tensor CreateTensor(const ov::Shape& shape, const ov::element::Type& element_type, const std::vector& values) { ov::Tensor tensor{element_type, shape}; size_t size = sizeof(T) * values.size(); if (tensor.get_byte_size() < size) diff --git a/src/plugins/template/tests/functional/op_reference/batch_norm.cpp b/src/plugins/template/tests/functional/op_reference/batch_norm.cpp index 8e6d2873d5ed74..e5ac24c8df78b9 100644 --- a/src/plugins/template/tests/functional/op_reference/batch_norm.cpp +++ b/src/plugins/template/tests/functional/op_reference/batch_norm.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/batch_norm.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/batch_norm.hpp" using namespace reference_tests; using namespace ov; @@ -78,8 +79,8 @@ class ReferenceBatchNormV0LayerTest : public testing::TestWithParam CreateFunction(const Shape& input_shape, - const element::Type_t& input_type, - const float epsilon) { + const element::Type_t& input_type, + const float epsilon) { Shape channel_shape{input_shape.at(1)}; auto in = std::make_shared(input_type, input_shape); auto gamma = std::make_shared(input_type, channel_shape); @@ -103,8 +104,8 @@ class ReferenceBatchNormV5LayerTest : public ReferenceBatchNormV0LayerTest { private: static std::shared_ptr CreateFunction(const Shape& input_shape, - const element::Type_t& input_type, - const float epsilon) { + const element::Type_t& input_type, + const float epsilon) { Shape channel_shape{input_shape.at(1)}; auto in = std::make_shared(input_type, input_shape); auto gamma = std::make_shared(input_type, channel_shape); @@ -130,7 +131,7 @@ std::vector generateParamsForBatchNorm() { using T = typename element_type_traits::value_type; std::vector params{ - /*------------- 2d --------------*/ + /*------------- 2d --------------*/ BatchNormParams(Shape{2, 3}, Shape{2, 3}, ET, @@ -175,7 +176,7 @@ std::vector generateParamsForBatchNorm() { std::vector{0.0, 0.0, 0.0}, std::vector{2.0, 6.0, 0.0}, 0.25), - /*------------- 4d --------------*/ + /*------------- 4d --------------*/ BatchNormParams(Shape{2, 2, 2, 1}, Shape{2, 2, 2, 1}, ET, @@ -201,41 +202,33 @@ std::vector generateParamsForBatchNorm() { std::vector{1.0, 1.0}, std::vector{1.0, 1.0}, 0.001), - BatchNormParams(Shape{2, 2, 2, 1}, - Shape{2, 2, 2, 1}, - ET, - ET, - std::vector{0.54881352f, - 0.71518934f, - 0.60276335f, - 0.54488319f, - 0.42365479f, - 0.64589411f, - 0.4375872f, - 0.89177299f}, - std::vector{-0.30327f, - 1.1561f, - -0.096382f, - -0.434702f, - -1.4011f, - 0.548275f, - -1.06187f, - 1.59295f}, - std::vector{1.0, 1.0}, - std::vector{0.0f, 0.0f}, - std::vector{0.583388f, 0.619252f}, - std::vector{0.0119972f, 0.0282681f}, - 0.001), + BatchNormParams( + Shape{2, 2, 2, 1}, + Shape{2, 2, 2, 1}, + ET, + ET, + std::vector{0.54881352f, + 0.71518934f, + 0.60276335f, + 0.54488319f, + 0.42365479f, + 0.64589411f, + 0.4375872f, + 0.89177299f}, + std::vector{-0.30327f, 1.1561f, -0.096382f, -0.434702f, -1.4011f, 0.548275f, -1.06187f, 1.59295f}, + std::vector{1.0, 1.0}, + std::vector{0.0f, 0.0f}, + std::vector{0.583388f, 0.619252f}, + std::vector{0.0119972f, 0.0282681f}, + 0.001), }; return params; } std::vector generateCombinedParamsForBatchNorm() { - const std::vector> allTypeParams{ - generateParamsForBatchNorm(), - generateParamsForBatchNorm() - }; + const std::vector> allTypeParams{generateParamsForBatchNorm(), + generateParamsForBatchNorm()}; std::vector combinedParams; @@ -246,16 +239,14 @@ std::vector generateCombinedParamsForBatchNorm() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_BatchNorm_With_Hardcoded_Refs, - ReferenceBatchNormV0LayerTest, - ::testing::ValuesIn(generateCombinedParamsForBatchNorm()), - ReferenceBatchNormV0LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BatchNorm_With_Hardcoded_Refs, + ReferenceBatchNormV0LayerTest, + ::testing::ValuesIn(generateCombinedParamsForBatchNorm()), + ReferenceBatchNormV0LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_BatchNorm_With_Hardcoded_Refs, - ReferenceBatchNormV5LayerTest, - ::testing::ValuesIn(generateCombinedParamsForBatchNorm()), - ReferenceBatchNormV5LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BatchNorm_With_Hardcoded_Refs, + ReferenceBatchNormV5LayerTest, + ::testing::ValuesIn(generateCombinedParamsForBatchNorm()), + ReferenceBatchNormV5LayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/batch_to_space.cpp b/src/plugins/template/tests/functional/op_reference/batch_to_space.cpp index 7c8da263b078fd..10583280efd619 100644 --- a/src/plugins/template/tests/functional/op_reference/batch_to_space.cpp +++ b/src/plugins/template/tests/functional/op_reference/batch_to_space.cpp @@ -4,21 +4,27 @@ #include +#include "base_reference_test.hpp" #include "openvino/opsets/opset1.hpp" #include "openvino/opsets/opset2.hpp" -#include "base_reference_test.hpp" using namespace reference_tests; using namespace ov; namespace { struct BatchToSpaceParams { - BatchToSpaceParams(const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& blockShapeTensor, - const reference_tests::Tensor& cropsBeginTensor, const reference_tests::Tensor& cropsEndTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), blockShapeTensor(blockShapeTensor), - cropsBeginTensor(cropsBeginTensor), cropsEndTensor(cropsEndTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + BatchToSpaceParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& blockShapeTensor, + const reference_tests::Tensor& cropsBeginTensor, + const reference_tests::Tensor& cropsEndTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + blockShapeTensor(blockShapeTensor), + cropsBeginTensor(cropsBeginTensor), + cropsEndTensor(cropsEndTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor blockShapeTensor; @@ -80,7 +86,7 @@ TEST_P(ReferenceBatchToSpaceLayerTest, CompareWithRefs) { template std::vector generateBatchToSpaceParams() { using T = typename element_type_traits::value_type; - std::vector batchToSpaceParams { + std::vector batchToSpaceParams{ // input_with_shape_4x3 BatchToSpaceParams( reference_tests::Tensor({4, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), @@ -126,89 +132,78 @@ std::vector generateBatchToSpaceParams() { // input_with_shape_4x1x2x3 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 1, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({2, 1, 2, 6}, IN_ET, std::vector{1, 13, 2, 14, 3, 15, - 4, 16, 5, 17, 6, 18, - 7, 19, 8, 20, 9, 21, - 10, 22, 11, 23, 12, 24}), + reference_tests::Tensor({2, 1, 2, 6}, IN_ET, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, + 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), "input_with_shape_4x1x2x3"), // input_with_shape_4x1x2x3_1 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 2, 1}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({2, 1, 4, 3}, IN_ET, std::vector{1, 2, 3, 13, 14, 15, - 4, 5, 6, 16, 17, 18, - 7, 8, 9, 19, 20, 21, - 10, 11, 12, 22, 23, 24}), + reference_tests::Tensor({2, 1, 4, 3}, IN_ET, std::vector{1, 2, 3, 13, 14, 15, 4, 5, 6, 16, 17, 18, + 7, 8, 9, 19, 20, 21, 10, 11, 12, 22, 23, 24}), "input_with_shape_4x1x2x3_1"), // input_with_shape_4x1x2x3_2 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 2, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({1, 1, 4, 6}, IN_ET, std::vector{1, 7, 2, 8, 3, 9, - 13, 19, 14, 20, 15, 21, - 4, 10, 5, 11, 6, 12, - 16, 22, 17, 23, 18, 24}), + reference_tests::Tensor({1, 1, 4, 6}, IN_ET, std::vector{1, 7, 2, 8, 3, 9, 13, 19, 14, 20, 15, 21, + 4, 10, 5, 11, 6, 12, 16, 22, 17, 23, 18, 24}), "input_with_shape_4x1x2x3_2"), // input_with_shape_with_crop_4x1x2x3 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 2, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 2}), - reference_tests::Tensor({1, 1, 4, 4}, IN_ET, std::vector{1, 7, 2, 8, 13, 19, 14, 20, - 4, 10, 5, 11, 16, 22, 17, 23}), + reference_tests::Tensor({1, 1, 4, 4}, + IN_ET, + std::vector{1, 7, 2, 8, 13, 19, 14, 20, 4, 10, 5, 11, 16, 22, 17, 23}), "input_with_shape_with_crop_4x1x2x3"), // input_with_shape_with_crop_4x1x2x3_1 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 2, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({1, 1, 4, 4}, IN_ET, std::vector{2, 8, 3, 9, 14, 20, 15, 21, - 5, 11, 6, 12, 17, 23, 18, 24}), + reference_tests::Tensor({1, 1, 4, 4}, + IN_ET, + std::vector{2, 8, 3, 9, 14, 20, 15, 21, 5, 11, 6, 12, 17, 23, 18, 24}), "input_with_shape_with_crop_4x1x2x3_1"), // input_with_shape_with_crop_4x1x2x3_2 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 2, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 1, 0}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 1, 0}), - reference_tests::Tensor({1, 1, 2, 6}, IN_ET, std::vector{13, 19, 14, 20, 15, 21, - 4, 10, 5, 11, 6, 12}), + reference_tests::Tensor({1, 1, 2, 6}, IN_ET, std::vector{13, 19, 14, 20, 15, 21, 4, 10, 5, 11, 6, 12}), "input_with_shape_with_crop_4x1x2x3_2"), }; return batchToSpaceParams; } std::vector generateBatchToSpaceCombinedParams() { - const std::vector> batchToSpaceTypeParams { + const std::vector> batchToSpaceTypeParams{ generateBatchToSpaceParams(), generateBatchToSpaceParams(), generateBatchToSpaceParams(), @@ -230,6 +225,8 @@ std::vector generateBatchToSpaceCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_BatchToSpace_With_Hardcoded_Refs, ReferenceBatchToSpaceLayerTest, - testing::ValuesIn(generateBatchToSpaceCombinedParams()), ReferenceBatchToSpaceLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_BatchToSpace_With_Hardcoded_Refs, + ReferenceBatchToSpaceLayerTest, + testing::ValuesIn(generateBatchToSpaceCombinedParams()), + ReferenceBatchToSpaceLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/binary_convolution.cpp b/src/plugins/template/tests/functional/op_reference/binary_convolution.cpp index 0516be4126708c..1917163d832f4e 100644 --- a/src/plugins/template/tests/functional/op_reference/binary_convolution.cpp +++ b/src/plugins/template/tests/functional/op_reference/binary_convolution.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/binary_convolution.hpp" + #include -#include "openvino/op/binary_convolution.hpp" #include "base_reference_test.hpp" #include "openvino/opsets/opset8.hpp" @@ -53,12 +54,14 @@ struct BinaryConvolutionParams { ov::CoordinateDiff padBegin; ov::CoordinateDiff padEnd; ov::Strides dialations; - ov::op::v1::BinaryConvolution::BinaryConvolutionMode mode = ov::op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT; + ov::op::v1::BinaryConvolution::BinaryConvolutionMode mode = + ov::op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT; float padValue; std::string testcaseName; }; -class ReferenceBinaryConvolutionLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceBinaryConvolutionLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -88,20 +91,21 @@ class ReferenceBinaryConvolutionLayerTest : public testing::TestWithParam CreateFunction(const BinaryConvolutionParams& params, const std::vector& filterData) { + static std::shared_ptr CreateFunction(const BinaryConvolutionParams& params, + const std::vector& filterData) { const op::PadType auto_pad{op::PadType::EXPLICIT}; const auto in = std::make_shared(params.inType, params.inputShape); auto filter = std::make_shared(ov::element::u1, params.filterShape, &filterData[0]); const auto BinaryConvolution = std::make_shared(in, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - params.mode, - params.padValue, - auto_pad); - return std::make_shared(NodeVector {BinaryConvolution}, ParameterVector {in}); + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + params.mode, + params.padValue, + auto_pad); + return std::make_shared(NodeVector{BinaryConvolution}, ParameterVector{in}); } }; @@ -113,194 +117,200 @@ template std::vector generateBinaryConvolutionParams() { using T = typename element_type_traits::value_type; - std::vector binaryConvolutionParams { -// --------------------- 2D BinaryConvolution ------------------------------------------ - BinaryConvolutionParams(PartialShape {1, 1, 4, 4}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, + std::vector binaryConvolutionParams{ + // --------------------- 2D BinaryConvolution ------------------------------------------ + BinaryConvolutionParams(PartialShape{1, 1, 4, 4}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, IN_ET, - std::vector{1, 0, 0, 1, - 1, 1, 0, 0, - 0, 0, 0, 1, - 1, 0, 1, 1}, - std::vector{0xAA, 0x80}, // 10101010 10000000 - std::vector{1, 1, - 3, -1}, + std::vector{1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1}, + std::vector{0xAA, 0x80}, // 10101010 10000000 + std::vector{1, 1, 3, -1}, {1, 1}, {0, 0}, {0, 0}, {1, 1}), - BinaryConvolutionParams(PartialShape {1, 1, 4, 4}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, + BinaryConvolutionParams(PartialShape{1, 1, 4, 4}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, IN_ET, - std::vector{1, 0, 0, 1, - 1, 1, 0, 0, - 0, 0, 0, 1, - 1, 0, 1, 1}, - std::vector{0xAA, 0x80}, // 10101010 10000000 - std::vector{1, -3, -1, 1, - -3, 1, 1, -5, - -3, 3, -1, 1, - 1, -5, 1, -3}, + std::vector{1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1}, + std::vector{0xAA, 0x80}, // 10101010 10000000 + std::vector{1, -3, -1, 1, -3, 1, 1, -5, -3, 3, -1, 1, 1, -5, 1, -3}, {1, 1}, {1, 1}, {1, 1}, {1, 1}), - BinaryConvolutionParams(PartialShape {1, 1, 4, 4}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, + BinaryConvolutionParams(PartialShape{1, 1, 4, 4}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, IN_ET, - std::vector{1, 0, 0, 1, - 1, 1, 0, 0, - 0, 0, 0, 1, - 1, 0, 1, 1}, - std::vector{0xAA, 0x80}, // 10101010 10000000 - std::vector{3, -1, 1, 3, - -1, 1, 1, -3, - -1, 3, -1, 3, - 3, -3, 3, -1}, - {1, 1}, + std::vector{1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1}, + std::vector{0xAA, 0x80}, // 10101010 10000000 + std::vector{3, -1, 1, 3, -1, 1, 1, -3, -1, 3, -1, 3, 3, -3, 3, -1}, {1, 1}, {1, 1}, {1, 1}, - 1.0f), - BinaryConvolutionParams(PartialShape {1, 1, 5, 5}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{0, 1, 1, 0, 1, - 1, 1, 0, 1, 0, - 0, 0, 1, 0, 1, - 1, 1, 0, 1, 0, - 0, 0, 1, 1, 1}, - std::vector{0x2E, 0x00}, // 10101010 10000000 - std::vector{-1, 3, - 1, 1}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}), - BinaryConvolutionParams(PartialShape {1, 1, 7, 7}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{1, 1, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 1, 0, 0, - 1, 1, 1, 1, 0, 1, 1, - 0, 0, 0, 1, 1, 1, 0, - 0, 1, 0, 0, 1, 1, 1, - 1, 0, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 1, 0, 0}, - std::vector{0x6B, 0x00}, // 10101010 10000000 - std::vector{-5, -3, -5, - 5, 1, 3, - -1, -1, 3}, {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}), - BinaryConvolutionParams(PartialShape {1, 1, 7, 7}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{1, 1, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 1, 0, 0, - 1, 1, 1, 1, 0, 1, 1, - 0, 0, 0, 1, 1, 1, 0, - 0, 1, 0, 0, 1, 1, 1, - 1, 0, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 1, 0, 0}, - std::vector{0x6B, 0x00}, // 10101010 10000000 - std::vector{1, 1, -1, 1, - 1, -5, -5, 5, - 3, -1, 3, 3, - -1, -1, 3, -3}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}), - BinaryConvolutionParams(PartialShape {1, 1, 7, 7}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{1, 1, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 1, 0, 0, - 1, 1, 1, 1, 0, 1, 1, - 0, 0, 0, 1, 1, 1, 0, - 0, 1, 0, 0, 1, 1, 1, - 1, 0, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 1, 0, 0}, - std::vector{0x6B, 0x00}, // 10101010 10000000 - std::vector{3, 3, 1, -1, - -1, -5, -5, 3, - 1, -1, 3, 1, - -3, 1, 5, -1}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, 1.0f), - BinaryConvolutionParams(PartialShape {1, 2, 4, 4}, - Shape {1, 2, 3, 3}, - PartialShape {1, 1, 2, 2}, + BinaryConvolutionParams( + PartialShape{1, 1, 5, 5}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1}, + std::vector{0x2E, 0x00}, // 10101010 10000000 + std::vector{-1, 3, 1, 1}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}), + BinaryConvolutionParams( + PartialShape{1, 1, 7, 7}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, + 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0}, + std::vector{0x6B, 0x00}, // 10101010 10000000 + std::vector{-5, -3, -5, 5, 1, 3, -1, -1, 3}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}), + BinaryConvolutionParams( + PartialShape{1, 1, 7, 7}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, + 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0}, + std::vector{0x6B, 0x00}, // 10101010 10000000 + std::vector{1, 1, -1, 1, 1, -5, -5, 5, 3, -1, 3, 3, -1, -1, 3, -3}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}), + BinaryConvolutionParams( + PartialShape{1, 1, 7, 7}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, + 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0}, + std::vector{0x6B, 0x00}, // 10101010 10000000 + std::vector{3, 3, 1, -1, -1, -5, -5, 3, 1, -1, 3, 1, -3, 1, 5, -1}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + 1.0f), + BinaryConvolutionParams(PartialShape{1, 2, 4, 4}, + Shape{1, 2, 3, 3}, + PartialShape{1, 1, 2, 2}, IN_ET, - std::vector{ - // channel 1 - 1, 0, 0, 1, - 1, 1, 0, 0, - 0, 0, 0, 1, - 1, 0, 1, 1, - // channel 2 - 0, 1, 1, 0, - 0, 0, 1, 1, - 1, 1, 1, 0, - 0, 1, 0, 0}, - std::vector{0xAA, 0xAA, 0x80}, // 10101010 10000000 - std::vector{2, 2, - 6, -2}, + std::vector{// channel 1 + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + // channel 2 + 0, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 0}, + std::vector{0xAA, 0xAA, 0x80}, // 10101010 10000000 + std::vector{2, 2, 6, -2}, {1, 1}, {0, 0}, {0, 0}, {1, 1}), - BinaryConvolutionParams(PartialShape {2, 1, 4, 4}, - Shape {1, 1, 3, 3}, - PartialShape {2, 1, 2, 2}, + BinaryConvolutionParams(PartialShape{2, 1, 4, 4}, + Shape{1, 1, 3, 3}, + PartialShape{2, 1, 2, 2}, IN_ET, - std::vector{ - // batch 1 - 1, 0, 0, 1, - 1, 1, 0, 0, - 0, 0, 0, 1, - 1, 0, 1, 1, - // batch 2 - 0, 0, 0, 0, - 1, 1, 1, 0, - 1, 1, 0, 1, - 1, 0, 1, 0}, - std::vector{0xAA, 0x80}, // 10101010 10000000 - std::vector{ - // batch 1 - 1, 1, - 3, -1, - // batch 2 - -3, 3, - 5, -7}, + std::vector{// batch 1 + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + // batch 2 + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0}, + std::vector{0xAA, 0x80}, // 10101010 10000000 + std::vector{ // batch 1 + 1, + 1, + 3, + -1, + // batch 2 + -3, + 3, + 5, + -7}, {1, 1}, {0, 0}, {0, 0}, - {1, 1}) - }; + {1, 1})}; return binaryConvolutionParams; } std::vector generateBinaryConvolutionCombinedParams() { - const std::vector> binaryConvolutionTypeParams { + const std::vector> binaryConvolutionTypeParams{ generateBinaryConvolutionParams(), generateBinaryConvolutionParams(), generateBinaryConvolutionParams(), - generateBinaryConvolutionParams() - }; + generateBinaryConvolutionParams()}; std::vector combinedParams; for (const auto& params : binaryConvolutionTypeParams) { @@ -309,7 +319,9 @@ std::vector generateBinaryConvolutionCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_BinaryConvolution_With_Hardcoded_Refs, ReferenceBinaryConvolutionLayerTest, - testing::ValuesIn(generateBinaryConvolutionCombinedParams()), ReferenceBinaryConvolutionLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BinaryConvolution_With_Hardcoded_Refs, + ReferenceBinaryConvolutionLayerTest, + testing::ValuesIn(generateBinaryConvolutionCombinedParams()), + ReferenceBinaryConvolutionLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/broadcast.cpp b/src/plugins/template/tests/functional/op_reference/broadcast.cpp index e1038d23ec4c67..5cb9712c8b2b2d 100644 --- a/src/plugins/template/tests/functional/op_reference/broadcast.cpp +++ b/src/plugins/template/tests/functional/op_reference/broadcast.cpp @@ -4,20 +4,23 @@ #include +#include "base_reference_test.hpp" #include "openvino/opsets/opset1.hpp" #include "openvino/opsets/opset3.hpp" -#include "base_reference_test.hpp" using namespace reference_tests; using namespace ov; namespace { struct BroadcastParams { - BroadcastParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& targetShapeTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), targetShapeTensor(targetShapeTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + BroadcastParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& targetShapeTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + targetShapeTensor(targetShapeTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor targetShapeTensor; @@ -55,9 +58,10 @@ class ReferenceBroadcastTest : public testing::TestWithParam, p static std::shared_ptr CreateFunction(const BroadcastParams& params) { const auto A = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto f = std::make_shared( - std::make_shared(A, opset1::Constant::create(params.targetShapeTensor.type, - params.targetShapeTensor.shape, - params.targetShapeTensor.data.data())), + std::make_shared(A, + opset1::Constant::create(params.targetShapeTensor.type, + params.targetShapeTensor.shape, + params.targetShapeTensor.data.data())), ParameterVector{A}); return f; } @@ -72,9 +76,10 @@ class ReferenceBroadcastTestV3 : public ReferenceBroadcastTest { static std::shared_ptr CreateFunction(const BroadcastParams& params) { const auto A = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto f = std::make_shared( - std::make_shared(A, opset1::Constant::create(params.targetShapeTensor.type, - params.targetShapeTensor.shape, - params.targetShapeTensor.data.data())), + std::make_shared(A, + opset1::Constant::create(params.targetShapeTensor.type, + params.targetShapeTensor.shape, + params.targetShapeTensor.data.data())), ParameterVector{A}); return f; } @@ -85,17 +90,19 @@ TEST_P(ReferenceBroadcastTestV3, CompareWithRefs) { } struct BroadcastParamsExplicitAxis : BroadcastParams { - BroadcastParamsExplicitAxis( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& targetShapeTensor, - const reference_tests::Tensor& axesMappingTensor, const reference_tests::Tensor& expectedTensor, - const std::string& testcaseName = "") : - BroadcastParams(dataTensor, targetShapeTensor, expectedTensor, testcaseName), - axesMappingTensor(axesMappingTensor) {} + BroadcastParamsExplicitAxis(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& targetShapeTensor, + const reference_tests::Tensor& axesMappingTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : BroadcastParams(dataTensor, targetShapeTensor, expectedTensor, testcaseName), + axesMappingTensor(axesMappingTensor) {} reference_tests::Tensor axesMappingTensor; }; -class ReferenceBroadcastTestExplicitAxis : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceBroadcastTestExplicitAxis : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -144,12 +151,14 @@ TEST_P(ReferenceBroadcastTestExplicitAxis, CompareWithRefs) { } struct BroadcastParamsTestHelper { - BroadcastParamsTestHelper( - const Shape& shapeA, - const Shape& shapeR, - const AxisSet& axes, const std::string& testcaseName = "") : - shapeA(shapeA), shapeR(shapeR), - axes(axes), testcaseName(testcaseName) {} + BroadcastParamsTestHelper(const Shape& shapeA, + const Shape& shapeR, + const AxisSet& axes, + const std::string& testcaseName = "") + : shapeA(shapeA), + shapeR(shapeR), + axes(axes), + testcaseName(testcaseName) {} Shape shapeA; Shape shapeR; @@ -157,7 +166,8 @@ struct BroadcastParamsTestHelper { std::string testcaseName; }; -class ReferenceBroadcastTestTestHelper : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceBroadcastTestTestHelper : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -197,7 +207,8 @@ class ReferenceBroadcastTestTestHelper : public testing::TestWithParam broadcast; if (params.axes.size() > 0) { - auto axes_const = opset1::Constant::create(element::i64, Shape{params.axes.size()}, params.axes.to_vector()); + auto axes_const = + opset1::Constant::create(element::i64, Shape{params.axes.size()}, params.axes.to_vector()); broadcast = std::make_shared(A, shape_const, axes_const); } else { broadcast = std::make_shared(A, shape_const); @@ -209,7 +220,7 @@ class ReferenceBroadcastTestTestHelper : public testing::TestWithParam CreateFunction(const BroadcastParamsExplicitAxis& params) { const auto A = std::make_shared(params.dataTensor.type, params.dataTensor.shape); - auto broadcast = std::make_shared( - A, - opset1::Constant::create(params.targetShapeTensor.type, - params.targetShapeTensor.shape, - params.targetShapeTensor.data.data()), - opset1::Constant::create(params.axesMappingTensor.type, - params.axesMappingTensor.shape, - params.axesMappingTensor.data.data())); + auto broadcast = + std::make_shared(A, + opset1::Constant::create(params.targetShapeTensor.type, + params.targetShapeTensor.shape, + params.targetShapeTensor.data.data()), + opset1::Constant::create(params.axesMappingTensor.type, + params.axesMappingTensor.shape, + params.axesMappingTensor.data.data())); auto reverse = std::make_shared(broadcast, opset1::Constant::create(element::i64, {1}, {1}), opset1::Reverse::Mode::INDEX); @@ -252,38 +263,33 @@ TEST_P(ReferenceBroadcastTestExplicitAxisReversed, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - BroadcastParams( - reference_tests::Tensor(ET, {}, std::vector{6}), - reference_tests::Tensor(element::u64, {1}, std::vector{4}), - reference_tests::Tensor(ET, {4}, std::vector{6, 6, 6, 6}), - "broadcast_scalar_vector"), - BroadcastParams( - reference_tests::Tensor(ET, {}, std::vector{6}), - reference_tests::Tensor(element::u64, {2}, std::vector{2, 2}), - reference_tests::Tensor(ET, {2, 2}, std::vector{6, 6, 6, 6}), - "broadcast_scalar_matrix"), - BroadcastParams( - reference_tests::Tensor(ET, {}, std::vector{6}), - reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{6, 6, 6, 6, 6, 6, 6, 6}), - "broadcast_scalar_tensor"), - BroadcastParams( - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{2, 4, 6, 8, 16, 32, 64, 127}), - reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{2, 4, 6, 8, 16, 32, 64, 127}), - "broadcast_trivial"), - BroadcastParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 2, 3, 4, 1, 2, 3, 4}), - "broadcast_matrix_0"), + std::vector params{ + BroadcastParams(reference_tests::Tensor(ET, {}, std::vector{6}), + reference_tests::Tensor(element::u64, {1}, std::vector{4}), + reference_tests::Tensor(ET, {4}, std::vector{6, 6, 6, 6}), + "broadcast_scalar_vector"), + BroadcastParams(reference_tests::Tensor(ET, {}, std::vector{6}), + reference_tests::Tensor(element::u64, {2}, std::vector{2, 2}), + reference_tests::Tensor(ET, {2, 2}, std::vector{6, 6, 6, 6}), + "broadcast_scalar_matrix"), + BroadcastParams(reference_tests::Tensor(ET, {}, std::vector{6}), + reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{6, 6, 6, 6, 6, 6, 6, 6}), + "broadcast_scalar_tensor"), + BroadcastParams(reference_tests::Tensor(ET, {2, 2, 2}, std::vector{2, 4, 6, 8, 16, 32, 64, 127}), + reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{2, 4, 6, 8, 16, 32, 64, 127}), + "broadcast_trivial"), + BroadcastParams(reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 2, 3, 4, 1, 2, 3, 4}), + "broadcast_matrix_0"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -305,22 +311,25 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, ReferenceBroadcastTest, - testing::ValuesIn(generateCombinedParams()), ReferenceBroadcastTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, + ReferenceBroadcastTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceBroadcastTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, ReferenceBroadcastTestV3, - testing::ValuesIn(generateCombinedParams()), ReferenceBroadcastTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, + ReferenceBroadcastTestV3, + testing::ValuesIn(generateCombinedParams()), + ReferenceBroadcastTest::getTestCaseName); template std::vector generateParamsExplicitAxis() { using T = typename element_type_traits::value_type; - std::vector params { - BroadcastParamsExplicitAxis( - reference_tests::Tensor(ET, {}, std::vector{6}), - reference_tests::Tensor(element::u64, {2}, std::vector{1, 2}), - reference_tests::Tensor(element::i64, {1}, std::vector{0}), - reference_tests::Tensor(ET, {1, 2}, std::vector{6, 6}), - "broadcast_scalar_vector_explicit_axis_0"), + std::vector params{ + BroadcastParamsExplicitAxis(reference_tests::Tensor(ET, {}, std::vector{6}), + reference_tests::Tensor(element::u64, {2}, std::vector{1, 2}), + reference_tests::Tensor(element::i64, {1}, std::vector{0}), + reference_tests::Tensor(ET, {1, 2}, std::vector{6, 6}), + "broadcast_scalar_vector_explicit_axis_0"), BroadcastParamsExplicitAxis( reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), reference_tests::Tensor(element::u64, {2}, std::vector{3, 4}), @@ -333,30 +342,27 @@ std::vector generateParamsExplicitAxis() { reference_tests::Tensor(element::i64, {1}, std::vector{1}), reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4}), "broadcast_vector_rowwise"), - BroadcastParamsExplicitAxis( - reference_tests::Tensor(ET, {1}, std::vector{4}), - reference_tests::Tensor(element::u64, {2}, std::vector{3, 1}), - reference_tests::Tensor(element::i64, {1}, std::vector{1}), - reference_tests::Tensor(ET, {3, 1}, std::vector{4, 4, 4}), - "broadcast_scalar_to_matrix"), - BroadcastParamsExplicitAxis( - reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), - reference_tests::Tensor(element::i64, {2}, std::vector{0, 2}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 2, 1, 2, 3, 4, 3, 4}), - "broadcast_matrix_1"), - BroadcastParamsExplicitAxis( - reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), - reference_tests::Tensor(element::i64, {2}, std::vector{0, 1}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 1, 2, 2, 3, 3, 4, 4}), - "broadcast_matrix_2"), + BroadcastParamsExplicitAxis(reference_tests::Tensor(ET, {1}, std::vector{4}), + reference_tests::Tensor(element::u64, {2}, std::vector{3, 1}), + reference_tests::Tensor(element::i64, {1}, std::vector{1}), + reference_tests::Tensor(ET, {3, 1}, std::vector{4, 4, 4}), + "broadcast_scalar_to_matrix"), + BroadcastParamsExplicitAxis(reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), + reference_tests::Tensor(element::i64, {2}, std::vector{0, 2}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 2, 1, 2, 3, 4, 3, 4}), + "broadcast_matrix_1"), + BroadcastParamsExplicitAxis(reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), + reference_tests::Tensor(element::i64, {2}, std::vector{0, 1}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 1, 2, 2, 3, 3, 4, 4}), + "broadcast_matrix_2"), }; return params; } std::vector generateCombinedParamsExplicitAxis() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsExplicitAxis(), generateParamsExplicitAxis(), generateParamsExplicitAxis(), @@ -378,102 +384,36 @@ std::vector generateCombinedParamsExplicitAxis() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, ReferenceBroadcastTestExplicitAxis, - testing::ValuesIn(generateCombinedParamsExplicitAxis()), ReferenceBroadcastTestExplicitAxis::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, + ReferenceBroadcastTestExplicitAxis, + testing::ValuesIn(generateCombinedParamsExplicitAxis()), + ReferenceBroadcastTestExplicitAxis::getTestCaseName); std::vector generateParamsTestHelper() { - std::vector params { - BroadcastParamsTestHelper( - {2}, - {3, 2, 4}, - {1}, - "broadcast_algo_vector_middle"), - BroadcastParamsTestHelper( - {2}, - {3, 2}, - {1}, - "broadcast_algo_vector_forward_2"), - BroadcastParamsTestHelper( - {2}, - {4, 3, 2}, - {2}, - "broadcast_algo_vector_forward_3"), - BroadcastParamsTestHelper( - {2}, - {5, 4, 3, 2}, - {3}, - "broadcast_algo_vector_forward_4"), - BroadcastParamsTestHelper( - {}, - {5, 4, 3, 2}, - {}, - "broadcast_algo_scalar"), - BroadcastParamsTestHelper( - {2}, - {2, 3}, - {0}, - "broadcast_algo_vector_backward_2"), - BroadcastParamsTestHelper( - {2}, - {2, 3, 4}, - {0}, - "broadcast_algo_vector_backward_3"), - BroadcastParamsTestHelper( - {2}, - {2, 3, 4, 5}, - {0}, - "broadcast_algo_vector_backward_4"), - BroadcastParamsTestHelper( - {4, 5}, - {2, 3, 4, 5}, - {2, 3}, - "broadcast_algo_matrix_backward_4"), - BroadcastParamsTestHelper( - {3, 5}, - {2, 3, 4, 5}, - {1, 3}, - "broadcast_algo_matrix_stride_1"), - BroadcastParamsTestHelper( - {3, 4}, - {2, 3, 4, 5}, - {1, 2}, - "broadcast_algo_matrix_stride_2"), - BroadcastParamsTestHelper( - {2, 4}, - {2, 3, 4, 5}, - {0, 2}, - "broadcast_algo_matrix_stride_3"), - BroadcastParamsTestHelper( - {2, 3, 4}, - {5, 2, 3, 4}, - {1, 2, 3}, - "broadcast_algo_3d_backward"), - BroadcastParamsTestHelper( - {2, 3, 4}, - {2, 5, 3, 4}, - {0, 2, 3}, - "broadcast_algo_3d_stride_1"), - BroadcastParamsTestHelper( - {2, 3, 4}, - {2, 3, 5, 4}, - {0, 1, 3}, - "broadcast_algo_3d_stride_2"), - BroadcastParamsTestHelper( - {3, 1}, - {2, 3, 3}, - {1, 2}, - "broadcast_algo_3d_diffrent_rank"), - BroadcastParamsTestHelper( - {2, 3, 1, 1}, - {2, 3, 4, 5}, - {0, 1, 2, 3}, - "broadcast_algo_4d_same_rank"), + std::vector params{ + BroadcastParamsTestHelper({2}, {3, 2, 4}, {1}, "broadcast_algo_vector_middle"), + BroadcastParamsTestHelper({2}, {3, 2}, {1}, "broadcast_algo_vector_forward_2"), + BroadcastParamsTestHelper({2}, {4, 3, 2}, {2}, "broadcast_algo_vector_forward_3"), + BroadcastParamsTestHelper({2}, {5, 4, 3, 2}, {3}, "broadcast_algo_vector_forward_4"), + BroadcastParamsTestHelper({}, {5, 4, 3, 2}, {}, "broadcast_algo_scalar"), + BroadcastParamsTestHelper({2}, {2, 3}, {0}, "broadcast_algo_vector_backward_2"), + BroadcastParamsTestHelper({2}, {2, 3, 4}, {0}, "broadcast_algo_vector_backward_3"), + BroadcastParamsTestHelper({2}, {2, 3, 4, 5}, {0}, "broadcast_algo_vector_backward_4"), + BroadcastParamsTestHelper({4, 5}, {2, 3, 4, 5}, {2, 3}, "broadcast_algo_matrix_backward_4"), + BroadcastParamsTestHelper({3, 5}, {2, 3, 4, 5}, {1, 3}, "broadcast_algo_matrix_stride_1"), + BroadcastParamsTestHelper({3, 4}, {2, 3, 4, 5}, {1, 2}, "broadcast_algo_matrix_stride_2"), + BroadcastParamsTestHelper({2, 4}, {2, 3, 4, 5}, {0, 2}, "broadcast_algo_matrix_stride_3"), + BroadcastParamsTestHelper({2, 3, 4}, {5, 2, 3, 4}, {1, 2, 3}, "broadcast_algo_3d_backward"), + BroadcastParamsTestHelper({2, 3, 4}, {2, 5, 3, 4}, {0, 2, 3}, "broadcast_algo_3d_stride_1"), + BroadcastParamsTestHelper({2, 3, 4}, {2, 3, 5, 4}, {0, 1, 3}, "broadcast_algo_3d_stride_2"), + BroadcastParamsTestHelper({3, 1}, {2, 3, 3}, {1, 2}, "broadcast_algo_3d_diffrent_rank"), + BroadcastParamsTestHelper({2, 3, 1, 1}, {2, 3, 4, 5}, {0, 1, 2, 3}, "broadcast_algo_4d_same_rank"), }; return params; } std::vector generateCombinedParamsTestHelper() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsTestHelper(), }; std::vector combinedParams; @@ -484,13 +424,15 @@ std::vector generateCombinedParamsTestHelper() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, ReferenceBroadcastTestTestHelper, - testing::ValuesIn(generateCombinedParamsTestHelper()), ReferenceBroadcastTestTestHelper::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, + ReferenceBroadcastTestTestHelper, + testing::ValuesIn(generateCombinedParamsTestHelper()), + ReferenceBroadcastTestTestHelper::getTestCaseName); template std::vector generateParamsExplicitAxisReversed() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ BroadcastParamsExplicitAxis( reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), reference_tests::Tensor(element::u64, {2}, std::vector{3, 4}), @@ -502,7 +444,7 @@ std::vector generateParamsExplicitAxisReversed() { } std::vector generateCombinedParamsExplicitAxisReversed() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsExplicitAxisReversed(), generateParamsExplicitAxisReversed(), generateParamsExplicitAxisReversed(), @@ -524,6 +466,8 @@ std::vector generateCombinedParamsExplicitAxisRever return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, ReferenceBroadcastTestExplicitAxisReversed, - testing::ValuesIn(generateCombinedParamsExplicitAxisReversed()), ReferenceBroadcastTestExplicitAxis::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, + ReferenceBroadcastTestExplicitAxisReversed, + testing::ValuesIn(generateCombinedParamsExplicitAxisReversed()), + ReferenceBroadcastTestExplicitAxis::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/bucketize.cpp b/src/plugins/template/tests/functional/op_reference/bucketize.cpp index c26a21a8a7760a..a26caf7f31a9e5 100644 --- a/src/plugins/template/tests/functional/op_reference/bucketize.cpp +++ b/src/plugins/template/tests/functional/op_reference/bucketize.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/bucketize.hpp" + #include -#include "openvino/op/bucketize.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,9 +13,15 @@ using namespace ov; struct BucketizeParams { template - BucketizeParams(const element::Type& input_type, const PartialShape& input_pshape, const std::vector& input, - const element::Type& bucket_type, const PartialShape& bucket_pshape, const std::vector& buckets, bool with_right_bound, - const element::Type& output_type, const std::vector& expected_output) + BucketizeParams(const element::Type& input_type, + const PartialShape& input_pshape, + const std::vector& input, + const element::Type& bucket_type, + const PartialShape& bucket_pshape, + const std::vector& buckets, + bool with_right_bound, + const element::Type& output_type, + const std::vector& expected_output) : input_type(input_type), input_pshape(input_pshape), input(CreateTensor(input_type, input)), @@ -40,8 +47,12 @@ class ReferenceBucketizeLayerTest : public testing::TestWithParam CreateFunction(const element::Type& input_type, const PartialShape& input_pshape, - const element::Type& bucket_type, const PartialShape& bucket_pshape, - const bool with_right_bound, const element::Type& output_type) { + static std::shared_ptr CreateFunction(const element::Type& input_type, + const PartialShape& input_pshape, + const element::Type& bucket_type, + const PartialShape& bucket_pshape, + const bool with_right_bound, + const element::Type& output_type) { auto data = std::make_shared(input_type, input_pshape); auto buckets = std::make_shared(bucket_type, bucket_pshape); - return std::make_shared(std::make_shared(data, buckets, output_type, with_right_bound), - ParameterVector {data, buckets}); + return std::make_shared( + std::make_shared(data, buckets, output_type, with_right_bound), + ParameterVector{data, buckets}); } }; @@ -73,26 +88,27 @@ TEST_P(ReferenceBucketizeLayerTest, CompareWithHardcodedRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_Bucketize_With_Hardcoded_Refs, ReferenceBucketizeLayerTest, +INSTANTIATE_TEST_SUITE_P(smoke_Bucketize_With_Hardcoded_Refs, + ReferenceBucketizeLayerTest, ::testing::Values( // fp32, int32, with_right_bound BucketizeParams(element::f32, - PartialShape {10, 1}, - std::vector {8.f, 1.f, 2.f, 1.1f, 8.f, 10.f, 1.f, 10.2f, 0.f, 20.f}, + PartialShape{10, 1}, + std::vector{8.f, 1.f, 2.f, 1.1f, 8.f, 10.f, 1.f, 10.2f, 0.f, 20.f}, element::i32, - PartialShape {4}, - std::vector {1, 4, 10, 20}, + PartialShape{4}, + std::vector{1, 4, 10, 20}, true, element::i32, - std::vector {2, 0, 1, 1, 2, 2, 0, 3, 0, 3}), + std::vector{2, 0, 1, 1, 2, 2, 0, 3, 0, 3}), // fp32, int32, with_right_bound BucketizeParams(element::i32, - PartialShape {1, 1, 10}, - std::vector {8, 1, 2, 1, 8, 5, 1, 5, 0, 20}, + PartialShape{1, 1, 10}, + std::vector{8, 1, 2, 1, 8, 5, 1, 5, 0, 20}, element::i32, - PartialShape {4}, - std::vector {1, 4, 10, 20}, + PartialShape{4}, + std::vector{1, 4, 10, 20}, false, element::i32, - std::vector {2, 1, 1, 1, 2, 2, 1, 2, 0, 4})), + std::vector{2, 1, 1, 1, 2, 2, 1, 2, 0, 4})), ReferenceBucketizeLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/ceiling.cpp b/src/plugins/template/tests/functional/op_reference/ceiling.cpp index 0d351de47b60c4..6362b9de86d793 100644 --- a/src/plugins/template/tests/functional/op_reference/ceiling.cpp +++ b/src/plugins/template/tests/functional/op_reference/ceiling.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/ceiling.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/ceiling.hpp" using namespace ov; using namespace reference_tests; @@ -14,9 +16,9 @@ namespace { struct CeilingParams { template CeilingParams(const PartialShape& shape, - const element::Type& iType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -50,11 +52,11 @@ class ReferenceCeilingLayerTest : public testing::TestWithParam, private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto ceiling = std::make_shared(in); - return std::make_shared(NodeVector {ceiling}, ParameterVector {in}); + return std::make_shared(NodeVector{ceiling}, ParameterVector{in}); } }; @@ -66,12 +68,10 @@ template std::vector generateParamsForCeilingFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - CeilingParams(ov::PartialShape{4}, - IN_ET, - std::vector{-2.5f, -2.0f, 0.3f, 4.8f}, - std::vector{-2.0f, -2.0f, 1.0f, 5.0f}) - }; + std::vector params{CeilingParams(ov::PartialShape{4}, + IN_ET, + std::vector{-2.5f, -2.0f, 0.3f, 4.8f}, + std::vector{-2.0f, -2.0f, 1.0f, 5.0f})}; return params; } @@ -79,12 +79,10 @@ template std::vector generateParamsForCeilingInt64() { using T = typename element_type_traits::value_type; - std::vector params{ - CeilingParams(ov::PartialShape{3}, - IN_ET, - std::vector{0, 1, 0x4000000000000001}, - std::vector{0, 1, 0x4000000000000001}) - }; + std::vector params{CeilingParams(ov::PartialShape{3}, + IN_ET, + std::vector{0, 1, 0x4000000000000001}, + std::vector{0, 1, 0x4000000000000001})}; return params; } @@ -92,12 +90,10 @@ template std::vector generateParamsForCeilingInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - CeilingParams(ov::PartialShape{4}, - IN_ET, - std::vector{2, 136314888, 0x40000010, 0x40000001}, - std::vector{2, 136314888, 0x40000010, 0x40000001}) - }; + std::vector params{CeilingParams(ov::PartialShape{4}, + IN_ET, + std::vector{2, 136314888, 0x40000010, 0x40000001}, + std::vector{2, 136314888, 0x40000010, 0x40000001})}; return params; } @@ -105,28 +101,24 @@ template std::vector generateParamsForCeilingInt() { using T = typename element_type_traits::value_type; - std::vector params{ - CeilingParams(ov::PartialShape{4}, - IN_ET, - std::vector{2, 64, 0x40, 0x01}, - std::vector{2, 64, 0x40, 0x01}) - }; + std::vector params{CeilingParams(ov::PartialShape{4}, + IN_ET, + std::vector{2, 64, 0x40, 0x01}, + std::vector{2, 64, 0x40, 0x01})}; return params; } std::vector generateCombinedParamsForCeiling() { - const std::vector> allTypeParams{ - generateParamsForCeilingFloat(), - generateParamsForCeilingFloat(), - generateParamsForCeilingInt64(), - generateParamsForCeilingInt32(), - generateParamsForCeilingInt(), - generateParamsForCeilingInt(), - generateParamsForCeilingInt64(), - generateParamsForCeilingInt32(), - generateParamsForCeilingInt(), - generateParamsForCeilingInt() - }; + const std::vector> allTypeParams{generateParamsForCeilingFloat(), + generateParamsForCeilingFloat(), + generateParamsForCeilingInt64(), + generateParamsForCeilingInt32(), + generateParamsForCeilingInt(), + generateParamsForCeilingInt(), + generateParamsForCeilingInt64(), + generateParamsForCeilingInt32(), + generateParamsForCeilingInt(), + generateParamsForCeilingInt()}; std::vector combinedParams; @@ -137,10 +129,9 @@ std::vector generateCombinedParamsForCeiling() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Ceiling_With_Hardcoded_Refs, - ReferenceCeilingLayerTest, - ::testing::ValuesIn(generateCombinedParamsForCeiling()), - ReferenceCeilingLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Ceiling_With_Hardcoded_Refs, + ReferenceCeilingLayerTest, + ::testing::ValuesIn(generateCombinedParamsForCeiling()), + ReferenceCeilingLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/clamp.cpp b/src/plugins/template/tests/functional/op_reference/clamp.cpp index f31068f59455b5..be977d60d16e62 100644 --- a/src/plugins/template/tests/functional/op_reference/clamp.cpp +++ b/src/plugins/template/tests/functional/op_reference/clamp.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/clamp.hpp" + #include -#include "openvino/op/clamp.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,8 +14,12 @@ using namespace ov; namespace { struct ClampParams { template - ClampParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const double min, const double max) + ClampParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const double min, + const double max) : min(min), max(max), pshape(shape), @@ -53,11 +58,14 @@ class ReferenceClampLayerTest : public testing::TestWithParam, publ } private: - static std::shared_ptr CreateFunction(const ov::PartialShape& input_shape, const ov::element::Type& input_type, - const ov::element::Type& expected_output_type, const double min, const double max) { + static std::shared_ptr CreateFunction(const ov::PartialShape& input_shape, + const ov::element::Type& input_type, + const ov::element::Type& expected_output_type, + const double min, + const double max) { const auto in = std::make_shared(input_type, input_shape); const auto Clamp = std::make_shared(in, min, max); - return std::make_shared(NodeVector {Clamp}, ParameterVector {in}); + return std::make_shared(NodeVector{Clamp}, ParameterVector{in}); } }; @@ -72,32 +80,31 @@ std::vector generateClampFloatParams() { auto max = std::numeric_limits::max(); auto pinf = std::numeric_limits::infinity(); auto ninf = -std::numeric_limits::infinity(); - std::vector clampParams { - ClampParams(ov::PartialShape {5, 2}, + std::vector clampParams{ + ClampParams(ov::PartialShape{5, 2}, IN_ET, std::vector{-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, std::vector{0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}, 0.2, 0.6), - ClampParams(ov::PartialShape {5, 2}, + ClampParams(ov::PartialShape{5, 2}, IN_ET, std::vector{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}, std::vector{10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}, 10.0, 20.0), - ClampParams(ov::PartialShape {5, 2}, + ClampParams(ov::PartialShape{5, 2}, IN_ET, std::vector{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}, std::vector{10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}, 10.0, pinf), - ClampParams(ov::PartialShape {5, 2}, + ClampParams(ov::PartialShape{5, 2}, IN_ET, std::vector{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}, std::vector{min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}, ninf, - 20.0) - }; + 20.0)}; return clampParams; } @@ -108,38 +115,36 @@ std::vector generateClampIntParams() { auto max = std::numeric_limits::max(); auto pinf = std::numeric_limits::infinity(); auto ninf = -std::numeric_limits::infinity(); - std::vector clampParams { - ClampParams(ov::PartialShape {6}, - IN_ET, - std::vector{-1, 3, -10, 20, 6, 2}, - std::vector{1, 3, 1, 5, 5, 2}, - 0.4, - 5.6), - ClampParams(ov::PartialShape {6}, - IN_ET, - std::vector{-6, 1, -2, 0, -1, 2}, - std::vector{-5, -1, -2, -1, -1, -1}, - -5.6, - -0.4), - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{10, 20, 10, 10, 11, 19, 20, 20}, - 10.0, - 20.0), - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{10, max, 10, 10, 11, 19, 20, 21}, - 10.0, - pinf), - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{min, 20, 9, 10, 11, 19, 20, 20}, - ninf, - 20.0) - }; + std::vector clampParams{ClampParams(ov::PartialShape{6}, + IN_ET, + std::vector{-1, 3, -10, 20, 6, 2}, + std::vector{1, 3, 1, 5, 5, 2}, + 0.4, + 5.6), + ClampParams(ov::PartialShape{6}, + IN_ET, + std::vector{-6, 1, -2, 0, -1, 2}, + std::vector{-5, -1, -2, -1, -1, -1}, + -5.6, + -0.4), + ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{10, 20, 10, 10, 11, 19, 20, 20}, + 10.0, + 20.0), + ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{10, max, 10, 10, 11, 19, 20, 21}, + 10.0, + pinf), + ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{min, 20, 9, 10, 11, 19, 20, 20}, + ninf, + 20.0)}; return clampParams; } @@ -150,43 +155,39 @@ std::vector generateClampUintParams() { T max = (static_cast(1) << (std::numeric_limits::digits - 1)) - 1; auto pinf = static_cast(max); auto ninf = -std::numeric_limits::infinity(); - std::vector clampParams { - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{10, 20, 10, 10, 11, 19, 20, 20}, - 10.0, - 20.0), - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{10, max, 10, 10, 11, 19, 20, 21}, - 10.0, - pinf), - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{min, 20, 9, 10, 11, 19, 20, 20}, - ninf, - 20.0) - }; + std::vector clampParams{ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{10, 20, 10, 10, 11, 19, 20, 20}, + 10.0, + 20.0), + ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{10, max, 10, 10, 11, 19, 20, 21}, + 10.0, + pinf), + ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{min, 20, 9, 10, 11, 19, 20, 20}, + ninf, + 20.0)}; return clampParams; } std::vector generateClampCombinedParams() { - const std::vector> clampTypeParams { - generateClampFloatParams(), - generateClampFloatParams(), - generateClampFloatParams(), - generateClampIntParams(), - generateClampIntParams(), - generateClampIntParams(), - generateClampIntParams(), - generateClampUintParams(), - generateClampUintParams(), - generateClampUintParams(), - generateClampUintParams() - }; + const std::vector> clampTypeParams{generateClampFloatParams(), + generateClampFloatParams(), + generateClampFloatParams(), + generateClampIntParams(), + generateClampIntParams(), + generateClampIntParams(), + generateClampIntParams(), + generateClampUintParams(), + generateClampUintParams(), + generateClampUintParams(), + generateClampUintParams()}; std::vector combinedParams; for (const auto& params : clampTypeParams) { @@ -195,7 +196,9 @@ std::vector generateClampCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Clamp_With_Hardcoded_Refs, ReferenceClampLayerTest, - testing::ValuesIn(generateClampCombinedParams()), ReferenceClampLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Clamp_With_Hardcoded_Refs, + ReferenceClampLayerTest, + testing::ValuesIn(generateClampCombinedParams()), + ReferenceClampLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/comparison.cpp b/src/plugins/template/tests/functional/op_reference/comparison.cpp index 71612aa3ddfe53..3fb8b1c50286e9 100644 --- a/src/plugins/template/tests/functional/op_reference/comparison.cpp +++ b/src/plugins/template/tests/functional/op_reference/comparison.cpp @@ -10,6 +10,6 @@ namespace { TEST_P(ReferenceComparisonLayerTest, CompareWithHardcodedRefs) { Exec(); } -} // namespace -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/comparison.hpp b/src/plugins/template/tests/functional/op_reference/comparison.hpp index 16869dcbd2c087..6e363829715ec9 100644 --- a/src/plugins/template/tests/functional/op_reference/comparison.hpp +++ b/src/plugins/template/tests/functional/op_reference/comparison.hpp @@ -7,14 +7,14 @@ #include "base_reference_test.hpp" #include "common_test_utils/test_enums.hpp" #include "openvino/op/equal.hpp" -#include "openvino/op/not_equal.hpp" #include "openvino/op/greater.hpp" #include "openvino/op/greater_eq.hpp" -#include "openvino/op/less.hpp" -#include "openvino/op/less_eq.hpp" -#include "openvino/op/is_inf.hpp" #include "openvino/op/is_finite.hpp" +#include "openvino/op/is_inf.hpp" #include "openvino/op/is_nan.hpp" +#include "openvino/op/less.hpp" +#include "openvino/op/less_eq.hpp" +#include "openvino/op/not_equal.hpp" using namespace ov; @@ -41,7 +41,11 @@ class ReferenceComparisonLayerTest : public testing::TestWithParam CreateFunction(ComparisonTypes comp_op_type, const ov::PartialShape& input_shape1, - const ov::PartialShape& input_shape2, const ov::element::Type& input_type, - const ov::element::Type& expected_output_type) { + static std::shared_ptr CreateFunction(ComparisonTypes comp_op_type, + const ov::PartialShape& input_shape1, + const ov::PartialShape& input_shape2, + const ov::element::Type& input_type, + const ov::element::Type& expected_output_type) { const auto in0 = std::make_shared(input_type, input_shape1); const auto in1 = std::make_shared(input_type, input_shape2); std::shared_ptr comp; switch (comp_op_type) { case ComparisonTypes::EQUAL: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } case ComparisonTypes::NOT_EQUAL: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } case ComparisonTypes::GREATER: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } case ComparisonTypes::GREATER_EQUAL: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } case ComparisonTypes::IS_FINITE: { - comp = std::make_shared(in0); + comp = std::make_shared(in0); break; } case ComparisonTypes::IS_INF: { - comp = std::make_shared(in0); + comp = std::make_shared(in0); break; } case ComparisonTypes::IS_NAN: { - comp = std::make_shared(in0); + comp = std::make_shared(in0); break; } case ComparisonTypes::LESS: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } case ComparisonTypes::LESS_EQUAL: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } default: { throw std::runtime_error("Incorrect type of Comparison operation"); } } - return std::make_shared(ov::NodeVector {comp}, ov::ParameterVector {in0, in1}); + return std::make_shared(ov::NodeVector{comp}, ov::ParameterVector{in0, in1}); } }; } // namespace ComparisonOpsRefTestDefinitions diff --git a/src/plugins/template/tests/functional/op_reference/concat.cpp b/src/plugins/template/tests/functional/op_reference/concat.cpp index 6f71ca01bc0a1c..b11a3d1e4a4658 100644 --- a/src/plugins/template/tests/functional/op_reference/concat.cpp +++ b/src/plugins/template/tests/functional/op_reference/concat.cpp @@ -4,20 +4,28 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; namespace { struct ConcatParams { - ConcatParams( - const PartialShape& dynamicShape, - const reference_tests::Tensor& A, const reference_tests::Tensor& B, - const reference_tests::Tensor& C, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - dynamicShape(dynamicShape), A(A), B(B), C(C), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParams(const PartialShape& dynamicShape, + const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : dynamicShape(dynamicShape), + A(A), + B(B), + C(C), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} PartialShape dynamicShape; reference_tests::Tensor A; @@ -70,7 +78,8 @@ class ReferenceConcatTest : public testing::TestWithParam, public B = std::make_shared(params.B.type, params.B.shape); C = std::make_shared(params.C.type, params.C.shape); } - auto f = std::make_shared(std::make_shared(NodeVector{A, B, C}, params.axis), ParameterVector{A, B, C}); + auto f = std::make_shared(std::make_shared(NodeVector{A, B, C}, params.axis), + ParameterVector{A, B, C}); return f; } }; @@ -82,7 +91,7 @@ TEST_P(ReferenceConcatTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParams( PartialShape::dynamic(), reference_tests::Tensor(ET, {2, 2}, std::vector{2, 4, 8, 16}), @@ -107,36 +116,33 @@ std::vector generateParams() { 0, reference_tests::Tensor(ET, {8, 2}, std::vector{2, 4, 8, 16, 1, 2, 4, 8, 16, 32, 2, 3, 5, 7, 11, 13}), "concat_matrix_rowwise"), - ConcatParams( - {}, - reference_tests::Tensor(ET, {4}, std::vector{2, 4, 8, 16}), - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 4, 8, 16, 32}), - reference_tests::Tensor(ET, {2}, std::vector{18, 19}), - 0, - reference_tests::Tensor(ET, {12}, std::vector{2, 4, 8, 16, 1, 2, 4, 8, 16, 32, 18, 19}), - "concat_vector"), - ConcatParams( - {}, - reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{1}), - reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{2}), - reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{3}), - 0, - reference_tests::Tensor(ET, {3, 1, 1, 1}, std::vector{1, 2, 3}), - "concat_4d_tensor"), - ConcatParams( - {}, - reference_tests::Tensor(ET, {1, 1}, std::vector{1}), - reference_tests::Tensor(ET, {1, 1}, std::vector{2}), - reference_tests::Tensor(ET, {1, 1}, std::vector{3}), - 0, - reference_tests::Tensor(ET, {3, 1}, std::vector{1, 2, 3}), - "concat_2d_tensor"), + ConcatParams({}, + reference_tests::Tensor(ET, {4}, std::vector{2, 4, 8, 16}), + reference_tests::Tensor(ET, {6}, std::vector{1, 2, 4, 8, 16, 32}), + reference_tests::Tensor(ET, {2}, std::vector{18, 19}), + 0, + reference_tests::Tensor(ET, {12}, std::vector{2, 4, 8, 16, 1, 2, 4, 8, 16, 32, 18, 19}), + "concat_vector"), + ConcatParams({}, + reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{1}), + reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{2}), + reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{3}), + 0, + reference_tests::Tensor(ET, {3, 1, 1, 1}, std::vector{1, 2, 3}), + "concat_4d_tensor"), + ConcatParams({}, + reference_tests::Tensor(ET, {1, 1}, std::vector{1}), + reference_tests::Tensor(ET, {1, 1}, std::vector{2}), + reference_tests::Tensor(ET, {1, 1}, std::vector{3}), + 0, + reference_tests::Tensor(ET, {3, 1}, std::vector{1, 2, 3}), + "concat_2d_tensor"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -158,20 +164,24 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTest, - testing::ValuesIn(generateCombinedParams()), ReferenceConcatTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceConcatTest::getTestCaseName); //// concat_vector_params, concat_vector_large struct ConcatParamsVectorLarge { - ConcatParamsVectorLarge(const uint32_t numInputs, const std::string& testcaseName = "") : - numInputs(numInputs), testcaseName(testcaseName) {} + ConcatParamsVectorLarge(const uint32_t numInputs, const std::string& testcaseName = "") + : numInputs(numInputs), + testcaseName(testcaseName) {} uint32_t numInputs; std::string testcaseName; }; -class ReferenceConcatTestVectorLarge : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestVectorLarge : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -213,7 +223,7 @@ TEST_P(ReferenceConcatTestVectorLarge, CompareWithRefs) { } std::vector generateParamsVectorLarge() { - std::vector params { + std::vector params{ ConcatParamsVectorLarge(100, "concat_vector_large_100"), ConcatParamsVectorLarge(128, "concat_vector_large_128"), ConcatParamsVectorLarge(999, "concat_vector_large_999"), @@ -222,7 +232,7 @@ std::vector generateParamsVectorLarge() { } std::vector generateCombinedParamsVectorLarge() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsVectorLarge(), }; std::vector combinedParams; @@ -233,16 +243,28 @@ std::vector generateCombinedParamsVectorLarge() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestVectorLarge, - testing::ValuesIn(generateCombinedParamsVectorLarge()), ReferenceConcatTestVectorLarge::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestVectorLarge, + testing::ValuesIn(generateCombinedParamsVectorLarge()), + ReferenceConcatTestVectorLarge::getTestCaseName); //// concat_in_place_2d_tensor struct ConcatParamsInPlace2dTensor { - ConcatParamsInPlace2dTensor( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const reference_tests::Tensor& C, const reference_tests::Tensor& D, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), C(C), D(D), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlace2dTensor(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const reference_tests::Tensor& D, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + C(C), + D(D), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -253,7 +275,8 @@ struct ConcatParamsInPlace2dTensor { std::string testcaseName; }; -class ReferenceConcatTestInPlace2dTensor : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlace2dTensor : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -293,9 +316,9 @@ class ReferenceConcatTestInPlace2dTensor : public testing::TestWithParam(params.D.type, params.D.shape); const auto add2 = std::make_shared(C, D); const auto subtract = std::make_shared(C, A); - const auto f = std::make_shared( - std::make_shared(NodeVector{add1, add2, subtract}, params.axis), - ParameterVector{A, B, C, D}); + const auto f = + std::make_shared(std::make_shared(NodeVector{add1, add2, subtract}, params.axis), + ParameterVector{A, B, C, D}); return f; } }; @@ -307,21 +330,20 @@ TEST_P(ReferenceConcatTestInPlace2dTensor, CompareWithRefs) { template std::vector generateParamsInPlace2dTensor() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsInPlace2dTensor( - reference_tests::Tensor(ET, {1, 1}, std::vector{1}), - reference_tests::Tensor(ET, {1, 1}, std::vector{2}), - reference_tests::Tensor(ET, {1, 1}, std::vector{3}), - reference_tests::Tensor(ET, {1, 1}, std::vector{4}), - 0, - reference_tests::Tensor(ET, {3, 1}, std::vector{3, 7, 2}), - "concat_in_place_2d_tensor"), + std::vector params{ + ConcatParamsInPlace2dTensor(reference_tests::Tensor(ET, {1, 1}, std::vector{1}), + reference_tests::Tensor(ET, {1, 1}, std::vector{2}), + reference_tests::Tensor(ET, {1, 1}, std::vector{3}), + reference_tests::Tensor(ET, {1, 1}, std::vector{4}), + 0, + reference_tests::Tensor(ET, {3, 1}, std::vector{3, 7, 2}), + "concat_in_place_2d_tensor"), }; return params; } std::vector generateCombinedParamsInPlace2dTensor() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlace2dTensor(), generateParamsInPlace2dTensor(), generateParamsInPlace2dTensor(), @@ -338,16 +360,28 @@ std::vector generateCombinedParamsInPlace2dTensor() return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlace2dTensor, - testing::ValuesIn(generateCombinedParamsInPlace2dTensor()), ReferenceConcatTestInPlace2dTensor::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlace2dTensor, + testing::ValuesIn(generateCombinedParamsInPlace2dTensor()), + ReferenceConcatTestInPlace2dTensor::getTestCaseName); //// concat_in_place_propagate_2d_tensor struct ConcatParamsInPlacePropagate2dTensor { - ConcatParamsInPlacePropagate2dTensor( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const reference_tests::Tensor& C, const reference_tests::Tensor& D, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), C(C), D(D), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlacePropagate2dTensor(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const reference_tests::Tensor& D, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + C(C), + D(D), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -358,7 +392,8 @@ struct ConcatParamsInPlacePropagate2dTensor { std::string testcaseName; }; -class ReferenceConcatTestInPlacePropagate2dTensor : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlacePropagate2dTensor : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -399,9 +434,9 @@ class ReferenceConcatTestInPlacePropagate2dTensor : public testing::TestWithPara const auto add2 = std::make_shared(C, D); const auto concat1 = std::make_shared(NodeVector{add1, add2}, params.axis); const auto subtract = std::make_shared(C, A); - const auto f = std::make_shared( - std::make_shared(NodeVector{concat1, subtract}, params.axis), - ParameterVector{A, B, C, D}); + const auto f = + std::make_shared(std::make_shared(NodeVector{concat1, subtract}, params.axis), + ParameterVector{A, B, C, D}); return f; } }; @@ -413,21 +448,20 @@ TEST_P(ReferenceConcatTestInPlacePropagate2dTensor, CompareWithRefs) { template std::vector generateParamsInPlacePropagate2dTensor() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsInPlacePropagate2dTensor( - reference_tests::Tensor(ET, {1, 1}, std::vector{1}), - reference_tests::Tensor(ET, {1, 1}, std::vector{2}), - reference_tests::Tensor(ET, {1, 1}, std::vector{3}), - reference_tests::Tensor(ET, {1, 1}, std::vector{4}), - 0, - reference_tests::Tensor(ET, {3, 1}, std::vector{3, 7, 2}), - "concat_in_place_2d_tensor"), + std::vector params{ + ConcatParamsInPlacePropagate2dTensor(reference_tests::Tensor(ET, {1, 1}, std::vector{1}), + reference_tests::Tensor(ET, {1, 1}, std::vector{2}), + reference_tests::Tensor(ET, {1, 1}, std::vector{3}), + reference_tests::Tensor(ET, {1, 1}, std::vector{4}), + 0, + reference_tests::Tensor(ET, {3, 1}, std::vector{3, 7, 2}), + "concat_in_place_2d_tensor"), }; return params; } std::vector generateCombinedParamsInPlacePropagate2dTensor() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlacePropagate2dTensor(), generateParamsInPlacePropagate2dTensor(), generateParamsInPlacePropagate2dTensor(), @@ -444,16 +478,24 @@ std::vector generateCombinedParamsInPlaceP return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlacePropagate2dTensor, - testing::ValuesIn(generateCombinedParamsInPlacePropagate2dTensor()), ReferenceConcatTestInPlacePropagate2dTensor::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlacePropagate2dTensor, + testing::ValuesIn(generateCombinedParamsInPlacePropagate2dTensor()), + ReferenceConcatTestInPlacePropagate2dTensor::getTestCaseName); //// concat_in_place_tree_1 struct ConcatParamsInPlaceTree1 { - ConcatParamsInPlaceTree1( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlaceTree1(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -462,7 +504,8 @@ struct ConcatParamsInPlaceTree1 { std::string testcaseName; }; -class ReferenceConcatTestInPlaceTree1 : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlaceTree1 : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -496,8 +539,7 @@ class ReferenceConcatTestInPlaceTree1 : public testing::TestWithParam(A, B); const auto add2 = std::make_shared(A, B); const auto concat = std::make_shared(NodeVector{add1, add2}, params.axis); - const auto f = std::make_shared(std::make_shared(concat, concat), - ParameterVector{A, B}); + const auto f = std::make_shared(std::make_shared(concat, concat), ParameterVector{A, B}); return f; } }; @@ -509,19 +551,18 @@ TEST_P(ReferenceConcatTestInPlaceTree1, CompareWithRefs) { template std::vector generateParamsInPlaceTree1() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsInPlaceTree1( - reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), - reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), - 1, - reference_tests::Tensor(ET, {1, 4, 2}, std::vector{4, 4, 4, 4, 4, 4, 4, 4}), - "concat_in_place_tree_1"), + std::vector params{ + ConcatParamsInPlaceTree1(reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), + reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), + 1, + reference_tests::Tensor(ET, {1, 4, 2}, std::vector{4, 4, 4, 4, 4, 4, 4, 4}), + "concat_in_place_tree_1"), }; return params; } std::vector generateCombinedParamsInPlaceTree1() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlaceTree1(), generateParamsInPlaceTree1(), generateParamsInPlaceTree1(), @@ -538,16 +579,24 @@ std::vector generateCombinedParamsInPlaceTree1() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlaceTree1, - testing::ValuesIn(generateCombinedParamsInPlaceTree1()), ReferenceConcatTestInPlaceTree1::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlaceTree1, + testing::ValuesIn(generateCombinedParamsInPlaceTree1()), + ReferenceConcatTestInPlaceTree1::getTestCaseName); //// concat_in_place_tree_2 struct ConcatParamsInPlaceTree2 { - ConcatParamsInPlaceTree2( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlaceTree2(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -556,7 +605,8 @@ struct ConcatParamsInPlaceTree2 { std::string testcaseName; }; -class ReferenceConcatTestInPlaceTree2 : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlaceTree2 : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -592,8 +642,8 @@ class ReferenceConcatTestInPlaceTree2 : public testing::TestWithParam(NodeVector{add1, add2}, params.axis); const auto concat2 = std::make_shared(NodeVector{add1, add2}, params.axis); const auto concat12 = std::make_shared(NodeVector{concat1, concat2}, params.axis); - const auto f = std::make_shared(std::make_shared(concat12, concat12), - ParameterVector{A, B}); + const auto f = + std::make_shared(std::make_shared(concat12, concat12), ParameterVector{A, B}); return f; } }; @@ -605,20 +655,19 @@ TEST_P(ReferenceConcatTestInPlaceTree2, CompareWithRefs) { template std::vector generateParamsInPlaceTree2() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParamsInPlaceTree2( reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), 1, - reference_tests::Tensor(ET, {1, 8, 2}, std::vector{4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4}), + reference_tests::Tensor(ET, {1, 8, 2}, std::vector{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}), "concat_in_place_tree_2"), }; return params; } std::vector generateCombinedParamsInPlaceTree2() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlaceTree2(), generateParamsInPlaceTree2(), generateParamsInPlaceTree2(), @@ -635,16 +684,24 @@ std::vector generateCombinedParamsInPlaceTree2() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlaceTree2, - testing::ValuesIn(generateCombinedParamsInPlaceTree2()), ReferenceConcatTestInPlaceTree2::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlaceTree2, + testing::ValuesIn(generateCombinedParamsInPlaceTree2()), + ReferenceConcatTestInPlaceTree2::getTestCaseName); //// concat_in_place_tree_3 struct ConcatParamsInPlaceTree3 { - ConcatParamsInPlaceTree3( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlaceTree3(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -653,7 +710,8 @@ struct ConcatParamsInPlaceTree3 { std::string testcaseName; }; -class ReferenceConcatTestInPlaceTree3 : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlaceTree3 : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -691,8 +749,8 @@ class ReferenceConcatTestInPlaceTree3 : public testing::TestWithParam(NodeVector{concat1, concat2}, params.axis); const auto concat34 = std::make_shared(NodeVector{concat3, concat4}, params.axis); const auto concat14 = std::make_shared(NodeVector{concat12, concat34}, params.axis); - const auto f = std::make_shared(std::make_shared(concat14, concat14), - ParameterVector{A, B}); + const auto f = + std::make_shared(std::make_shared(concat14, concat14), ParameterVector{A, B}); return f; } }; @@ -704,22 +762,20 @@ TEST_P(ReferenceConcatTestInPlaceTree3, CompareWithRefs) { template std::vector generateParamsInPlaceTree3() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParamsInPlaceTree3( reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), 1, - reference_tests::Tensor(ET, {1, 16, 2}, std::vector{2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2}), + reference_tests::Tensor(ET, {1, 16, 2}, std::vector{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}), "concat_in_place_tree_3"), }; return params; } std::vector generateCombinedParamsInPlaceTree3() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlaceTree3(), generateParamsInPlaceTree3(), generateParamsInPlaceTree3(), @@ -736,16 +792,24 @@ std::vector generateCombinedParamsInPlaceTree3() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlaceTree3, - testing::ValuesIn(generateCombinedParamsInPlaceTree3()), ReferenceConcatTestInPlaceTree3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlaceTree3, + testing::ValuesIn(generateCombinedParamsInPlaceTree3()), + ReferenceConcatTestInPlaceTree3::getTestCaseName); //// concat_in_place_add_concat struct ConcatParamsInPlaceAddConcat { - ConcatParamsInPlaceAddConcat( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlaceAddConcat(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -754,7 +818,8 @@ struct ConcatParamsInPlaceAddConcat { std::string testcaseName; }; -class ReferenceConcatTestInPlaceAddConcat : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlaceAddConcat : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -801,19 +866,18 @@ TEST_P(ReferenceConcatTestInPlaceAddConcat, CompareWithRefs) { template std::vector generateParamsInPlaceAddConcat() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsInPlaceAddConcat( - reference_tests::Tensor(ET, {2, 2}, std::vector{1, 1, 1, 1}), - reference_tests::Tensor(ET, {2, 2}, std::vector{1, 1, 1, 1}), - 0, - reference_tests::Tensor(ET, {4, 2}, std::vector{4, 4, 4, 4, 8, 8, 8, 8}), - "concat_in_place_add_concat"), + std::vector params{ + ConcatParamsInPlaceAddConcat(reference_tests::Tensor(ET, {2, 2}, std::vector{1, 1, 1, 1}), + reference_tests::Tensor(ET, {2, 2}, std::vector{1, 1, 1, 1}), + 0, + reference_tests::Tensor(ET, {4, 2}, std::vector{4, 4, 4, 4, 8, 8, 8, 8}), + "concat_in_place_add_concat"), }; return params; } std::vector generateCombinedParamsInPlaceAddConcat() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlaceAddConcat(), generateParamsInPlaceAddConcat(), generateParamsInPlaceAddConcat(), @@ -830,16 +894,24 @@ std::vector generateCombinedParamsInPlaceAddConcat return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlaceAddConcat, - testing::ValuesIn(generateCombinedParamsInPlaceAddConcat()), ReferenceConcatTestInPlaceAddConcat::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlaceAddConcat, + testing::ValuesIn(generateCombinedParamsInPlaceAddConcat()), + ReferenceConcatTestInPlaceAddConcat::getTestCaseName); //// concat_in_place_add_concat_2 struct ConcatParamsInPlaceAddConcat2 { - ConcatParamsInPlaceAddConcat2( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlaceAddConcat2(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -848,7 +920,8 @@ struct ConcatParamsInPlaceAddConcat2 { std::string testcaseName; }; -class ReferenceConcatTestInPlaceAddConcat2 : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlaceAddConcat2 : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -899,7 +972,7 @@ TEST_P(ReferenceConcatTestInPlaceAddConcat2, CompareWithRefs) { template std::vector generateParamsInPlaceAddConcat2() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParamsInPlaceAddConcat2( reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), @@ -911,7 +984,7 @@ std::vector generateParamsInPlaceAddConcat2() { } std::vector generateCombinedParamsInPlaceAddConcat2() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlaceAddConcat2(), generateParamsInPlaceAddConcat2(), generateParamsInPlaceAddConcat2(), @@ -928,16 +1001,26 @@ std::vector generateCombinedParamsInPlaceAddConca return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlaceAddConcat2, - testing::ValuesIn(generateCombinedParamsInPlaceAddConcat2()), ReferenceConcatTestInPlaceAddConcat2::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlaceAddConcat2, + testing::ValuesIn(generateCombinedParamsInPlaceAddConcat2()), + ReferenceConcatTestInPlaceAddConcat2::getTestCaseName); //// concat_5d struct ConcatParams5d { - ConcatParams5d( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const reference_tests::Tensor& C, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), C(C), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParams5d(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + C(C), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -994,58 +1077,71 @@ TEST_P(ReferenceConcatTest5d, CompareWithRefs) { template std::vector generateParams5d() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParams5d( - reference_tests::Tensor(ET, {2, 3, 4, 3, 2}, []() -> std::vector { - std::vector data(2 * 3 * 4 * 3 * 2); - for (int i = 0; i < 2 * 3 * 4 * 3 * 2; i++) { - data[i] = static_cast(i + 1); - } - return data; - }()), - reference_tests::Tensor(ET, {2, 3, 3, 3, 2}, []() -> std::vector { - std::vector data(2 * 3 * 3 * 3 * 2); - for (int i = 0; i < 2 * 3 * 3 * 3 * 2; i++) { - data[i] = 1000 + static_cast(i + 1); - } - return data;}()), - reference_tests::Tensor(ET, {2, 3, 2, 3, 2}, []() -> std::vector { - std::vector data(2 * 3 * 2 * 3 * 2); - for (int i = 0; i < 2 * 3 * 2 * 3 * 2; i++) { - data[i] = 2000 + static_cast(i + 1); - } - return data;}()), + reference_tests::Tensor(ET, + {2, 3, 4, 3, 2}, + []() -> std::vector { + std::vector data(2 * 3 * 4 * 3 * 2); + for (int i = 0; i < 2 * 3 * 4 * 3 * 2; i++) { + data[i] = static_cast(i + 1); + } + return data; + }()), + reference_tests::Tensor(ET, + {2, 3, 3, 3, 2}, + []() -> std::vector { + std::vector data(2 * 3 * 3 * 3 * 2); + for (int i = 0; i < 2 * 3 * 3 * 3 * 2; i++) { + data[i] = 1000 + static_cast(i + 1); + } + return data; + }()), + reference_tests::Tensor(ET, + {2, 3, 2, 3, 2}, + []() -> std::vector { + std::vector data(2 * 3 * 2 * 3 * 2); + for (int i = 0; i < 2 * 3 * 2 * 3 * 2; i++) { + data[i] = 2000 + static_cast(i + 1); + } + return data; + }()), 2, - reference_tests::Tensor(ET, {2, 3, 9, 3, 2}, std::vector{ - 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13., 14., 15., - 16., 17., 18., 19., 20., 21., 22., 23., 24., 1001., 1002., 1003., 1004., 1005., 1006., - 1007., 1008., 1009., 1010., 1011., 1012., 1013., 1014., 1015., 1016., 1017., 1018., 2001., 2002., 2003., - 2004., 2005., 2006., 2007., 2008., 2009., 2010., 2011., 2012., 25., 26., 27., 28., 29., 30., - 31., 32., 33., 34., 35., 36., 37., 38., 39., 40., 41., 42., 43., 44., 45., - 46., 47., 48., 1019., 1020., 1021., 1022., 1023., 1024., 1025., 1026., 1027., 1028., 1029., 1030., - 1031., 1032., 1033., 1034., 1035., 1036., 2013., 2014., 2015., 2016., 2017., 2018., 2019., 2020., 2021., - 2022., 2023., 2024., 49., 50., 51., 52., 53., 54., 55., 56., 57., 58., 59., 60., - 61., 62., 63., 64., 65., 66., 67., 68., 69., 70., 71., 72., 1037., 1038., 1039., - 1040., 1041., 1042., 1043., 1044., 1045., 1046., 1047., 1048., 1049., 1050., 1051., 1052., 1053., 1054., - 2025., 2026., 2027., 2028., 2029., 2030., 2031., 2032., 2033., 2034., 2035., 2036., 73., 74., 75., - 76., 77., 78., 79., 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., 90., - 91., 92., 93., 94., 95., 96., 1055., 1056., 1057., 1058., 1059., 1060., 1061., 1062., 1063., - 1064., 1065., 1066., 1067., 1068., 1069., 1070., 1071., 1072., 2037., 2038., 2039., 2040., 2041., 2042., - 2043., 2044., 2045., 2046., 2047., 2048., 97., 98., 99., 100., 101., 102., 103., 104., 105., - 106., 107., 108., 109., 110., 111., 112., 113., 114., 115., 116., 117., 118., 119., 120., - 1073., 1074., 1075., 1076., 1077., 1078., 1079., 1080., 1081., 1082., 1083., 1084., 1085., 1086., 1087., - 1088., 1089., 1090., 2049., 2050., 2051., 2052., 2053., 2054., 2055., 2056., 2057., 2058., 2059., 2060., - 121., 122., 123., 124., 125., 126., 127., 128., 129., 130., 131., 132., 133., 134., 135., - 136., 137., 138., 139., 140., 141., 142., 143., 144., 1091., 1092., 1093., 1094., 1095., 1096., - 1097., 1098., 1099., 1100., 1101., 1102., 1103., 1104., 1105., 1106., 1107., 1108., 2061., 2062., 2063., - 2064., 2065., 2066., 2067., 2068., 2069., 2070., 2071., 2072.}), + reference_tests::Tensor( + ET, + {2, 3, 9, 3, 2}, + std::vector{ + 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13., 14., + 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 1001., 1002., 1003., 1004., + 1005., 1006., 1007., 1008., 1009., 1010., 1011., 1012., 1013., 1014., 1015., 1016., 1017., 1018., + 2001., 2002., 2003., 2004., 2005., 2006., 2007., 2008., 2009., 2010., 2011., 2012., 25., 26., + 27., 28., 29., 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., 40., + 41., 42., 43., 44., 45., 46., 47., 48., 1019., 1020., 1021., 1022., 1023., 1024., + 1025., 1026., 1027., 1028., 1029., 1030., 1031., 1032., 1033., 1034., 1035., 1036., 2013., 2014., + 2015., 2016., 2017., 2018., 2019., 2020., 2021., 2022., 2023., 2024., 49., 50., 51., 52., + 53., 54., 55., 56., 57., 58., 59., 60., 61., 62., 63., 64., 65., 66., + 67., 68., 69., 70., 71., 72., 1037., 1038., 1039., 1040., 1041., 1042., 1043., 1044., + 1045., 1046., 1047., 1048., 1049., 1050., 1051., 1052., 1053., 1054., 2025., 2026., 2027., 2028., + 2029., 2030., 2031., 2032., 2033., 2034., 2035., 2036., 73., 74., 75., 76., 77., 78., + 79., 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., 90., 91., 92., + 93., 94., 95., 96., 1055., 1056., 1057., 1058., 1059., 1060., 1061., 1062., 1063., 1064., + 1065., 1066., 1067., 1068., 1069., 1070., 1071., 1072., 2037., 2038., 2039., 2040., 2041., 2042., + 2043., 2044., 2045., 2046., 2047., 2048., 97., 98., 99., 100., 101., 102., 103., 104., + 105., 106., 107., 108., 109., 110., 111., 112., 113., 114., 115., 116., 117., 118., + 119., 120., 1073., 1074., 1075., 1076., 1077., 1078., 1079., 1080., 1081., 1082., 1083., 1084., + 1085., 1086., 1087., 1088., 1089., 1090., 2049., 2050., 2051., 2052., 2053., 2054., 2055., 2056., + 2057., 2058., 2059., 2060., 121., 122., 123., 124., 125., 126., 127., 128., 129., 130., + 131., 132., 133., 134., 135., 136., 137., 138., 139., 140., 141., 142., 143., 144., + 1091., 1092., 1093., 1094., 1095., 1096., 1097., 1098., 1099., 1100., 1101., 1102., 1103., 1104., + 1105., 1106., 1107., 1108., 2061., 2062., 2063., 2064., 2065., 2066., 2067., 2068., 2069., 2070., + 2071., 2072.}), "concat_5d"), }; return params; } std::vector generateCombinedParams5d() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams5d(), generateParams5d(), generateParams5d(), @@ -1058,16 +1154,24 @@ std::vector generateCombinedParams5d() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTest5d, - testing::ValuesIn(generateCombinedParams5d()), ReferenceConcatTest5d::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTest5d, + testing::ValuesIn(generateCombinedParams5d()), + ReferenceConcatTest5d::getTestCaseName); //// concat_zero_length_1d_last struct ConcatParamsZeroLength1dLast { - ConcatParamsZeroLength1dLast( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsZeroLength1dLast(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -1076,7 +1180,8 @@ struct ConcatParamsZeroLength1dLast { std::string testcaseName; }; -class ReferenceConcatTestZeroLength1dLast : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestZeroLength1dLast : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -1120,19 +1225,18 @@ TEST_P(ReferenceConcatTestZeroLength1dLast, CompareWithRefs) { template std::vector generateParamsZeroLength1dLast() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsZeroLength1dLast( - reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(ET, {0}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), - "concat_zero_length_1d_last"), + std::vector params{ + ConcatParamsZeroLength1dLast(reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(ET, {0}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), + "concat_zero_length_1d_last"), }; return params; } std::vector generateCombinedParamsZeroLength1dLast() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsZeroLength1dLast(), generateParamsZeroLength1dLast(), generateParamsZeroLength1dLast(), @@ -1149,16 +1253,26 @@ std::vector generateCombinedParamsZeroLength1dLast return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestZeroLength1dLast, - testing::ValuesIn(generateCombinedParamsZeroLength1dLast()), ReferenceConcatTestZeroLength1dLast::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestZeroLength1dLast, + testing::ValuesIn(generateCombinedParamsZeroLength1dLast()), + ReferenceConcatTestZeroLength1dLast::getTestCaseName); //// concat_zero_length_1d_middle struct ConcatParamsZeroLength1dMiddle { - ConcatParamsZeroLength1dMiddle( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const reference_tests::Tensor& C, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), C(C), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsZeroLength1dMiddle(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + C(C), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -1168,7 +1282,8 @@ struct ConcatParamsZeroLength1dMiddle { std::string testcaseName; }; -class ReferenceConcatTestZeroLength1dMiddle : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestZeroLength1dMiddle : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -1215,20 +1330,19 @@ TEST_P(ReferenceConcatTestZeroLength1dMiddle, CompareWithRefs) { template std::vector generateParamsZeroLength1dMiddle() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsZeroLength1dMiddle( - reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(ET, {0}, std::vector{0}), - reference_tests::Tensor(ET, {4}, std::vector{5, 6, 7, 8}), - 0, - reference_tests::Tensor(ET, {8}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), - "concat_zero_length_1d_middle"), + std::vector params{ + ConcatParamsZeroLength1dMiddle(reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(ET, {0}, std::vector{0}), + reference_tests::Tensor(ET, {4}, std::vector{5, 6, 7, 8}), + 0, + reference_tests::Tensor(ET, {8}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), + "concat_zero_length_1d_middle"), }; return params; } std::vector generateCombinedParamsZeroLength1dMiddle() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsZeroLength1dMiddle(), generateParamsZeroLength1dMiddle(), generateParamsZeroLength1dMiddle(), @@ -1245,16 +1359,22 @@ std::vector generateCombinedParamsZeroLength1dMi return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestZeroLength1dMiddle, - testing::ValuesIn(generateCombinedParamsZeroLength1dMiddle()), ReferenceConcatTestZeroLength1dMiddle::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestZeroLength1dMiddle, + testing::ValuesIn(generateCombinedParamsZeroLength1dMiddle()), + ReferenceConcatTestZeroLength1dMiddle::getTestCaseName); //// concat_zero_zero struct ConcatParamsZeroZero { - ConcatParamsZeroZero( - const reference_tests::Tensor& A, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsZeroZero(const reference_tests::Tensor& A, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; int32_t axis; @@ -1303,18 +1423,17 @@ TEST_P(ReferenceConcatTestZeroZero, CompareWithRefs) { template std::vector generateParamsZeroZero() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsZeroZero( - reference_tests::Tensor(ET, {0}, std::vector{1}), - 0, - reference_tests::Tensor(ET, {0}, std::vector{}), - "concat_zero_zero"), + std::vector params{ + ConcatParamsZeroZero(reference_tests::Tensor(ET, {0}, std::vector{1}), + 0, + reference_tests::Tensor(ET, {0}, std::vector{}), + "concat_zero_zero"), }; return params; } std::vector generateCombinedParamsZeroZero() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsZeroZero(), generateParamsZeroZero(), generateParamsZeroZero(), @@ -1331,16 +1450,26 @@ std::vector generateCombinedParamsZeroZero() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestZeroZero, - testing::ValuesIn(generateCombinedParamsZeroZero()), ReferenceConcatTestZeroZero::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestZeroZero, + testing::ValuesIn(generateCombinedParamsZeroZero()), + ReferenceConcatTestZeroZero::getTestCaseName); //// concat_zero_length_4d_middle struct ConcatParamsZeroLength4dMiddle { - ConcatParamsZeroLength4dMiddle( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const reference_tests::Tensor& C, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), C(C), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsZeroLength4dMiddle(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + C(C), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -1350,7 +1479,8 @@ struct ConcatParamsZeroLength4dMiddle { std::string testcaseName; }; -class ReferenceConcatTestZeroLength4dMiddle : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestZeroLength4dMiddle : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -1397,7 +1527,7 @@ TEST_P(ReferenceConcatTestZeroLength4dMiddle, CompareWithRefs) { template std::vector generateParamsZeroLength4dMiddle() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParamsZeroLength4dMiddle( reference_tests::Tensor(ET, {2, 2, 1, 1}, std::vector{1, 2, 3, 4}), reference_tests::Tensor(ET, {2, 2, 0, 1}, std::vector{0}), @@ -1410,7 +1540,7 @@ std::vector generateParamsZeroLength4dMiddle() { } std::vector generateCombinedParamsZeroLength4dMiddle() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsZeroLength4dMiddle(), generateParamsZeroLength4dMiddle(), generateParamsZeroLength4dMiddle(), @@ -1427,8 +1557,9 @@ std::vector generateCombinedParamsZeroLength4dMi return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestZeroLength4dMiddle, - testing::ValuesIn(generateCombinedParamsZeroLength4dMiddle()), ReferenceConcatTestZeroLength4dMiddle::getTestCaseName); - +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestZeroLength4dMiddle, + testing::ValuesIn(generateCombinedParamsZeroLength4dMiddle()), + ReferenceConcatTestZeroLength4dMiddle::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/constant.cpp b/src/plugins/template/tests/functional/op_reference/constant.cpp index 3f37e4a8e8f7db..ababb046e9c2b6 100644 --- a/src/plugins/template/tests/functional/op_reference/constant.cpp +++ b/src/plugins/template/tests/functional/op_reference/constant.cpp @@ -2,14 +2,16 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/constant.hpp" + #include #include -#include "openvino/op/constant.hpp" -#include "openvino/op/abs.hpp" -#include "openvino/op/equal.hpp" + #include "base_reference_test.hpp" #include "functional_test_utils/skip_tests_config.hpp" +#include "openvino/op/abs.hpp" +#include "openvino/op/equal.hpp" using namespace reference_tests; using namespace ov; @@ -18,8 +20,10 @@ namespace { struct ConstantParams { template ConstantParams(const PartialShape& inputShape, - const element::Type& inType, const element::Type& refType, - const std::vector& inputData, const std::vector& refData, + const element::Type& inType, + const element::Type& refType, + const std::vector& inputData, + const std::vector& refData, const std::string& test_name = "") : inputShape(inputShape), inType(inType), @@ -155,9 +159,11 @@ TEST_P(ReferenceConstantLayerTest_EqualityBool, CompareWithHardcodedRefs) { template std::vector generateConstantParams() { using T = typename element_type_traits::value_type; - std::vector constantParams { + std::vector constantParams{ // tensor_constant - ConstantParams({2, 2, 2}, IN_ET, IN_ET, + ConstantParams({2, 2, 2}, + IN_ET, + IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}, "tensor_constant"), @@ -166,33 +172,41 @@ std::vector generateConstantParams() { } std::vector generateConstantDefinedTypeParams() { - std::vector constantParams { + std::vector constantParams{ // scalar_constant_float32 - ConstantParams({}, element::Type_t::f32, element::Type_t::f32, - std::vector{4.75}, - std::vector{4.75f}, - "scalar_constant_float32"), + ConstantParams({}, + element::Type_t::f32, + element::Type_t::f32, + std::vector{4.75}, + std::vector{4.75f}, + "scalar_constant_float32"), // scalar_constant_int64 - ConstantParams({}, element::Type_t::i64, element::Type_t::i64, - std::vector{0x4000000000000001}, - std::vector{0x4000000000000001}, - "scalar_constant_int64"), + ConstantParams({}, + element::Type_t::i64, + element::Type_t::i64, + std::vector{0x4000000000000001}, + std::vector{0x4000000000000001}, + "scalar_constant_int64"), // tensor_constant_float32 - ConstantParams({2, 2}, element::Type_t::f32, element::Type_t::f32, - std::vector{4.75, 4.5, -5.25, 0.0}, - std::vector{4.75f, 4.5f, -5.25f, 0.0f}, - "tensor_constant_float32"), + ConstantParams({2, 2}, + element::Type_t::f32, + element::Type_t::f32, + std::vector{4.75, 4.5, -5.25, 0.0}, + std::vector{4.75f, 4.5f, -5.25f, 0.0f}, + "tensor_constant_float32"), // tensor_constant_int64 - ConstantParams({2}, element::Type_t::i64, element::Type_t::i64, - std::vector{0x4000000000000001, 0x4000000000000002}, - std::vector{0x4000000000000001, 0x4000000000000002}, - "tensor_constant_int64"), + ConstantParams({2}, + element::Type_t::i64, + element::Type_t::i64, + std::vector{0x4000000000000001, 0x4000000000000002}, + std::vector{0x4000000000000001, 0x4000000000000002}, + "tensor_constant_int64"), }; return constantParams; } std::vector generateConstantCombinedParams() { - const std::vector> constantTypeParams { + const std::vector> constantTypeParams{ generateConstantParams(), generateConstantParams(), generateConstantParams(), @@ -216,7 +230,7 @@ std::vector generateConstantCombinedParams() { } std::vector generateConstant2ConstantCombinedParams() { - const std::vector> constantTypeParams { + const std::vector> constantTypeParams{ generateConstantParams(), generateConstantParams(), generateConstantParams(), @@ -241,9 +255,11 @@ std::vector generateConstant2ConstantCombinedParams() { template std::vector generateConstantWithOpParams() { using T = typename element_type_traits::value_type; - std::vector constantParams { + std::vector constantParams{ // tensor_constant_with_op - ConstantParams({2, 2, 2}, IN_ET, IN_ET, + ConstantParams({2, 2, 2}, + IN_ET, + IN_ET, std::vector{-1, 2, 3, -4, 5, -6, -7, 8}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}, "tensor_constant_with_op"), @@ -252,7 +268,7 @@ std::vector generateConstantWithOpParams() { } std::vector generateConstantWithOpCombinedParams() { - const std::vector> constantTypeParams { + const std::vector> constantTypeParams{ generateConstantWithOpParams(), generateConstantWithOpParams(), generateConstantWithOpParams(), @@ -271,39 +287,53 @@ std::vector generateConstantWithOpCombinedParams() { } std::vector generateConstantDefinedTypeMultiUseCombinedParams() { - const std::vector combinedParams { + const std::vector combinedParams{ // constant_multi_use - ConstantParams({}, element::Type_t::i32, element::Type_t::i32, - std::vector{388}, - std::vector{388}, - "constant_multi_use"), + ConstantParams({}, + element::Type_t::i32, + element::Type_t::i32, + std::vector{388}, + std::vector{388}, + "constant_multi_use"), }; return combinedParams; } std::vector generateConstantDefinedTypeEqualityBoolCombinedParams() { - const std::vector combinedParams { + const std::vector combinedParams{ // constant_equality_bool - ConstantParams({4}, element::Type_t::boolean, element::Type_t::boolean, - std::vector{true, false, true, false}, - std::vector{true, false, true, false}, - "constant_equality_bool"), + ConstantParams({4}, + element::Type_t::boolean, + element::Type_t::boolean, + std::vector{true, false, true, false}, + std::vector{true, false, true, false}, + "constant_equality_bool"), }; return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, ReferenceConstantLayerTest, - testing::ValuesIn(generateConstantCombinedParams()), ReferenceConstantLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, ReferenceConstantLayerTest_2Constant, - testing::ValuesIn(generateConstant2ConstantCombinedParams()), ReferenceConstantLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, ReferenceConstantLayerTest_WithOp, - testing::ValuesIn(generateConstantWithOpCombinedParams()), ReferenceConstantLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, ReferenceConstantLayerTest_MultiUse, - testing::ValuesIn(generateConstantDefinedTypeMultiUseCombinedParams()), ReferenceConstantLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, ReferenceConstantLayerTest_EqualityBool, - testing::ValuesIn(generateConstantDefinedTypeEqualityBoolCombinedParams()), ReferenceConstantLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, + ReferenceConstantLayerTest, + testing::ValuesIn(generateConstantCombinedParams()), + ReferenceConstantLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, + ReferenceConstantLayerTest_2Constant, + testing::ValuesIn(generateConstant2ConstantCombinedParams()), + ReferenceConstantLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, + ReferenceConstantLayerTest_WithOp, + testing::ValuesIn(generateConstantWithOpCombinedParams()), + ReferenceConstantLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, + ReferenceConstantLayerTest_MultiUse, + testing::ValuesIn(generateConstantDefinedTypeMultiUseCombinedParams()), + ReferenceConstantLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, + ReferenceConstantLayerTest_EqualityBool, + testing::ValuesIn(generateConstantDefinedTypeEqualityBoolCombinedParams()), + ReferenceConstantLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/conversion.cpp b/src/plugins/template/tests/functional/op_reference/conversion.cpp index ddb258cda0099e..9c32c7d052c256 100644 --- a/src/plugins/template/tests/functional/op_reference/conversion.cpp +++ b/src/plugins/template/tests/functional/op_reference/conversion.cpp @@ -10,6 +10,6 @@ namespace { TEST_P(ReferenceConversionLayerTest, CompareWithHardcodedRefs) { Exec(); } -} // namespace -} // namespace ConversionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ConversionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/conversion.hpp b/src/plugins/template/tests/functional/op_reference/conversion.hpp index 0f6b324eb7573b..8c97f8dcc41c98 100644 --- a/src/plugins/template/tests/functional/op_reference/conversion.hpp +++ b/src/plugins/template/tests/functional/op_reference/conversion.hpp @@ -17,16 +17,24 @@ namespace ConversionOpsRefTestDefinitions { using ov::test::utils::ConversionTypes; -static std::map conversionNames = { - {ConversionTypes::CONVERT, "Convert"}, - {ConversionTypes::CONVERT_LIKE, "ConvertLike"} -}; +static std::map conversionNames = {{ConversionTypes::CONVERT, "Convert"}, + {ConversionTypes::CONVERT_LIKE, "ConvertLike"}}; struct ConvertParams { template - ConvertParams(ConversionTypes convType, const ov::PartialShape& shape, const ov::element::Type& iType, - const ov::element::Type& oType, const std::vector& iValues, const std::vector& oValues, size_t iSize = 0, size_t oSize = 0) - : conversionType(convType), pshape(shape), inType(iType), outType(oType), inputData(CreateTensor(iType, iValues, iSize)), + ConvertParams(ConversionTypes convType, + const ov::PartialShape& shape, + const ov::element::Type& iType, + const ov::element::Type& oType, + const std::vector& iValues, + const std::vector& oValues, + size_t iSize = 0, + size_t oSize = 0) + : conversionType(convType), + pshape(shape), + inType(iType), + outType(oType), + inputData(CreateTensor(iType, iValues, iSize)), refData(CreateTensor(oType, oValues, oSize)) {} ConversionTypes conversionType; ov::PartialShape pshape; @@ -56,9 +64,10 @@ class ReferenceConversionLayerTest : public testing::TestWithParam CreateFunction(const ov::PartialShape& input_shape, const ov::element::Type& input_type, - const ov::element::Type& expected_output_type, - const ConversionTypes& conversion_type) { + static std::shared_ptr CreateFunction(const ov::PartialShape& input_shape, + const ov::element::Type& input_type, + const ov::element::Type& expected_output_type, + const ConversionTypes& conversion_type) { const auto in = std::make_shared(input_type, input_shape); std::shared_ptr convert; if (conversion_type == ConversionTypes::CONVERT) { @@ -69,8 +78,8 @@ class ReferenceConversionLayerTest : public testing::TestWithParam(ov::NodeVector {convert}, ov::ParameterVector {in}); + return std::make_shared(ov::NodeVector{convert}, ov::ParameterVector{in}); } }; -} // namespace ConversionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ConversionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/convert.cpp b/src/plugins/template/tests/functional/op_reference/convert.cpp index 61eb58ecb40cae..0f3e47148790be 100644 --- a/src/plugins/template/tests/functional/op_reference/convert.cpp +++ b/src/plugins/template/tests/functional/op_reference/convert.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/convert.hpp" + #include + #include -#include "openvino/op/convert.hpp" #include "conversion.hpp" using namespace ov; @@ -15,392 +17,1277 @@ namespace ConversionOpsRefTestDefinitions { namespace { INSTANTIATE_TEST_SUITE_P( - smoke_Conversion_With_Hardcoded_Refs, ReferenceConversionLayerTest, + smoke_Conversion_With_Hardcoded_Refs, + ReferenceConversionLayerTest, ::testing::Values( // destination boolean - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 3}, ov::element::u8, ov::element::boolean, - std::vector {0, 12, 23, 0, std::numeric_limits::lowest(), std::numeric_limits::max()}, - std::vector {0, 1, 1, 0, 0, 1}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 3}, ov::element::i32, ov::element::boolean, - std::vector {0, -12, 23, 0, std::numeric_limits::lowest(), std::numeric_limits::max()}, - std::vector {0, 1, 1, 0, 1, 1}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {3, 3}, ov::element::f32, ov::element::boolean, - std::vector {0.f, 1.5745f, 0.12352f, 0.f, std::numeric_limits::lowest(), std::numeric_limits::max(), - std::numeric_limits::min(), std::numeric_limits::infinity(), -std::numeric_limits::infinity()}, - std::vector {0, 1, 1, 0, 1, 1, 1, 1, 1}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 3}, + ov::element::u8, + ov::element::boolean, + std::vector{0, + 12, + 23, + 0, + std::numeric_limits::lowest(), + std::numeric_limits::max()}, + std::vector{0, 1, 1, 0, 0, 1}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 3}, + ov::element::i32, + ov::element::boolean, + std::vector{0, + -12, + 23, + 0, + std::numeric_limits::lowest(), + std::numeric_limits::max()}, + std::vector{0, 1, 1, 0, 1, 1}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{3, 3}, + ov::element::f32, + ov::element::boolean, + std::vector{0.f, + 1.5745f, + 0.12352f, + 0.f, + std::numeric_limits::lowest(), + std::numeric_limits::max(), + std::numeric_limits::min(), + std::numeric_limits::infinity(), + -std::numeric_limits::infinity()}, + std::vector{0, 1, 1, 0, 1, 1, 1, 1, 1}), // destination bf16 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::bf16, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {11}, ov::element::u8, ov::element::bf16, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), + ConvertParams( + ConversionTypes::CONVERT, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::bf16, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + bfloat16>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{11}, + ov::element::u8, + ov::element::bf16, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), // destination f16 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::f16, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {11}, ov::element::u8, ov::element::f16, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), + ConvertParams( + ConversionTypes::CONVERT, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::f16, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + float16>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{11}, + ov::element::u8, + ov::element::f16, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), // destination f32 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u1, ov::element::f32, std::vector {0xA0}, - std::vector {1.0f, 0.0f, 1.0f, 0.0f}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u4, ov::element::f32, std::vector {0xFB, 0x0A}, - std::vector {15.0f, 11.0f, 0.0f, 10.0f}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u8, ov::element::f32, std::vector {255, 128, 32, 0}, - std::vector {255.0f, 128.0f, 32.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u16, ov::element::f32, - std::vector {64000, 32000, 128, 0}, std::vector {64000.0f, 32000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u32, ov::element::f32, - std::vector {4000000, 2000000, 128, 0}, std::vector {4000000.0f, 2000000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u64, ov::element::f32, - std::vector {4000000, 2000000, 128, 0}, std::vector {4000000.0f, 2000000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::i4, ov::element::f32, std::vector {0xFE, 0xF2}, - std::vector {-1.0f, -2.0f, -1.0f, 2.0f}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::i8, ov::element::f32, std::vector {-127, -0, 0, 127}, - std::vector {-127.0f, -0.0f, 0.0f, 127.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::i16, ov::element::f32, - std::vector {-32000, -0, 0, 32000}, std::vector {-32000.0f, -0.0f, 0.0f, 32000.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::i32, ov::element::f32, - std::vector {-64000, -0, 0, 64000}, std::vector {-64000.0f, -0.0f, 0.0f, 64000.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::i64, ov::element::f32, - std::vector {-64000, -0, 0, 64000}, std::vector {-64000.0f, -0.0f, 0.0f, 64000.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {1, 1, 3, 5}, ov::element::bf16, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {1, 1, 3, 5}, ov::element::f16, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u1, + ov::element::f32, + std::vector{0xA0}, + std::vector{1.0f, 0.0f, 1.0f, 0.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u4, + ov::element::f32, + std::vector{0xFB, 0x0A}, + std::vector{15.0f, 11.0f, 0.0f, 10.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u8, + ov::element::f32, + std::vector{255, 128, 32, 0}, + std::vector{255.0f, 128.0f, 32.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u16, + ov::element::f32, + std::vector{64000, 32000, 128, 0}, + std::vector{64000.0f, 32000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u32, + ov::element::f32, + std::vector{4000000, 2000000, 128, 0}, + std::vector{4000000.0f, 2000000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u64, + ov::element::f32, + std::vector{4000000, 2000000, 128, 0}, + std::vector{4000000.0f, 2000000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::i4, + ov::element::f32, + std::vector{0xFE, 0xF2}, + std::vector{-1.0f, -2.0f, -1.0f, 2.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::i8, + ov::element::f32, + std::vector{-127, -0, 0, 127}, + std::vector{-127.0f, -0.0f, 0.0f, 127.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::i16, + ov::element::f32, + std::vector{-32000, -0, 0, 32000}, + std::vector{-32000.0f, -0.0f, 0.0f, 32000.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::i32, + ov::element::f32, + std::vector{-64000, -0, 0, 64000}, + std::vector{-64000.0f, -0.0f, 0.0f, 64000.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::i64, + ov::element::f32, + std::vector{-64000, -0, 0, 64000}, + std::vector{-64000.0f, -0.0f, 0.0f, 64000.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{1, 1, 3, 5}, + ov::element::bf16, + ov::element::f32, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f16, + ov::element::f32, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}), + ConvertParams( + ConversionTypes::CONVERT, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::f32, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + float>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), // destination i4 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u1, ov::element::i4, std::vector {0xA0}, - std::vector {0x10, 0x10}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::i4, std::vector {0x12, 0x03}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::i4, std::vector {0xFE, 0x03}, - std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::i4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::i4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u1, + ov::element::i4, + std::vector{0xA0}, + std::vector{0x10, 0x10}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i4, + std::vector{0x12, 0x03}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i4, + std::vector{0xFE, 0x03}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), // destination i8 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::i8, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::i8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::i8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::i8, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::i8, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::i8, std::vector {-1, -2, 2.2, 3.8}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i8, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i8, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i8, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i8, + std::vector{-1, -2, 2.2, 3.8}, + std::vector{-1, -2, 2, 3}), // destination i16 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::i16, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::i16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::i16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::i16, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::i16, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::i16, std::vector {-1, -2, 2.2, 3.8}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i16, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i16, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i16, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i16, + std::vector{-1, -2, 2.2, 3.8}, + std::vector{-1, -2, 2, 3}), // destination i32 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::i32, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::i32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::i32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::i32, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::i32, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::i32, std::vector {-1, -2, 2.2, 3.8}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i32, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i32, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i32, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i32, + std::vector{-1, -2, 2.2, 3.8}, + std::vector{-1, -2, 2, 3}), // destination i64 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::i64, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::i64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::i64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::i64, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::i64, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::i64, std::vector {-1, -2, 2.2, 3.8}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i64, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i64, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i64, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i64, + std::vector{-1, -2, 2.2, 3.8}, + std::vector{-1, -2, 2, 3}), // destination u1 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::u1, std::vector {0xA0}, - std::vector {0xA0}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u4, ov::element::u1, - std::vector {0x10, 0x01, 0x00, 0x00}, std::vector {0x90}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u8, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u64, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::i4, ov::element::u1, - std::vector {0x10, 0x01, 0x00, 0x00}, std::vector {0x90}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::i8, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::i16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::i32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::i64, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::f16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::bf16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::f32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u1, + std::vector{0xA0}, + std::vector{0xA0}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u4, + ov::element::u1, + std::vector{0x10, 0x01, 0x00, 0x00}, + std::vector{0x90}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u8, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u64, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::i4, + ov::element::u1, + std::vector{0x10, 0x01, 0x00, 0x00}, + std::vector{0x90}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::i8, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::i16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::i32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::i64, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::f16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::bf16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::f32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), // destination u4 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u1, ov::element::u4, std::vector {0xA0}, - std::vector {0x10, 0x10}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::u4, std::vector {0x12, 0x03}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::u4, std::vector {0xFE, 0x03}, - std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::u4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::u4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u1, + ov::element::u4, + std::vector{0xA0}, + std::vector{0x10, 0x10}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u4, + std::vector{0x12, 0x03}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u4, + std::vector{0xFE, 0x03}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), // destination u8 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::u8, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::u8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::u8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::u8, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::u8, std::vector {1, 2, 2.2, 3.8}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u8, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u8, + std::vector{1, 2, 2.2, 3.8}, + std::vector{1, 2, 2, 3}), // destination u16 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::u16, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::u16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::u16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::u16, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::u16, std::vector {1, 2, 2.2, 3.8}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u16, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u16, + std::vector{1, 2, 2.2, 3.8}, + std::vector{1, 2, 2, 3}), // destination u32 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::u32, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::u32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::u32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::u32, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::u32, std::vector {1, 2, 2.2, 3.8}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u32, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u32, + std::vector{1, 2, 2.2, 3.8}, + std::vector{1, 2, 2, 3}), // destination u64 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::u64, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::u64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::u64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::u64, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::u64, std::vector {1, 2, 2.2, 3.8}, - std::vector {1, 2, 2, 3})), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u64, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u64, + std::vector{1, 2, 2.2, 3.8}, + std::vector{1, 2, 2, 3})), ReferenceConversionLayerTest::getTestCaseName); -} // namespace -} // namespace ConversionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ConversionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/convert_color_i420.cpp b/src/plugins/template/tests/functional/op_reference/convert_color_i420.cpp index 4c21e52eed2316..844fdeb116344c 100644 --- a/src/plugins/template/tests/functional/op_reference/convert_color_i420.cpp +++ b/src/plugins/template/tests/functional/op_reference/convert_color_i420.cpp @@ -5,9 +5,9 @@ #include #include -#include -#include #include +#include +#include #include "base_reference_test.hpp" #include "functional_test_utils/skip_tests_config.hpp" @@ -20,8 +20,8 @@ class ReferenceConvertColorI420LayerTest : public testing::Test, public CommonRe public: void SetUp() override { SKIP_IF_CURRENT_TEST_IS_DISABLED() - abs_threshold = 1.f; // allow R, G, B absolute deviation to 1 (of max 255) - threshold = 1.f; // Ignore relative comparison (100%) + abs_threshold = 1.f; // allow R, G, B absolute deviation to 1 (of max 255) + threshold = 1.f; // Ignore relative comparison (100%) } public: @@ -31,28 +31,28 @@ class ReferenceConvertColorI420LayerTest : public testing::Test, public CommonRe std::shared_ptr conv; conv = std::make_shared(in); auto res = std::make_shared(conv); - return std::make_shared(ResultVector{res}, ParameterVector {in}); + return std::make_shared(ResultVector{res}, ParameterVector{in}); } template - static std::shared_ptr CreateFunction3(const reference_tests::Tensor& input1, const reference_tests::Tensor& input2, const reference_tests::Tensor& input3) { + static std::shared_ptr CreateFunction3(const reference_tests::Tensor& input1, + const reference_tests::Tensor& input2, + const reference_tests::Tensor& input3) { const auto in1 = std::make_shared(input1.type, input1.shape); const auto in2 = std::make_shared(input2.type, input2.shape); const auto in3 = std::make_shared(input3.type, input3.shape); std::shared_ptr conv; conv = std::make_shared(in1, in2, in3); auto res = std::make_shared(conv); - return std::make_shared(ResultVector{res}, ParameterVector {in1, in2, in3}); + return std::make_shared(ResultVector{res}, ParameterVector{in1, in2, in3}); } }; TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_r_u8_single_rgb) { - auto input = std::vector {0x51, 0x51, 0x51, 0x51, - 0x51, 0x51, 0x51, 0x51, - 0x5a, 0x5a, 0xf0, 0xf0}; + auto input = std::vector{0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x5a, 0x5a, 0xf0, 0xf0}; auto input_shape = Shape{1, 3, 4, 1}; - auto exp_out = std::vector {0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, - 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0}; + auto exp_out = std::vector{0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, + 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0}; auto out_shape = Shape{1, 2, 4, 3}; reference_tests::Tensor inp_tensor(input_shape, element::u8, input); inputData = {inp_tensor.data}; @@ -63,12 +63,10 @@ TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_r_u8_single_ } TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_color_u8_single_bgr) { - auto input = std::vector {0x51, 0xeb, 0x51, 0xeb, - 0x51, 0xeb, 0x51, 0xeb, - 0x6d, 0x6d, 0xb8, 0xb8}; + auto input = std::vector{0x51, 0xeb, 0x51, 0xeb, 0x51, 0xeb, 0x51, 0xeb, 0x6d, 0x6d, 0xb8, 0xb8}; auto input_shape = Shape{1, 6, 2, 1}; - auto exp_out = std::vector {37, 37, 164, 217, 216, 255, 37, 37, 164, 217, 216, 255, - 37, 37, 164, 217, 216, 255, 37, 37, 164, 217, 216, 255}; + auto exp_out = std::vector{37, 37, 164, 217, 216, 255, 37, 37, 164, 217, 216, 255, + 37, 37, 164, 217, 216, 255, 37, 37, 164, 217, 216, 255}; auto out_shape = Shape{1, 4, 2, 3}; reference_tests::Tensor inp_tensor(input_shape, element::u8, input); @@ -83,12 +81,10 @@ TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_color_u8_sin } TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_g_fp32_single_rgb) { - auto input = std::vector {145.f, 145.f, 145.f, 145.f, - 145.f, 145.f, 145.f, 145.f, - 54.f, 54.f, 34.f, 34.f}; + auto input = std::vector{145.f, 145.f, 145.f, 145.f, 145.f, 145.f, 145.f, 145.f, 54.f, 54.f, 34.f, 34.f}; auto input_shape = Shape{1, 3, 4, 1}; - auto exp_out = std::vector {0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, - 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0}; + auto exp_out = std::vector{0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, + 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0}; auto out_shape = Shape{1, 2, 4, 3}; reference_tests::Tensor inp_tensor(input_shape, element::f32, input); @@ -103,23 +99,17 @@ TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_g_fp32_singl } TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_batch_fp32_three_bgr) { - auto input_y = std::vector {81.f, 81.f, 81.f, 81.f, - 145.f, 145.f, 145.f, 145.f, - 41.f, 41.f, 41.f, 41.f}; + auto input_y = std::vector{81.f, 81.f, 81.f, 81.f, 145.f, 145.f, 145.f, 145.f, 41.f, 41.f, 41.f, 41.f}; auto input_shape_y = Shape{3, 2, 2, 1}; - auto input_u = std::vector {90., - 54., - 240.}; + auto input_u = std::vector{90., 54., 240.}; auto input_shape_u = Shape{3, 1, 1, 1}; - auto input_v = std::vector {240., - 34., - 110.}; + auto input_v = std::vector{240., 34., 110.}; auto input_shape_v = Shape{3, 1, 1, 1}; - auto exp_out = std::vector {0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., - 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, - 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0}; + auto exp_out = + std::vector{0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 255., 0, 0, 255., 0, + 0, 255., 0, 0, 255., 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0}; auto out_shape = Shape{3, 2, 2, 3}; reference_tests::Tensor inp_tensor_y(input_shape_y, element::f32, input_y); @@ -136,25 +126,17 @@ TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_batch_fp32_t } TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_color4x4_f32_three_rgb) { - auto input_y = std::vector {81, 235, - 81, 235, - 81, 81, - 81, 81, - 145, 145, - 145, 145, - 41, 41, - 41, 41}; + auto input_y = std::vector{81, 235, 81, 235, 81, 81, 81, 81, 145, 145, 145, 145, 41, 41, 41, 41}; auto input_shape_y = Shape{1, 8, 2, 1}; - auto input_u = std::vector {109, 90, 54, 240}; + auto input_u = std::vector{109, 90, 54, 240}; auto input_shape_u = Shape{1, 4, 1, 1}; - auto input_v = std::vector {184, 240, 34, 110}; + auto input_v = std::vector{184, 240, 34, 110}; auto input_shape_v = Shape{1, 4, 1, 1}; - auto exp_out = std::vector {165, 37, 37, 255, 216, 217, 165, 37, 37, 255, 216, 217, - 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, - 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, - 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255}; + auto exp_out = std::vector{165, 37, 37, 255, 216, 217, 165, 37, 37, 255, 216, 217, 255, 0, 0, 255, + 0, 0, 255, 0, 0, 255, 0, 0, 0, 255, 0, 0, 255, 0, 0, 255, + 0, 0, 255, 0, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255}; auto out_shape = Shape{1, 2, 2, 3}; reference_tests::Tensor inp_tensor_y(input_shape_y, element::f32, input_y); diff --git a/src/plugins/template/tests/functional/op_reference/convert_color_nv12.cpp b/src/plugins/template/tests/functional/op_reference/convert_color_nv12.cpp index 2eb13749da0b51..26d9c31bae3f1e 100644 --- a/src/plugins/template/tests/functional/op_reference/convert_color_nv12.cpp +++ b/src/plugins/template/tests/functional/op_reference/convert_color_nv12.cpp @@ -5,9 +5,9 @@ #include #include -#include -#include #include +#include +#include #include "base_reference_test.hpp" #include "functional_test_utils/skip_tests_config.hpp" @@ -20,8 +20,8 @@ class ReferenceConvertColorNV12LayerTest : public testing::Test, public CommonRe public: void SetUp() override { SKIP_IF_CURRENT_TEST_IS_DISABLED() - abs_threshold = 2.f; // allow R, G, B absolute deviation to 2 (of max 255) - threshold = 1.f; // Ignore relative comparison (100%) + abs_threshold = 2.f; // allow R, G, B absolute deviation to 2 (of max 255) + threshold = 1.f; // Ignore relative comparison (100%) } public: @@ -31,24 +31,25 @@ class ReferenceConvertColorNV12LayerTest : public testing::Test, public CommonRe std::shared_ptr conv; conv = std::make_shared(in); auto res = std::make_shared(conv); - return std::make_shared(ResultVector{res}, ParameterVector {in}); + return std::make_shared(ResultVector{res}, ParameterVector{in}); } template - static std::shared_ptr CreateFunction2(const reference_tests::Tensor& input1, const reference_tests::Tensor& input2) { + static std::shared_ptr CreateFunction2(const reference_tests::Tensor& input1, + const reference_tests::Tensor& input2) { const auto in1 = std::make_shared(input1.type, input1.shape); const auto in2 = std::make_shared(input2.type, input2.shape); std::shared_ptr conv; conv = std::make_shared(in1, in2); auto res = std::make_shared(conv); - return std::make_shared(ResultVector{res}, ParameterVector {in1, in2}); + return std::make_shared(ResultVector{res}, ParameterVector{in1, in2}); } }; TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_r_u8_single_rgb) { - auto input = std::vector {0x51, 0x51, 0x51, 0x51, 0x5a, 0xf0}; + auto input = std::vector{0x51, 0x51, 0x51, 0x51, 0x5a, 0xf0}; auto input_shape = Shape{1, 3, 2, 1}; - auto exp_out = std::vector {0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0}; + auto exp_out = std::vector{0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0}; auto out_shape = Shape{1, 2, 2, 3}; reference_tests::Tensor inp_tensor(input_shape, element::u8, input); inputData = {inp_tensor.data}; @@ -59,9 +60,9 @@ TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_r_u8_single_ } TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_color_u8_single_bgr) { - auto input = std::vector {0x51, 0xeb, 0x51, 0xeb, 0x6d, 0xb8}; + auto input = std::vector{0x51, 0xeb, 0x51, 0xeb, 0x6d, 0xb8}; auto input_shape = Shape{1, 3, 2, 1}; - auto exp_out = std::vector {37, 37, 164, 215, 216, 255, 37, 37, 164, 215, 216, 255}; + auto exp_out = std::vector{37, 37, 164, 215, 216, 255, 37, 37, 164, 215, 216, 255}; auto out_shape = Shape{1, 2, 2, 3}; reference_tests::Tensor inp_tensor(input_shape, element::u8, input); @@ -76,9 +77,9 @@ TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_color_u8_sin } TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_g_fp32_single_rgb) { - auto input = std::vector {145.f, 145.f, 145.f, 145.f, 54.f, 34.f}; + auto input = std::vector{145.f, 145.f, 145.f, 145.f, 54.f, 34.f}; auto input_shape = Shape{1, 3, 2, 1}; - auto exp_out = std::vector {0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0}; + auto exp_out = std::vector{0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0}; auto out_shape = Shape{1, 2, 2, 3}; reference_tests::Tensor inp_tensor(input_shape, element::f32, input); @@ -93,19 +94,15 @@ TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_g_fp32_singl } TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_batch_fp32_two_bgr) { - auto input_y = std::vector {81.f, 81.f, 81.f, 81.f, - 145.f, 145.f, 145.f, 145.f, - 41.f, 41.f, 41.f, 41.f}; + auto input_y = std::vector{81.f, 81.f, 81.f, 81.f, 145.f, 145.f, 145.f, 145.f, 41.f, 41.f, 41.f, 41.f}; auto input_shape_y = Shape{3, 2, 2, 1}; - auto input_uv = std::vector {90., 240., - 54., 34., - 240., 110.}; + auto input_uv = std::vector{90., 240., 54., 34., 240., 110.}; auto input_shape_uv = Shape{3, 1, 1, 2}; - auto exp_out = std::vector {0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., - 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, - 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0}; + auto exp_out = + std::vector{0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 255., 0, 0, 255., 0, + 0, 255., 0, 0, 255., 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0}; auto out_shape = Shape{3, 2, 2, 3}; reference_tests::Tensor inp_tensor_y(input_shape_y, element::f32, input_y); @@ -121,13 +118,13 @@ TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_batch_fp32_t } TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_color2x2_f32_two_rgb) { - auto input_y = std::vector {81, 235, 81, 235}; + auto input_y = std::vector{81, 235, 81, 235}; auto input_shape_y = Shape{1, 2, 2, 1}; - auto input_uv = std::vector {109, 184}; + auto input_uv = std::vector{109, 184}; auto input_shape_uv = Shape{1, 1, 1, 2}; - auto exp_out = std::vector {164, 37, 37, 255, 216, 215, 164, 37, 37, 255, 216, 215}; + auto exp_out = std::vector{164, 37, 37, 255, 216, 215, 164, 37, 37, 255, 216, 215}; auto out_shape = Shape{1, 2, 2, 3}; reference_tests::Tensor inp_tensor_y(input_shape_y, element::f32, input_y); diff --git a/src/plugins/template/tests/functional/op_reference/convert_like.cpp b/src/plugins/template/tests/functional/op_reference/convert_like.cpp index 3ff098e4e14306..b46fe98af030c2 100644 --- a/src/plugins/template/tests/functional/op_reference/convert_like.cpp +++ b/src/plugins/template/tests/functional/op_reference/convert_like.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/convert_like.hpp" + #include -#include "openvino/op/convert_like.hpp" #include "conversion.hpp" using namespace ov; @@ -14,393 +15,1277 @@ namespace ConversionOpsRefTestDefinitions { namespace { INSTANTIATE_TEST_SUITE_P( - smoke_Conversion_With_Hardcoded_Refs, ReferenceConversionLayerTest, + smoke_Conversion_With_Hardcoded_Refs, + ReferenceConversionLayerTest, ::testing::Values( // destination boolean - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 3}, ov::element::u8, ov::element::boolean, - std::vector {0, 12, 23, 0, std::numeric_limits::lowest(), std::numeric_limits::max()}, - std::vector {0, 1, 1, 0, 0, 1}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 3}, ov::element::i32, ov::element::boolean, - std::vector {0, -12, 23, 0, std::numeric_limits::lowest(), std::numeric_limits::max()}, - std::vector {0, 1, 1, 0, 1, 1}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {3, 3}, ov::element::f32, ov::element::boolean, - std::vector {0.f, 1.5745f, 0.12352f, 0.f, std::numeric_limits::lowest(), std::numeric_limits::max(), - std::numeric_limits::min(), std::numeric_limits::infinity(), -std::numeric_limits::infinity()}, - std::vector {0, 1, 1, 0, 1, 1, 1, 1, 1}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 3}, + ov::element::u8, + ov::element::boolean, + std::vector{0, + 12, + 23, + 0, + std::numeric_limits::lowest(), + std::numeric_limits::max()}, + std::vector{0, 1, 1, 0, 0, 1}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 3}, + ov::element::i32, + ov::element::boolean, + std::vector{0, + -12, + 23, + 0, + std::numeric_limits::lowest(), + std::numeric_limits::max()}, + std::vector{0, 1, 1, 0, 1, 1}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{3, 3}, + ov::element::f32, + ov::element::boolean, + std::vector{0.f, + 1.5745f, + 0.12352f, + 0.f, + std::numeric_limits::lowest(), + std::numeric_limits::max(), + std::numeric_limits::min(), + std::numeric_limits::infinity(), + -std::numeric_limits::infinity()}, + std::vector{0, 1, 1, 0, 1, 1, 1, 1, 1}), // destination bf16 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::bf16, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {11}, ov::element::u8, ov::element::bf16, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), + ConvertParams( + ConversionTypes::CONVERT_LIKE, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::bf16, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + bfloat16>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{11}, + ov::element::u8, + ov::element::bf16, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), // destination f16 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::f16, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {11}, ov::element::u8, ov::element::f16, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), + ConvertParams( + ConversionTypes::CONVERT_LIKE, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::f16, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + float16>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{11}, + ov::element::u8, + ov::element::f16, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), // destination f32 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u1, ov::element::f32, - std::vector {0xA0}, std::vector {1.0f, 0.0f, 1.0f, 0.0f}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u4, ov::element::f32, - std::vector {0xFB, 0x0A}, std::vector {15.0f, 11.0f, 0.0f, 10.0f}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u8, ov::element::f32, - std::vector {255, 128, 32, 0}, std::vector {255.0f, 128.0f, 32.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u16, ov::element::f32, - std::vector {64000, 32000, 128, 0}, std::vector {64000.0f, 32000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u32, ov::element::f32, - std::vector {4000000, 2000000, 128, 0}, std::vector {4000000.0f, 2000000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u64, ov::element::f32, - std::vector {4000000, 2000000, 128, 0}, std::vector {4000000.0f, 2000000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::i4, ov::element::f32, - std::vector {0xFE, 0xF2}, std::vector {-1.0f, -2.0f, -1.0f, 2.0f}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::i8, ov::element::f32, - std::vector {-127, -0, 0, 127}, std::vector {-127.0f, -0.0f, 0.0f, 127.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::i16, ov::element::f32, - std::vector {-32000, -0, 0, 32000}, std::vector {-32000.0f, -0.0f, 0.0f, 32000.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::i32, ov::element::f32, - std::vector {-64000, -0, 0, 64000}, std::vector {-64000.0f, -0.0f, 0.0f, 64000.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::i64, ov::element::f32, - std::vector {-64000, -0, 0, 64000}, std::vector {-64000.0f, -0.0f, 0.0f, 64000.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {1, 1, 3, 5}, ov::element::bf16, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {1, 1, 3, 5}, ov::element::f16, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u1, + ov::element::f32, + std::vector{0xA0}, + std::vector{1.0f, 0.0f, 1.0f, 0.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u4, + ov::element::f32, + std::vector{0xFB, 0x0A}, + std::vector{15.0f, 11.0f, 0.0f, 10.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u8, + ov::element::f32, + std::vector{255, 128, 32, 0}, + std::vector{255.0f, 128.0f, 32.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u16, + ov::element::f32, + std::vector{64000, 32000, 128, 0}, + std::vector{64000.0f, 32000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u32, + ov::element::f32, + std::vector{4000000, 2000000, 128, 0}, + std::vector{4000000.0f, 2000000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u64, + ov::element::f32, + std::vector{4000000, 2000000, 128, 0}, + std::vector{4000000.0f, 2000000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::i4, + ov::element::f32, + std::vector{0xFE, 0xF2}, + std::vector{-1.0f, -2.0f, -1.0f, 2.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::i8, + ov::element::f32, + std::vector{-127, -0, 0, 127}, + std::vector{-127.0f, -0.0f, 0.0f, 127.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::i16, + ov::element::f32, + std::vector{-32000, -0, 0, 32000}, + std::vector{-32000.0f, -0.0f, 0.0f, 32000.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::i32, + ov::element::f32, + std::vector{-64000, -0, 0, 64000}, + std::vector{-64000.0f, -0.0f, 0.0f, 64000.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::i64, + ov::element::f32, + std::vector{-64000, -0, 0, 64000}, + std::vector{-64000.0f, -0.0f, 0.0f, 64000.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{1, 1, 3, 5}, + ov::element::bf16, + ov::element::f32, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f16, + ov::element::f32, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}), + ConvertParams( + ConversionTypes::CONVERT_LIKE, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::f32, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + float>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), // destination i4 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u1, ov::element::i4, std::vector {0xA0}, - std::vector {0x10, 0x10}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::i4, std::vector {0x12, 0x03}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::i4, std::vector {0xFE, 0x03}, - std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::i4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::i4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u1, + ov::element::i4, + std::vector{0xA0}, + std::vector{0x10, 0x10}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i4, + std::vector{0x12, 0x03}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i4, + std::vector{0xFE, 0x03}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), // destination i8 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::i8, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::i8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::i8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::i8, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::i8, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i8, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i8, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i8, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), // destination i16 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::i16, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::i16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::i16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::i16, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::i16, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i16, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i16, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i16, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), // destination i32 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::i32, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::i32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::i32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::i32, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::i32, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i32, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i32, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i32, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), // destination i64 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::i64, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::i64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::i64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::i64, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::i64, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i64, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i64, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i64, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), // destination u1 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::u1, std::vector {0xA0}, - std::vector {0xA0}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u4, ov::element::u1, - std::vector {0x10, 0x01, 0x00, 0x00}, std::vector {0x90}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u8, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u64, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::i4, ov::element::u1, - std::vector {0x10, 0x01, 0x00, 0x00}, std::vector {0x90}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::i8, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::i16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::i32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::i64, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::f16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::bf16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::f32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u1, + std::vector{0xA0}, + std::vector{0xA0}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u4, + ov::element::u1, + std::vector{0x10, 0x01, 0x00, 0x00}, + std::vector{0x90}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u8, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u64, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::i4, + ov::element::u1, + std::vector{0x10, 0x01, 0x00, 0x00}, + std::vector{0x90}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::i8, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::i16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::i32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::i64, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::f16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::bf16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::f32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), // destination u4 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u1, ov::element::u4, std::vector {0xA0}, - std::vector {0x10, 0x10}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::u4, std::vector {0x12, 0x03}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::u4, std::vector {0xFE, 0x03}, - std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::u4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::u4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u1, + ov::element::u4, + std::vector{0xA0}, + std::vector{0x10, 0x10}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u4, + std::vector{0x12, 0x03}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u4, + std::vector{0xFE, 0x03}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), // destination u8 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::u8, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::u8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::u8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::u8, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::u8, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u8, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), // destination u16 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::u16, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::u16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::u16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::u16, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::u16, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u16, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), // destination u32 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::u32, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::u32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::u32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::u32, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::u32, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u32, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), // destination u64 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::u64, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::u64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::u64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::u64, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::u64, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3})), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u64, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3})), ReferenceConversionLayerTest::getTestCaseName); -} // namespace -} // namespace ConversionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ConversionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/convolution.cpp b/src/plugins/template/tests/functional/op_reference/convolution.cpp index 055921abe53c5b..64f4a5f82752e1 100644 --- a/src/plugins/template/tests/functional/op_reference/convolution.cpp +++ b/src/plugins/template/tests/functional/op_reference/convolution.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/convolution.hpp" + #include -#include "openvino/op/convolution.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,10 +14,17 @@ using namespace ov; namespace { struct ConvolutionParams { template - ConvolutionParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, + ConvolutionParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations) + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -32,10 +40,17 @@ struct ConvolutionParams { dialations(dialations) {} template - ConvolutionParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, + ConvolutionParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations, const bool convolutionOutlining) : inputShape(inputShape), filterShape(filterShape), @@ -109,15 +124,15 @@ class ReferenceConvolutionLayerTest : public testing::TestWithParam(Convolution, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad); - return std::make_shared(NodeVector {Convolution2}, ParameterVector {in, filter}); + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad); + return std::make_shared(NodeVector{Convolution2}, ParameterVector{in, filter}); } else { - return std::make_shared(NodeVector {Convolution}, ParameterVector {in, filter}); + return std::make_shared(NodeVector{Convolution}, ParameterVector{in, filter}); } } }; @@ -130,9 +145,9 @@ template std::vector generateConvolutionI8Params() { using T = typename element_type_traits::value_type; - std::vector convolutionParams { -// --------------------- 1D convolution ------------------------------------------ -// clang-format off + std::vector convolutionParams{ + // --------------------- 1D convolution ------------------------------------------ + // clang-format off ConvolutionParams(PartialShape {1, 1, 6}, PartialShape {1, 1, 3}, PartialShape {1, 1, 4}, @@ -1069,12 +1084,11 @@ std::vector generateConvolutionFloatParams() { // clang-format on std::vector generateConvolutionCombinedParams() { - const std::vector> convolutionTypeParams { + const std::vector> convolutionTypeParams{ generateConvolutionFloatParams(), generateConvolutionFloatParams(), generateConvolutionFloatParams(), - generateConvolutionI8Params() - }; + generateConvolutionI8Params()}; std::vector combinedParams; for (const auto& params : convolutionTypeParams) { @@ -1083,7 +1097,9 @@ std::vector generateConvolutionCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Convolution_With_Hardcoded_Refs, ReferenceConvolutionLayerTest, - testing::ValuesIn(generateConvolutionCombinedParams()), ReferenceConvolutionLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Convolution_With_Hardcoded_Refs, + ReferenceConvolutionLayerTest, + testing::ValuesIn(generateConvolutionCombinedParams()), + ReferenceConvolutionLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/convolution_backprop.cpp b/src/plugins/template/tests/functional/op_reference/convolution_backprop.cpp index 9a58949a903781..adddcb5824c0ce 100644 --- a/src/plugins/template/tests/functional/op_reference/convolution_backprop.cpp +++ b/src/plugins/template/tests/functional/op_reference/convolution_backprop.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/convolution.hpp" #include "base_reference_test.hpp" +#include "openvino/op/convolution.hpp" using namespace reference_tests; using namespace ov; @@ -13,10 +13,17 @@ using namespace ov; namespace { struct ConvolutionBackpropParams { template - ConvolutionBackpropParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations) + ConvolutionBackpropParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -32,11 +39,18 @@ struct ConvolutionBackpropParams { dialations(dialations) {} template - ConvolutionBackpropParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations, - const CoordinateDiff& outPadding) + ConvolutionBackpropParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations, + const CoordinateDiff& outPadding) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -68,7 +82,8 @@ struct ConvolutionBackpropParams { ov::CoordinateDiff outPadding; }; -class ReferenceConvolutionBackpropLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConvolutionBackpropLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -99,15 +114,15 @@ class ReferenceConvolutionBackpropLayerTest : public testing::TestWithParam(params.inType, params.inputShape); const auto filter = std::make_shared(params.inType, params.filterShape); const auto ConvolutionBackprop = std::make_shared(in, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad, - params.outPadding); + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad, + params.outPadding); - return std::make_shared(NodeVector {ConvolutionBackprop}, ParameterVector {in, filter}); + return std::make_shared(NodeVector{ConvolutionBackprop}, ParameterVector{in, filter}); } }; @@ -119,953 +134,2015 @@ template std::vector generateConvolutionBackpropFloatParams() { using T = typename element_type_traits::value_type; - std::vector convolutionBackpropParams { -// --------------------- 1D ConvolutionBackprop ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 6}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{10, 12, 19, 10, 7, 2}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{12, 19, 10, 7}, - {1}, - {1}, - {1}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 5}, - IN_ET, - std::vector{5, 7}, - std::vector{2, 0, 1}, - std::vector{10, 0, 19, 0, 7}, - {2}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 5}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{12, 19, 10, 7, 2}, - {1}, - {1}, - {1}, - {1}, - {1}), - ConvolutionBackpropParams(PartialShape {1, 1, 3}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 7}, - IN_ET, - std::vector{8, 5, 1}, - std::vector{2, 0, 1}, - std::vector{16, 10, 2, 0, 8, 5, 1}, - {1}, - {0}, - {0}, - {2}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 7}, - IN_ET, - std::vector{3, 9, 1, 2}, - std::vector{2, 0, 1}, - std::vector{18, 0, 5, 0, 13, 0, 1}, - {2}, - {2}, - {2}, - {2}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2}, - PartialShape {1, 2, 3}, - PartialShape {1, 2, 4}, - IN_ET, - std::vector{10, 3}, - std::vector{ - // channel 1 - 2, 0, 1, - // channel 2 - 1, 0, 2}, - std::vector{ - // channel 1 - 20, 6, 10, 3, - // channel 2 - 10, 3, 20, 6}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 2, 2}, - PartialShape {2, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{ - // channel 1 - 4, 7, - // channel 2 - 5, 5}, - std::vector{ - // filter 1 - 2, 0, 1, - // filter 2 - 1, 0, 2}, - std::vector{13, 19, 14, 17}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {2, 1, 2}, - PartialShape {1, 1, 3}, - PartialShape {2, 1, 4}, - IN_ET, - std::vector{ - // batch 1 - 1, 3, - // batch 2 - 2, 2}, - std::vector{2, 0, 1}, - std::vector{ - // batch 1 - 2, 6, 1, 3, - // batch 2 - 4, 4, 2, 2}, - {1}, - {0}, - {0}, - {1}, - {0}), -// --------------------- 2D ConvolutionBackprop ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, - 7, 5}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 3, 2, 1}, - std::vector{ - 1, 5, 9, 9, - 7, 20, 34, 15, - 3, 18, 12, 3, - 21, 29, 17, 5}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 3, - 7, 5}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 23, 35, 18, - 23, 19, 8, - 29, 17, 5}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, 7, - 7, 5, 3, 1, - 2, 4, 6, 8, - 8, 6, 4, 2}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - 20, 37, 27, 18, - 22, 40, 60, 52, - 41, 69, 49, 31, - 18, 26, 34, 22}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 5, 5}, - IN_ET, - std::vector{ - 2, 5, - 4, 3}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 2, 4, 11, 10, 15, - 2, 2, 7, 5, 5, - 10, 12, 32, 16, 14, - 4, 4, 7, 3, 3, - 12, 8, 13, 6, 3}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 6, 6}, - IN_ET, - std::vector{ - 2, 3, - 4, 3}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 2, 3, 4, 6, 6, 9, - 4, 3, 8, 6, 12, 9, - 2, 3, 2, 3, 2, 3, - 4, 3, 4, 3, 4, 3, - 6, 9, 4, 6, 2, 3, - 12, 9, 8, 6, 4, 3}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 5, 5}, - IN_ET, - std::vector{ - 1, 3, 5, - 7, 5, 3, - 2, 4, 6}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 23, 0, 43, 0, 29, - 0, 0, 0, 0, 0, - 31, 0, 57, 0, 45, - 0, 0, 0, 0, 0, - 35, 0, 38, 0, 21}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 2, 4, 4}, - IN_ET, - std::vector{ - 1, 3, - 7, 5}, - std::vector{ - // channel 1 - 5, 3, 5, - 1, 3, 1, - 4, 2, 4, - // channel 2 - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - // channel 1 - 5, 18, 14, 15, - 36, 52, 60, 28, - 11, 40, 32, 17, - 28, 34, 38, 20, - // channel 2 - -5, -12, 14, 15, - -34, -4, 42, 28, - 11, -2, -6, -7, - 28, 34, -18, -20}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 2, 2, 2}, - PartialShape {2, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - // channel 1 - 1, 3, - 7, 5, - // channel 2 - 2, 4, - 8, 6}, - std::vector{ - // channel 1 - 5, 3, 5, - 1, 3, 1, - 4, 2, 4, - // channel 2 - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - -5, 4, 36, 35, - -2, 44, 108, 62, - 27, 42, 22, 7, - 60, 74, 18, -4}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 2, 1, 1}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 2, - // channel 2 - 3}, - std::vector{ - // batch 0 - // channel 1 - 5, 3, - 1, 3, - // channel 2 - -5, 3, - 1, -3, - // batch 1 - // channel 1 - 5, 3, - 1, 3, - // channel 2 - -5, 3, - 1, -3}, - std::vector{ - 25, 15, 5, 15, -25, 15, 5, -15}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {2, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {2, 1, 4, 4}, - IN_ET, - std::vector{ - // batch 1 - 1, 3, - 1, 3, - // batch 2 - -1, 3, - 1, 3}, - std::vector{ - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - // batch 1 - -5, -12, 14, 15, - -4, -12, 6, 18, - 5, 14, -6, -9, - 4, 14, 2, -12, - // batch 2 - 5, -18, 4, 15, - -6, -6, 4, 18, - -3, 10, 2, -9, - 4, 14, 2, -12}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), -// --------------------- 3D convolution ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2, 2}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // depth: 1 - 15, 3, - 21, 10, - // depth: 2 - 10, 13, - 11, 17}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 15, 33, 51, 9, - 21, 67, 86, 30, - 30, 42, 43, 6, - 42, 41, 52, 20, - // depth: 2 - 25, 66, 107, 48, - 32, 116, 166, 81, - 50, 89, 93, 32, - 64, 86, 91, 54, - // depth: 3 - 25, 66, 107, 48, - 32, 116, 166, 81, - 50, 89, 93, 32, - 64, 86, 91, 54, - // depth: 4 - 10, 33, 56, 39, - 11, 49, 80, 51, - 20, 47, 50, 26, - 22, 45, 39, 34}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2, 2}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 3, 3, 3}, - IN_ET, - std::vector{ - // depth: 1 - 15, 3, - 21, 10, - // depth: 2 - 10, 13, - 11, 17}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 116, 166, 81, - 89, 93, 32, - 86, 91, 54, - // depth: 2 - 116, 166, 81, - 89, 93, 32, - 86, 91, 54, - // depth: 3 - 49, 80, 51, - 47, 50, 26, - 45, 39, 34}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}), - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4, 4}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // depth: 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 2 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 3 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 4 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 12, 30, 36, 24, - 26, 42, 42, 30, - 34, 56, 54, 50, - 14, 18, 24, 16, - // depth: 2 - 18, 45, 54, 36, - 39, 63, 63, 45, - 51, 84, 81, 75, - 21, 27, 36, 24, - // depth: 3 - 18, 45, 54, 36, - 39, 63, 63, 45, - 51, 84, 81, 75, - 21, 27, 36, 24, - // depth: 4 - 12, 30, 36, 24, - 26, 42, 42, 30, - 34, 56, 54, 50, - 14, 18, 24, 16}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2, 2}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 5, 5, 5}, - IN_ET, - std::vector{ - // depth: 1 - 15, 3, - 21, 10, - // depth: 2 - 10, 13, - 11, 17}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 15, 30, 48, 6, 9, - 0, 15, 0, 3, 0, - 51, 57, 109, 23, 36, - 0, 21, 0, 10, 0, - 42, 21, 62, 10, 20, - // depth: 2 - 15, 30, 48, 6, 9, - 0, 15, 0, 3, 0, - 51, 57, 109, 23, 36, - 0, 21, 0, 10, 0, - 42, 21, 62, 10, 20, - // depth: 3 - 25, 50, 91, 32, 48, - 0, 25, 0, 16, 0, - 82, 89, 205, 70, 113, - 0, 32, 0, 27, 0, - 64, 32, 118, 27, 54, - // depth: 4 - 10, 20, 43, 26, 39, - 0, 10, 0, 13, 0, - 31, 32, 96, 47, 77, - 0, 11, 0, 17, 0, - 22, 11, 56, 17, 34, - // depth: 5 - 10, 20, 43, 26, 39, - 0, 10, 0, 13, 0, - 31, 32, 96, 47, 77, - 0, 11, 0, 17, 0, - 22, 11, 56, 17, 34}, - {2, 2, 2}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4, 4}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 7, 7, 7}, - IN_ET, - std::vector{ - // depth: 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 2 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 3 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 4 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 12, 0, 30, 0, 36, 0, 24, - 0, 0, 0, 0, 0, 0, 0, - 26, 0, 42, 0, 42, 0, 30, - 0, 0, 0, 0, 0, 0, 0, - 34, 0, 56, 0, 54, 0, 50, - 0, 0, 0, 0, 0, 0, 0, - 14, 0, 18, 0, 24, 0, 16, - // depth: 2 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 3 - 18, 0, 45, 0, 54, 0, 36, - 0, 0, 0, 0, 0, 0, 0, - 39, 0, 63, 0, 63, 0, 45, - 0, 0, 0, 0, 0, 0, 0, - 51, 0, 84, 0, 81, 0, 75, - 0, 0, 0, 0, 0, 0, 0, - 21, 0, 27, 0, 36, 0, 24, - // depth: 4 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 5 - 18, 0, 45, 0, 54, 0, 36, - 0, 0, 0, 0, 0, 0, 0, - 39, 0, 63, 0, 63, 0, 45, - 0, 0, 0, 0, 0, 0, 0, - 51, 0, 84, 0, 81, 0, 75, - 0, 0, 0, 0, 0, 0, 0, - 21, 0, 27, 0, 36, 0, 24, - // depth: 6 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 7 - 12, 0, 30, 0, 36, 0, 24, - 0, 0, 0, 0, 0, 0, 0, - 26, 0, 42, 0, 42, 0, 30, - 0, 0, 0, 0, 0, 0, 0, - 34, 0, 56, 0, 54, 0, 50, - 0, 0, 0, 0, 0, 0, 0, - 14, 0, 18, 0, 24, 0, 16}, - {2, 2, 2}, - {2, 2, 2}, - {2, 2, 2}, - {2, 2, 2}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2, 2}, - PartialShape {1, 2, 3, 3, 3}, - PartialShape {1, 2, 4, 4, 4}, - IN_ET, - std::vector{ - // depth: 1 - 1, 8, - 1, 3, - // depth: 2 - 1, 7, - 3, 8}, - std::vector{ - // -- channel 1 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // -- channel 2 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // -- channel 1 -- - // depth: 1 - 1, 10, 19, 24, - 1, 6, 17, 9, - 2, 18, 13, 16, - 2, 7, 5, 6, - // depth: 2 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 3 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 4 - 1, 9, 17, 21, - 3, 15, 32, 24, - 2, 18, 17, 14, - 6, 19, 14, 16, - // -- channel 2 -- - // depth: 1 - 1, 10, 19, 24, - 1, 6, 17, 9, - 2, 18, 13, 16, - 2, 7, 5, 6, - // depth: 2 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 3 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 4 - 1, 9, 17, 21, - 3, 15, 32, 24, - 2, 18, 17, 14, - 6, 19, 14, 16}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 2, 2, 2, 2}, - PartialShape {2, 1, 3, 3, 3}, - PartialShape {1, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // -- in 1 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 1, 0, - 3, 6, - // -- in 2 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 3, 0, - 1, 8}, - std::vector{ - // -- filter 1 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // -- filter 2 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 2, 10, 18, 18, - 4, 20, 38, 30, - 4, 18, 20, 12, - 8, 24, 18, 20, - // depth: 2 - 6, 18, 30, 18, - 8, 46, 78, 72, - 12, 26, 42, 12, - 16, 56, 40, 48, - // depth: 3 - 6, 18, 30, 18, - 8, 46, 78, 72, - 12, 26, 42, 12, - 16, 56, 40, 48, - // depth: 4 - 4, 8, 12, 0, - 4, 26, 40, 42, - 8, 8, 22, 0, - 8, 32, 22, 28}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {2, 1, 2, 2, 2}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {2, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // -- batch 1 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 1, 0, - 6, 4, - // -- batch 2 -- - // depth: 1 - 1, 5, - 2, 8, - // depth: 2 - 2, 1, - 0, 5}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // -- batch 1 -- - // depth: 1 - 1, 5, 9, 9, - 2, 10, 19, 15, - 2, 9, 10, 6, - 4, 12, 9, 10, - // depth: 2 - 2, 7, 12, 9, - 8, 27, 45, 27, - 4, 16, 16, 6, - 16, 26, 25, 18, - // depth: 3 - 2, 7, 12, 9, - 8, 27, 45, 27, - 4, 16, 16, 6, - 16, 26, 25, 18, - // depth: 4 - 1, 2, 3, 0, - 6, 17, 26, 12, - 2, 7, 6, 0, - 12, 14, 16, 8, - // -- batch 2 -- - // depth: 1 - 1, 7, 13, 15, - 2, 13, 27, 24, - 2, 13, 15, 10, - 4, 18, 12, 16, - // depth: 2 - 3, 12, 21, 18, - 2, 20, 38, 39, - 6, 17, 25, 12, - 4, 28, 17, 26, - // depth: 3 - 3, 12, 21, 18, - 2, 20, 38, 39, - 6, 17, 25, 12, - 4, 28, 17, 26, - // depth: 4 - 2, 5, 8, 3, - 0, 7, 11, 15, - 4, 4, 10, 2, - 0, 10, 5, 10}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}) - }; + std::vector convolutionBackpropParams{ + // --------------------- 1D ConvolutionBackprop ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 6}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{10, 12, 19, 10, 7, 2}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{12, 19, 10, 7}, + {1}, + {1}, + {1}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 5}, + IN_ET, + std::vector{5, 7}, + std::vector{2, 0, 1}, + std::vector{10, 0, 19, 0, 7}, + {2}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 5}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{12, 19, 10, 7, 2}, + {1}, + {1}, + {1}, + {1}, + {1}), + ConvolutionBackpropParams(PartialShape{1, 1, 3}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 7}, + IN_ET, + std::vector{8, 5, 1}, + std::vector{2, 0, 1}, + std::vector{16, 10, 2, 0, 8, 5, 1}, + {1}, + {0}, + {0}, + {2}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 7}, + IN_ET, + std::vector{3, 9, 1, 2}, + std::vector{2, 0, 1}, + std::vector{18, 0, 5, 0, 13, 0, 1}, + {2}, + {2}, + {2}, + {2}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2}, + PartialShape{1, 2, 3}, + PartialShape{1, 2, 4}, + IN_ET, + std::vector{10, 3}, + std::vector{// channel 1 + 2, + 0, + 1, + // channel 2 + 1, + 0, + 2}, + std::vector{// channel 1 + 20, + 6, + 10, + 3, + // channel 2 + 10, + 3, + 20, + 6}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 2, 2}, + PartialShape{2, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{// channel 1 + 4, + 7, + // channel 2 + 5, + 5}, + std::vector{// filter 1 + 2, + 0, + 1, + // filter 2 + 1, + 0, + 2}, + std::vector{13, 19, 14, 17}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{2, 1, 2}, + PartialShape{1, 1, 3}, + PartialShape{2, 1, 4}, + IN_ET, + std::vector{// batch 1 + 1, + 3, + // batch 2 + 2, + 2}, + std::vector{2, 0, 1}, + std::vector{// batch 1 + 2, + 6, + 1, + 3, + // batch 2 + 4, + 4, + 2, + 2}, + {1}, + {0}, + {0}, + {1}, + {0}), + // --------------------- 2D ConvolutionBackprop ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 5}, + std::vector{1, 2, 3, 0, 1, 0, 3, 2, 1}, + std::vector{1, 5, 9, 9, 7, 20, 34, 15, 3, 18, 12, 3, 21, 29, 17, 5}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 3, 7, 5}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{23, 35, 18, 23, 19, 8, 29, 17, 5}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 7, 5, 3, 1, 2, 4, 6, 8, 8, 6, 4, 2}, + std::vector{1, 2, 3, 0, 1, 0, 2, 1, 2}, + std::vector{20, 37, 27, 18, 22, 40, 60, 52, 41, 69, 49, 31, 18, 26, 34, 22}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams( + PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 5, 5}, + IN_ET, + std::vector{2, 5, 4, 3}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{2, 4, 11, 10, 15, 2, 2, 7, 5, 5, 10, 12, 32, 16, 14, 4, 4, 7, 3, 3, 12, 8, 13, 6, 3}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 6, 6}, + IN_ET, + std::vector{2, 3, 4, 3}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{2, 3, 4, 6, 6, 9, 4, 3, 8, 6, 12, 9, 2, 3, 2, 3, 2, 3, + 4, 3, 4, 3, 4, 3, 6, 9, 4, 6, 2, 3, 12, 9, 8, 6, 4, 3}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}, + {0, 0}), + ConvolutionBackpropParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 5, 5}, + IN_ET, + std::vector{1, 3, 5, 7, 5, 3, 2, 4, 6}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{23, 0, 43, 0, 29, 0, 0, 0, 0, 0, 31, 0, 57, 0, 45, 0, 0, 0, 0, 0, 35, 0, 38, 0, 21}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 2, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 5}, + std::vector{// channel 1 + 5, + 3, + 5, + 1, + 3, + 1, + 4, + 2, + 4, + // channel 2 + -5, + 3, + 5, + 1, + -3, + 1, + 4, + 2, + -4}, + std::vector{// channel 1 + 5, + 18, + 14, + 15, + 36, + 52, + 60, + 28, + 11, + 40, + 32, + 17, + 28, + 34, + 38, + 20, + // channel 2 + -5, + -12, + 14, + 15, + -34, + -4, + 42, + 28, + 11, + -2, + -6, + -7, + 28, + 34, + -18, + -20}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 2, 2, 2}, + PartialShape{2, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{// channel 1 + 1, + 3, + 7, + 5, + // channel 2 + 2, + 4, + 8, + 6}, + std::vector{// channel 1 + 5, + 3, + 5, + 1, + 3, + 1, + 4, + 2, + 4, + // channel 2 + -5, + 3, + 5, + 1, + -3, + 1, + 4, + 2, + -4}, + std::vector{-5, 4, 36, 35, -2, 44, 108, 62, 27, 42, 22, 7, 60, 74, 18, -4}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 2, 1, 1}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 2, + // channel 2 + 3}, + std::vector{// batch 0 + // channel 1 + 5, + 3, + 1, + 3, + // channel 2 + -5, + 3, + 1, + -3, + // batch 1 + // channel 1 + 5, + 3, + 1, + 3, + // channel 2 + -5, + 3, + 1, + -3}, + std::vector{25, 15, 5, 15, -25, 15, 5, -15}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{2, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{2, 1, 4, 4}, + IN_ET, + std::vector{// batch 1 + 1, + 3, + 1, + 3, + // batch 2 + -1, + 3, + 1, + 3}, + std::vector{-5, 3, 5, 1, -3, 1, 4, 2, -4}, + std::vector{// batch 1 + -5, + -12, + 14, + 15, + -4, + -12, + 6, + 18, + 5, + 14, + -6, + -9, + 4, + 14, + 2, + -12, + // batch 2 + 5, + -18, + 4, + 15, + -6, + -6, + 4, + 18, + -3, + 10, + 2, + -9, + 4, + 14, + 2, + -12}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + // --------------------- 3D convolution ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2, 2}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 4, 4, 4}, + IN_ET, + std::vector{// depth: 1 + 15, + 3, + 21, + 10, + // depth: 2 + 10, + 13, + 11, + 17}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 15, + 33, + 51, + 9, + 21, + 67, + 86, + 30, + 30, + 42, + 43, + 6, + 42, + 41, + 52, + 20, + // depth: 2 + 25, + 66, + 107, + 48, + 32, + 116, + 166, + 81, + 50, + 89, + 93, + 32, + 64, + 86, + 91, + 54, + // depth: 3 + 25, + 66, + 107, + 48, + 32, + 116, + 166, + 81, + 50, + 89, + 93, + 32, + 64, + 86, + 91, + 54, + // depth: 4 + 10, + 33, + 56, + 39, + 11, + 49, + 80, + 51, + 20, + 47, + 50, + 26, + 22, + 45, + 39, + 34}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2, 2}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 3, 3, 3}, + IN_ET, + std::vector{// depth: 1 + 15, + 3, + 21, + 10, + // depth: 2 + 10, + 13, + 11, + 17}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 116, + 166, + 81, + 89, + 93, + 32, + 86, + 91, + 54, + // depth: 2 + 116, + 166, + 81, + 89, + 93, + 32, + 86, + 91, + 54, + // depth: 3 + 49, + 80, + 51, + 47, + 50, + 26, + 45, + 39, + 34}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}), + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4, 4}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 4, 4, 4}, + IN_ET, + std::vector{// depth: 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 2 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 3 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 4 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 12, + 30, + 36, + 24, + 26, + 42, + 42, + 30, + 34, + 56, + 54, + 50, + 14, + 18, + 24, + 16, + // depth: 2 + 18, + 45, + 54, + 36, + 39, + 63, + 63, + 45, + 51, + 84, + 81, + 75, + 21, + 27, + 36, + 24, + // depth: 3 + 18, + 45, + 54, + 36, + 39, + 63, + 63, + 45, + 51, + 84, + 81, + 75, + 21, + 27, + 36, + 24, + // depth: 4 + 12, + 30, + 36, + 24, + 26, + 42, + 42, + 30, + 34, + 56, + 54, + 50, + 14, + 18, + 24, + 16}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2, 2}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 5, 5, 5}, + IN_ET, + std::vector{// depth: 1 + 15, + 3, + 21, + 10, + // depth: 2 + 10, + 13, + 11, + 17}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 15, + 30, + 48, + 6, + 9, + 0, + 15, + 0, + 3, + 0, + 51, + 57, + 109, + 23, + 36, + 0, + 21, + 0, + 10, + 0, + 42, + 21, + 62, + 10, + 20, + // depth: 2 + 15, + 30, + 48, + 6, + 9, + 0, + 15, + 0, + 3, + 0, + 51, + 57, + 109, + 23, + 36, + 0, + 21, + 0, + 10, + 0, + 42, + 21, + 62, + 10, + 20, + // depth: 3 + 25, + 50, + 91, + 32, + 48, + 0, + 25, + 0, + 16, + 0, + 82, + 89, + 205, + 70, + 113, + 0, + 32, + 0, + 27, + 0, + 64, + 32, + 118, + 27, + 54, + // depth: 4 + 10, + 20, + 43, + 26, + 39, + 0, + 10, + 0, + 13, + 0, + 31, + 32, + 96, + 47, + 77, + 0, + 11, + 0, + 17, + 0, + 22, + 11, + 56, + 17, + 34, + // depth: 5 + 10, + 20, + 43, + 26, + 39, + 0, + 10, + 0, + 13, + 0, + 31, + 32, + 96, + 47, + 77, + 0, + 11, + 0, + 17, + 0, + 22, + 11, + 56, + 17, + 34}, + {2, 2, 2}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4, 4}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 7, 7, 7}, + IN_ET, + std::vector{// depth: 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 2 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 3 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 4 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 12, + 0, + 30, + 0, + 36, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 42, + 0, + 42, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 34, + 0, + 56, + 0, + 54, + 0, + 50, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 14, + 0, + 18, + 0, + 24, + 0, + 16, + // depth: 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 3 + 18, + 0, + 45, + 0, + 54, + 0, + 36, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 39, + 0, + 63, + 0, + 63, + 0, + 45, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 51, + 0, + 84, + 0, + 81, + 0, + 75, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 21, + 0, + 27, + 0, + 36, + 0, + 24, + // depth: 4 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 5 + 18, + 0, + 45, + 0, + 54, + 0, + 36, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 39, + 0, + 63, + 0, + 63, + 0, + 45, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 51, + 0, + 84, + 0, + 81, + 0, + 75, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 21, + 0, + 27, + 0, + 36, + 0, + 24, + // depth: 6 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 7 + 12, + 0, + 30, + 0, + 36, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 42, + 0, + 42, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 34, + 0, + 56, + 0, + 54, + 0, + 50, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 14, + 0, + 18, + 0, + 24, + 0, + 16}, + {2, 2, 2}, + {2, 2, 2}, + {2, 2, 2}, + {2, 2, 2}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2, 2}, + PartialShape{1, 2, 3, 3, 3}, + PartialShape{1, 2, 4, 4, 4}, + IN_ET, + std::vector{// depth: 1 + 1, + 8, + 1, + 3, + // depth: 2 + 1, + 7, + 3, + 8}, + std::vector{// -- channel 1 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // -- channel 2 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// -- channel 1 -- + // depth: 1 + 1, + 10, + 19, + 24, + 1, + 6, + 17, + 9, + 2, + 18, + 13, + 16, + 2, + 7, + 5, + 6, + // depth: 2 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 3 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 4 + 1, + 9, + 17, + 21, + 3, + 15, + 32, + 24, + 2, + 18, + 17, + 14, + 6, + 19, + 14, + 16, + // -- channel 2 -- + // depth: 1 + 1, + 10, + 19, + 24, + 1, + 6, + 17, + 9, + 2, + 18, + 13, + 16, + 2, + 7, + 5, + 6, + // depth: 2 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 3 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 4 + 1, + 9, + 17, + 21, + 3, + 15, + 32, + 24, + 2, + 18, + 17, + 14, + 6, + 19, + 14, + 16}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 2, 2, 2, 2}, + PartialShape{2, 1, 3, 3, 3}, + PartialShape{1, 1, 4, 4, 4}, + IN_ET, + std::vector{// -- in 1 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 1, + 0, + 3, + 6, + // -- in 2 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 3, + 0, + 1, + 8}, + std::vector{// -- filter 1 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // -- filter 2 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 2, + 10, + 18, + 18, + 4, + 20, + 38, + 30, + 4, + 18, + 20, + 12, + 8, + 24, + 18, + 20, + // depth: 2 + 6, + 18, + 30, + 18, + 8, + 46, + 78, + 72, + 12, + 26, + 42, + 12, + 16, + 56, + 40, + 48, + // depth: 3 + 6, + 18, + 30, + 18, + 8, + 46, + 78, + 72, + 12, + 26, + 42, + 12, + 16, + 56, + 40, + 48, + // depth: 4 + 4, + 8, + 12, + 0, + 4, + 26, + 40, + 42, + 8, + 8, + 22, + 0, + 8, + 32, + 22, + 28}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{2, 1, 2, 2, 2}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{2, 1, 4, 4, 4}, + IN_ET, + std::vector{// -- batch 1 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 1, + 0, + 6, + 4, + // -- batch 2 -- + // depth: 1 + 1, + 5, + 2, + 8, + // depth: 2 + 2, + 1, + 0, + 5}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// -- batch 1 -- + // depth: 1 + 1, + 5, + 9, + 9, + 2, + 10, + 19, + 15, + 2, + 9, + 10, + 6, + 4, + 12, + 9, + 10, + // depth: 2 + 2, + 7, + 12, + 9, + 8, + 27, + 45, + 27, + 4, + 16, + 16, + 6, + 16, + 26, + 25, + 18, + // depth: 3 + 2, + 7, + 12, + 9, + 8, + 27, + 45, + 27, + 4, + 16, + 16, + 6, + 16, + 26, + 25, + 18, + // depth: 4 + 1, + 2, + 3, + 0, + 6, + 17, + 26, + 12, + 2, + 7, + 6, + 0, + 12, + 14, + 16, + 8, + // -- batch 2 -- + // depth: 1 + 1, + 7, + 13, + 15, + 2, + 13, + 27, + 24, + 2, + 13, + 15, + 10, + 4, + 18, + 12, + 16, + // depth: 2 + 3, + 12, + 21, + 18, + 2, + 20, + 38, + 39, + 6, + 17, + 25, + 12, + 4, + 28, + 17, + 26, + // depth: 3 + 3, + 12, + 21, + 18, + 2, + 20, + 38, + 39, + 6, + 17, + 25, + 12, + 4, + 28, + 17, + 26, + // depth: 4 + 2, + 5, + 8, + 3, + 0, + 7, + 11, + 15, + 4, + 4, + 10, + 2, + 0, + 10, + 5, + 10}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0})}; return convolutionBackpropParams; } @@ -1073,682 +2150,1451 @@ template std::vector generateConvolutionBackpropUintParams() { using T = typename element_type_traits::value_type; - std::vector convolutionBackpropParams { -// --------------------- 1D ConvolutionBackprop ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 6}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{10, 12, 19, 10, 7, 2}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{12, 19, 10, 7}, - {1}, - {1}, - {1}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 5}, - IN_ET, - std::vector{5, 7}, - std::vector{2, 0, 1}, - std::vector{10, 0, 19, 0, 7}, - {2}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 5}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{12, 19, 10, 7, 2}, - {1}, - {1}, - {1}, - {1}, - {1}), - ConvolutionBackpropParams(PartialShape {1, 1, 3}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 7}, - IN_ET, - std::vector{8, 5, 1}, - std::vector{2, 0, 1}, - std::vector{16, 10, 2, 0, 8, 5, 1}, - {1}, - {0}, - {0}, - {2}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 7}, - IN_ET, - std::vector{3, 9, 1, 2}, - std::vector{2, 0, 1}, - std::vector{18, 0, 5, 0, 13, 0, 1}, - {2}, - {2}, - {2}, - {2}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2}, - PartialShape {1, 2, 3}, - PartialShape {1, 2, 4}, - IN_ET, - std::vector{10, 3}, - std::vector{ - // channel 1 - 2, 0, 1, - // channel 2 - 1, 0, 2}, - std::vector{ - // channel 1 - 20, 6, 10, 3, - // channel 2 - 10, 3, 20, 6}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 2, 2}, - PartialShape {2, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{ - // channel 1 - 4, 7, - // channel 2 - 5, 5}, - std::vector{ - // filter 1 - 2, 0, 1, - // filter 2 - 1, 0, 2}, - std::vector{13, 19, 14, 17}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {2, 1, 2}, - PartialShape {1, 1, 3}, - PartialShape {2, 1, 4}, - IN_ET, - std::vector{ - // batch 1 - 1, 3, - // batch 2 - 2, 2}, - std::vector{2, 0, 1}, - std::vector{ - // batch 1 - 2, 6, 1, 3, - // batch 2 - 4, 4, 2, 2}, - {1}, - {0}, - {0}, - {1}, - {0}), -// --------------------- 2D ConvolutionBackprop ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, - 7, 5}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 3, 2, 1}, - std::vector{ - 1, 5, 9, 9, - 7, 20, 34, 15, - 3, 18, 12, 3, - 21, 29, 17, 5}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 3, - 7, 5}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 23, 35, 18, - 23, 19, 8, - 29, 17, 5}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, 7, - 7, 5, 3, 1, - 2, 4, 6, 8, - 8, 6, 4, 2}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - 20, 37, 27, 18, - 22, 40, 60, 52, - 41, 69, 49, 31, - 18, 26, 34, 22}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 5, 5}, - IN_ET, - std::vector{ - 2, 5, - 4, 3}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 2, 4, 11, 10, 15, - 2, 2, 7, 5, 5, - 10, 12, 32, 16, 14, - 4, 4, 7, 3, 3, - 12, 8, 13, 6, 3}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 6, 6}, - IN_ET, - std::vector{ - 2, 3, - 4, 3}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 2, 3, 4, 6, 6, 9, - 4, 3, 8, 6, 12, 9, - 2, 3, 2, 3, 2, 3, - 4, 3, 4, 3, 4, 3, - 6, 9, 4, 6, 2, 3, - 12, 9, 8, 6, 4, 3}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 5, 5}, - IN_ET, - std::vector{ - 1, 3, 5, - 7, 5, 3, - 2, 4, 6}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 23, 0, 43, 0, 29, - 0, 0, 0, 0, 0, - 31, 0, 57, 0, 45, - 0, 0, 0, 0, 0, - 35, 0, 38, 0, 21}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, - {0, 0}), -// --------------------- 3D convolution ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4, 4}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // depth: 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 2 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 3 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 4 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 12, 30, 36, 24, - 26, 42, 42, 30, - 34, 56, 54, 50, - 14, 18, 24, 16, - // depth: 2 - 18, 45, 54, 36, - 39, 63, 63, 45, - 51, 84, 81, 75, - 21, 27, 36, 24, - // depth: 3 - 18, 45, 54, 36, - 39, 63, 63, 45, - 51, 84, 81, 75, - 21, 27, 36, 24, - // depth: 4 - 12, 30, 36, 24, - 26, 42, 42, 30, - 34, 56, 54, 50, - 14, 18, 24, 16}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4, 4}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 7, 7, 7}, - IN_ET, - std::vector{ - // depth: 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 2 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 3 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 4 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 12, 0, 30, 0, 36, 0, 24, - 0, 0, 0, 0, 0, 0, 0, - 26, 0, 42, 0, 42, 0, 30, - 0, 0, 0, 0, 0, 0, 0, - 34, 0, 56, 0, 54, 0, 50, - 0, 0, 0, 0, 0, 0, 0, - 14, 0, 18, 0, 24, 0, 16, - // depth: 2 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 3 - 18, 0, 45, 0, 54, 0, 36, - 0, 0, 0, 0, 0, 0, 0, - 39, 0, 63, 0, 63, 0, 45, - 0, 0, 0, 0, 0, 0, 0, - 51, 0, 84, 0, 81, 0, 75, - 0, 0, 0, 0, 0, 0, 0, - 21, 0, 27, 0, 36, 0, 24, - // depth: 4 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 5 - 18, 0, 45, 0, 54, 0, 36, - 0, 0, 0, 0, 0, 0, 0, - 39, 0, 63, 0, 63, 0, 45, - 0, 0, 0, 0, 0, 0, 0, - 51, 0, 84, 0, 81, 0, 75, - 0, 0, 0, 0, 0, 0, 0, - 21, 0, 27, 0, 36, 0, 24, - // depth: 6 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 7 - 12, 0, 30, 0, 36, 0, 24, - 0, 0, 0, 0, 0, 0, 0, - 26, 0, 42, 0, 42, 0, 30, - 0, 0, 0, 0, 0, 0, 0, - 34, 0, 56, 0, 54, 0, 50, - 0, 0, 0, 0, 0, 0, 0, - 14, 0, 18, 0, 24, 0, 16}, - {2, 2, 2}, - {2, 2, 2}, - {2, 2, 2}, - {2, 2, 2}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2, 2}, - PartialShape {1, 2, 3, 3, 3}, - PartialShape {1, 2, 4, 4, 4}, - IN_ET, - std::vector{ - // depth: 1 - 1, 8, - 1, 3, - // depth: 2 - 1, 7, - 3, 8}, - std::vector{ - // -- channel 1 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // -- channel 2 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // -- channel 1 -- - // depth: 1 - 1, 10, 19, 24, - 1, 6, 17, 9, - 2, 18, 13, 16, - 2, 7, 5, 6, - // depth: 2 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 3 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 4 - 1, 9, 17, 21, - 3, 15, 32, 24, - 2, 18, 17, 14, - 6, 19, 14, 16, - // -- channel 2 -- - // depth: 1 - 1, 10, 19, 24, - 1, 6, 17, 9, - 2, 18, 13, 16, - 2, 7, 5, 6, - // depth: 2 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 3 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 4 - 1, 9, 17, 21, - 3, 15, 32, 24, - 2, 18, 17, 14, - 6, 19, 14, 16}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 2, 2, 2, 2}, - PartialShape {2, 1, 3, 3, 3}, - PartialShape {1, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // -- in 1 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 1, 0, - 3, 6, - // -- in 2 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 3, 0, - 1, 8}, - std::vector{ - // -- filter 1 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // -- filter 2 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 2, 10, 18, 18, - 4, 20, 38, 30, - 4, 18, 20, 12, - 8, 24, 18, 20, - // depth: 2 - 6, 18, 30, 18, - 8, 46, 78, 72, - 12, 26, 42, 12, - 16, 56, 40, 48, - // depth: 3 - 6, 18, 30, 18, - 8, 46, 78, 72, - 12, 26, 42, 12, - 16, 56, 40, 48, - // depth: 4 - 4, 8, 12, 0, - 4, 26, 40, 42, - 8, 8, 22, 0, - 8, 32, 22, 28}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {2, 1, 2, 2, 2}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {2, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // -- batch 1 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 1, 0, - 6, 4, - // -- batch 2 -- - // depth: 1 - 1, 5, - 2, 8, - // depth: 2 - 2, 1, - 0, 5}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // -- batch 1 -- - // depth: 1 - 1, 5, 9, 9, - 2, 10, 19, 15, - 2, 9, 10, 6, - 4, 12, 9, 10, - // depth: 2 - 2, 7, 12, 9, - 8, 27, 45, 27, - 4, 16, 16, 6, - 16, 26, 25, 18, - // depth: 3 - 2, 7, 12, 9, - 8, 27, 45, 27, - 4, 16, 16, 6, - 16, 26, 25, 18, - // depth: 4 - 1, 2, 3, 0, - 6, 17, 26, 12, - 2, 7, 6, 0, - 12, 14, 16, 8, - // -- batch 2 -- - // depth: 1 - 1, 7, 13, 15, - 2, 13, 27, 24, - 2, 13, 15, 10, - 4, 18, 12, 16, - // depth: 2 - 3, 12, 21, 18, - 2, 20, 38, 39, - 6, 17, 25, 12, - 4, 28, 17, 26, - // depth: 3 - 3, 12, 21, 18, - 2, 20, 38, 39, - 6, 17, 25, 12, - 4, 28, 17, 26, - // depth: 4 - 2, 5, 8, 3, - 0, 7, 11, 15, - 4, 4, 10, 2, - 0, 10, 5, 10}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}) - }; + std::vector convolutionBackpropParams{ + // --------------------- 1D ConvolutionBackprop ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 6}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{10, 12, 19, 10, 7, 2}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{12, 19, 10, 7}, + {1}, + {1}, + {1}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 5}, + IN_ET, + std::vector{5, 7}, + std::vector{2, 0, 1}, + std::vector{10, 0, 19, 0, 7}, + {2}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 5}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{12, 19, 10, 7, 2}, + {1}, + {1}, + {1}, + {1}, + {1}), + ConvolutionBackpropParams(PartialShape{1, 1, 3}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 7}, + IN_ET, + std::vector{8, 5, 1}, + std::vector{2, 0, 1}, + std::vector{16, 10, 2, 0, 8, 5, 1}, + {1}, + {0}, + {0}, + {2}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 7}, + IN_ET, + std::vector{3, 9, 1, 2}, + std::vector{2, 0, 1}, + std::vector{18, 0, 5, 0, 13, 0, 1}, + {2}, + {2}, + {2}, + {2}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2}, + PartialShape{1, 2, 3}, + PartialShape{1, 2, 4}, + IN_ET, + std::vector{10, 3}, + std::vector{// channel 1 + 2, + 0, + 1, + // channel 2 + 1, + 0, + 2}, + std::vector{// channel 1 + 20, + 6, + 10, + 3, + // channel 2 + 10, + 3, + 20, + 6}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 2, 2}, + PartialShape{2, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{// channel 1 + 4, + 7, + // channel 2 + 5, + 5}, + std::vector{// filter 1 + 2, + 0, + 1, + // filter 2 + 1, + 0, + 2}, + std::vector{13, 19, 14, 17}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{2, 1, 2}, + PartialShape{1, 1, 3}, + PartialShape{2, 1, 4}, + IN_ET, + std::vector{// batch 1 + 1, + 3, + // batch 2 + 2, + 2}, + std::vector{2, 0, 1}, + std::vector{// batch 1 + 2, + 6, + 1, + 3, + // batch 2 + 4, + 4, + 2, + 2}, + {1}, + {0}, + {0}, + {1}, + {0}), + // --------------------- 2D ConvolutionBackprop ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 5}, + std::vector{1, 2, 3, 0, 1, 0, 3, 2, 1}, + std::vector{1, 5, 9, 9, 7, 20, 34, 15, 3, 18, 12, 3, 21, 29, 17, 5}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 3, 7, 5}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{23, 35, 18, 23, 19, 8, 29, 17, 5}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 7, 5, 3, 1, 2, 4, 6, 8, 8, 6, 4, 2}, + std::vector{1, 2, 3, 0, 1, 0, 2, 1, 2}, + std::vector{20, 37, 27, 18, 22, 40, 60, 52, 41, 69, 49, 31, 18, 26, 34, 22}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams( + PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 5, 5}, + IN_ET, + std::vector{2, 5, 4, 3}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{2, 4, 11, 10, 15, 2, 2, 7, 5, 5, 10, 12, 32, 16, 14, 4, 4, 7, 3, 3, 12, 8, 13, 6, 3}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 6, 6}, + IN_ET, + std::vector{2, 3, 4, 3}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{2, 3, 4, 6, 6, 9, 4, 3, 8, 6, 12, 9, 2, 3, 2, 3, 2, 3, + 4, 3, 4, 3, 4, 3, 6, 9, 4, 6, 2, 3, 12, 9, 8, 6, 4, 3}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}, + {0, 0}), + ConvolutionBackpropParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 5, 5}, + IN_ET, + std::vector{1, 3, 5, 7, 5, 3, 2, 4, 6}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{23, 0, 43, 0, 29, 0, 0, 0, 0, 0, 31, 0, 57, 0, 45, 0, 0, 0, 0, 0, 35, 0, 38, 0, 21}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + {0, 0}), + // --------------------- 3D convolution ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4, 4}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 4, 4, 4}, + IN_ET, + std::vector{// depth: 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 2 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 3 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 4 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 12, + 30, + 36, + 24, + 26, + 42, + 42, + 30, + 34, + 56, + 54, + 50, + 14, + 18, + 24, + 16, + // depth: 2 + 18, + 45, + 54, + 36, + 39, + 63, + 63, + 45, + 51, + 84, + 81, + 75, + 21, + 27, + 36, + 24, + // depth: 3 + 18, + 45, + 54, + 36, + 39, + 63, + 63, + 45, + 51, + 84, + 81, + 75, + 21, + 27, + 36, + 24, + // depth: 4 + 12, + 30, + 36, + 24, + 26, + 42, + 42, + 30, + 34, + 56, + 54, + 50, + 14, + 18, + 24, + 16}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4, 4}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 7, 7, 7}, + IN_ET, + std::vector{// depth: 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 2 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 3 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 4 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 12, + 0, + 30, + 0, + 36, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 42, + 0, + 42, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 34, + 0, + 56, + 0, + 54, + 0, + 50, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 14, + 0, + 18, + 0, + 24, + 0, + 16, + // depth: 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 3 + 18, + 0, + 45, + 0, + 54, + 0, + 36, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 39, + 0, + 63, + 0, + 63, + 0, + 45, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 51, + 0, + 84, + 0, + 81, + 0, + 75, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 21, + 0, + 27, + 0, + 36, + 0, + 24, + // depth: 4 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 5 + 18, + 0, + 45, + 0, + 54, + 0, + 36, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 39, + 0, + 63, + 0, + 63, + 0, + 45, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 51, + 0, + 84, + 0, + 81, + 0, + 75, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 21, + 0, + 27, + 0, + 36, + 0, + 24, + // depth: 6 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 7 + 12, + 0, + 30, + 0, + 36, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 42, + 0, + 42, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 34, + 0, + 56, + 0, + 54, + 0, + 50, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 14, + 0, + 18, + 0, + 24, + 0, + 16}, + {2, 2, 2}, + {2, 2, 2}, + {2, 2, 2}, + {2, 2, 2}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2, 2}, + PartialShape{1, 2, 3, 3, 3}, + PartialShape{1, 2, 4, 4, 4}, + IN_ET, + std::vector{// depth: 1 + 1, + 8, + 1, + 3, + // depth: 2 + 1, + 7, + 3, + 8}, + std::vector{// -- channel 1 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // -- channel 2 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// -- channel 1 -- + // depth: 1 + 1, + 10, + 19, + 24, + 1, + 6, + 17, + 9, + 2, + 18, + 13, + 16, + 2, + 7, + 5, + 6, + // depth: 2 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 3 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 4 + 1, + 9, + 17, + 21, + 3, + 15, + 32, + 24, + 2, + 18, + 17, + 14, + 6, + 19, + 14, + 16, + // -- channel 2 -- + // depth: 1 + 1, + 10, + 19, + 24, + 1, + 6, + 17, + 9, + 2, + 18, + 13, + 16, + 2, + 7, + 5, + 6, + // depth: 2 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 3 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 4 + 1, + 9, + 17, + 21, + 3, + 15, + 32, + 24, + 2, + 18, + 17, + 14, + 6, + 19, + 14, + 16}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 2, 2, 2, 2}, + PartialShape{2, 1, 3, 3, 3}, + PartialShape{1, 1, 4, 4, 4}, + IN_ET, + std::vector{// -- in 1 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 1, + 0, + 3, + 6, + // -- in 2 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 3, + 0, + 1, + 8}, + std::vector{// -- filter 1 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // -- filter 2 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 2, + 10, + 18, + 18, + 4, + 20, + 38, + 30, + 4, + 18, + 20, + 12, + 8, + 24, + 18, + 20, + // depth: 2 + 6, + 18, + 30, + 18, + 8, + 46, + 78, + 72, + 12, + 26, + 42, + 12, + 16, + 56, + 40, + 48, + // depth: 3 + 6, + 18, + 30, + 18, + 8, + 46, + 78, + 72, + 12, + 26, + 42, + 12, + 16, + 56, + 40, + 48, + // depth: 4 + 4, + 8, + 12, + 0, + 4, + 26, + 40, + 42, + 8, + 8, + 22, + 0, + 8, + 32, + 22, + 28}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{2, 1, 2, 2, 2}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{2, 1, 4, 4, 4}, + IN_ET, + std::vector{// -- batch 1 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 1, + 0, + 6, + 4, + // -- batch 2 -- + // depth: 1 + 1, + 5, + 2, + 8, + // depth: 2 + 2, + 1, + 0, + 5}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// -- batch 1 -- + // depth: 1 + 1, + 5, + 9, + 9, + 2, + 10, + 19, + 15, + 2, + 9, + 10, + 6, + 4, + 12, + 9, + 10, + // depth: 2 + 2, + 7, + 12, + 9, + 8, + 27, + 45, + 27, + 4, + 16, + 16, + 6, + 16, + 26, + 25, + 18, + // depth: 3 + 2, + 7, + 12, + 9, + 8, + 27, + 45, + 27, + 4, + 16, + 16, + 6, + 16, + 26, + 25, + 18, + // depth: 4 + 1, + 2, + 3, + 0, + 6, + 17, + 26, + 12, + 2, + 7, + 6, + 0, + 12, + 14, + 16, + 8, + // -- batch 2 -- + // depth: 1 + 1, + 7, + 13, + 15, + 2, + 13, + 27, + 24, + 2, + 13, + 15, + 10, + 4, + 18, + 12, + 16, + // depth: 2 + 3, + 12, + 21, + 18, + 2, + 20, + 38, + 39, + 6, + 17, + 25, + 12, + 4, + 28, + 17, + 26, + // depth: 3 + 3, + 12, + 21, + 18, + 2, + 20, + 38, + 39, + 6, + 17, + 25, + 12, + 4, + 28, + 17, + 26, + // depth: 4 + 2, + 5, + 8, + 3, + 0, + 7, + 11, + 15, + 4, + 4, + 10, + 2, + 0, + 10, + 5, + 10}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0})}; return convolutionBackpropParams; } std::vector generateConvolutionBackpropCombinedParams() { - const std::vector> convolutionBackpropTypeParams { + const std::vector> convolutionBackpropTypeParams{ generateConvolutionBackpropFloatParams(), generateConvolutionBackpropFloatParams(), generateConvolutionBackpropFloatParams(), @@ -1761,7 +3607,7 @@ std::vector generateConvolutionBackpropCombinedParams generateConvolutionBackpropUintParams(), generateConvolutionBackpropUintParams(), generateConvolutionBackpropUintParams(), - }; + }; std::vector combinedParams; for (const auto& params : convolutionBackpropTypeParams) { @@ -1770,7 +3616,9 @@ std::vector generateConvolutionBackpropCombinedParams return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ConvolutionBackprop_With_Hardcoded_Refs, ReferenceConvolutionBackpropLayerTest, - testing::ValuesIn(generateConvolutionBackpropCombinedParams()), ReferenceConvolutionBackpropLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ConvolutionBackprop_With_Hardcoded_Refs, + ReferenceConvolutionBackpropLayerTest, + testing::ValuesIn(generateConvolutionBackpropCombinedParams()), + ReferenceConvolutionBackpropLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/cos.cpp b/src/plugins/template/tests/functional/op_reference/cos.cpp index ed8fab2e027106..b992d0c5f8a1ef 100644 --- a/src/plugins/template/tests/functional/op_reference/cos.cpp +++ b/src/plugins/template/tests/functional/op_reference/cos.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/cos.hpp" + #include -#include "openvino/op/cos.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ class ReferenceCosLayerTest : public testing::TestWithParam, public C static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Cos = std::make_shared(in); - return std::make_shared(NodeVector {Cos}, ParameterVector {in}); + return std::make_shared(NodeVector{Cos}, ParameterVector{in}); } }; @@ -53,24 +54,33 @@ TEST_P(ReferenceCosLayerTest, CosWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Cos_With_Hardcoded_Refs, ReferenceCosLayerTest, + smoke_Cos_With_Hardcoded_Refs, + ReferenceCosLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) - .expected({{11}, element::f16, std::vector {1.00000000f, - 0.96891242f, - 0.96891242f, - 0.87758256f, - 0.87758256f, - 0.54030231f, - 0.54030231f, - -0.41614684f, - -0.41614684f, - -0.65364362f, - -0.65364362f}}), - Builder {} - .input({{11}, element::f32, std::vector {0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) - .expected({{11}, element::f32, std::vector {1.00000000f, + Builder{} + .input({{11}, + element::f16, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) + .expected({{11}, + element::f16, + std::vector{1.00000000f, + 0.96891242f, + 0.96891242f, + 0.87758256f, + 0.87758256f, + 0.54030231f, + 0.54030231f, + -0.41614684f, + -0.41614684f, + -0.65364362f, + -0.65364362f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) + .expected({{11}, + element::f32, + std::vector{1.00000000f, 0.96891242f, 0.96891242f, 0.87758256f, @@ -81,18 +91,18 @@ INSTANTIATE_TEST_SUITE_P( -0.41614684f, -0.65364362f, -0.65364362f}}), - Builder {} - .input({{5}, element::i32, std::vector {1, 2, 3, 4, 5}}) - .expected({{5}, element::i32, std::vector {1, 0, -1, -1, 0}}), - Builder {} - .input({{5}, element::i64, std::vector {1, 2, 3, 4, 5}}) - .expected({{5}, element::i64, std::vector {1, 0, -1, -1, 0}}), - Builder {} - .input({{3}, element::u32, std::vector {1, 2, 5}}) - .expected({{3}, element::u32, std::vector {1, 0, 0}}), - Builder {} - .input({{3}, element::u64, std::vector {1, 2, 5}}) - .expected({{3}, element::u64, std::vector {1, 0, 0}})), + Builder{} + .input({{5}, element::i32, std::vector{1, 2, 3, 4, 5}}) + .expected({{5}, element::i32, std::vector{1, 0, -1, -1, 0}}), + Builder{} + .input({{5}, element::i64, std::vector{1, 2, 3, 4, 5}}) + .expected({{5}, element::i64, std::vector{1, 0, -1, -1, 0}}), + Builder{} + .input({{3}, element::u32, std::vector{1, 2, 5}}) + .expected({{3}, element::u32, std::vector{1, 0, 0}}), + Builder{} + .input({{3}, element::u64, std::vector{1, 2, 5}}) + .expected({{3}, element::u64, std::vector{1, 0, 0}})), ReferenceCosLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/cosh.cpp b/src/plugins/template/tests/functional/op_reference/cosh.cpp index 55280c7fc23487..111fb2fae700a8 100644 --- a/src/plugins/template/tests/functional/op_reference/cosh.cpp +++ b/src/plugins/template/tests/functional/op_reference/cosh.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/cosh.hpp" + #include -#include "openvino/op/cosh.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ class ReferenceCoshLayerTest : public testing::TestWithParam, public static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Cosh = std::make_shared(in); - return std::make_shared(NodeVector {Cosh}, ParameterVector {in}); + return std::make_shared(NodeVector{Cosh}, ParameterVector{in}); } }; @@ -53,46 +54,55 @@ TEST_P(ReferenceCoshLayerTest, CoshWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Cosh_With_Hardcoded_Refs, ReferenceCoshLayerTest, + smoke_Cosh_With_Hardcoded_Refs, + ReferenceCoshLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f16, std::vector {27.30823284f, - 3.76219569f, - 1.54308063f, - 1.12762597f, - 1.03141310f, - 1.00000000f, - 1.03141310f, - 1.12762597f, - 1.54308063f, - 3.76219569f, - 27.30823284f}}), - Builder {} - .input({{11}, element::f32, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f32, std::vector {27.30823284f, - 3.76219569f, - 1.54308063f, - 1.12762597f, - 1.03141310f, - 1.00000000f, - 1.03141310f, - 1.12762597f, - 1.54308063f, - 3.76219569f, - 27.30823284f}}), - Builder {} - .input({{7}, element::i32, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i32, std::vector {27, 4, 2, 1, 2, 4, 27}}), - Builder {} - .input({{7}, element::i64, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i64, std::vector {27, 4, 2, 1, 2, 4, 27}}), - Builder {} - .input({{4}, element::u32, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u32, std::vector {1, 2, 4, 27}}), - Builder {} - .input({{4}, element::u64, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u64, std::vector {1, 2, 4, 27}})), + Builder{} + .input({{11}, + element::f16, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f16, + std::vector{27.30823284f, + 3.76219569f, + 1.54308063f, + 1.12762597f, + 1.03141310f, + 1.00000000f, + 1.03141310f, + 1.12762597f, + 1.54308063f, + 3.76219569f, + 27.30823284f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f32, + std::vector{27.30823284f, + 3.76219569f, + 1.54308063f, + 1.12762597f, + 1.03141310f, + 1.00000000f, + 1.03141310f, + 1.12762597f, + 1.54308063f, + 3.76219569f, + 27.30823284f}}), + Builder{} + .input({{7}, element::i32, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i32, std::vector{27, 4, 2, 1, 2, 4, 27}}), + Builder{} + .input({{7}, element::i64, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i64, std::vector{27, 4, 2, 1, 2, 4, 27}}), + Builder{} + .input({{4}, element::u32, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u32, std::vector{1, 2, 4, 27}}), + Builder{} + .input({{4}, element::u64, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u64, std::vector{1, 2, 4, 27}})), ReferenceCoshLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder.cpp b/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder.cpp index 1384fe67479a03..4c68e737e20c31 100644 --- a/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder.cpp +++ b/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/ctc_greedy_decoder.hpp" + #include -#include "openvino/op/ctc_greedy_decoder.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,11 +13,16 @@ using namespace ov; namespace { struct CTCGreedyDecoderParams { - CTCGreedyDecoderParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& masksTensor, int64_t ctcMergedRepeat, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), masksTensor(masksTensor), ctcMergedRepeat(ctcMergedRepeat), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + CTCGreedyDecoderParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& masksTensor, + int64_t ctcMergedRepeat, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + masksTensor(masksTensor), + ctcMergedRepeat(ctcMergedRepeat), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor masksTensor; @@ -25,7 +31,8 @@ struct CTCGreedyDecoderParams { std::string testcaseName; }; -class ReferenceCTCGreedyDecoderTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceCTCGreedyDecoderTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -70,40 +77,68 @@ TEST_P(ReferenceCTCGreedyDecoderTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {3, 1, 3}, std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), + reference_tests::Tensor(IN_ET, + {3, 1, 3}, + std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), reference_tests::Tensor(IN_ET, {3, 1}, std::vector{1.0f, 1.0f, 1.0f}), false, reference_tests::Tensor(IN_ET, {1, 3, 1, 1}, std::vector{1.0f, 0.0f, 1.0f}), "ctc_greedy_decoder"), CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {3, 2, 3}, std::vector{ - 0.1f, 0.2f, 0.f, 0.15f, 0.25f, 0.f, 0.4f, 0.3f, 0.f, 0.45f, 0.35f, 0.f, 0.5f, 0.6f, 0.f, 0.55f, 0.65f, 0.f}), + reference_tests::Tensor(IN_ET, + {3, 2, 3}, + std::vector{0.1f, + 0.2f, + 0.f, + 0.15f, + 0.25f, + 0.f, + 0.4f, + 0.3f, + 0.f, + 0.45f, + 0.35f, + 0.f, + 0.5f, + 0.6f, + 0.f, + 0.55f, + 0.65f, + 0.f}), reference_tests::Tensor(IN_ET, {3, 2}, std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}), false, reference_tests::Tensor(IN_ET, {2, 3, 1, 1}, std::vector{1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f}), "ctc_greedy_decoder_multiple_batches"), CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {3, 1, 3}, std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), + reference_tests::Tensor(IN_ET, + {3, 1, 3}, + std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), reference_tests::Tensor(IN_ET, {3, 1}, std::vector{1.0f, 1.0f, 0.0f}), false, reference_tests::Tensor(IN_ET, {1, 3, 1, 1}, std::vector{1.0f, 0.0f, -1.0f}), "ctc_greedy_decoder_single_batch_short_sequence"), CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {3, 1, 3}, std::vector{0.1f, 0.2f, 0.f, 0.3f, 0.4f, 0.f, 0.6f, 0.5f, 0.f}), + reference_tests::Tensor(IN_ET, + {3, 1, 3}, + std::vector{0.1f, 0.2f, 0.f, 0.3f, 0.4f, 0.f, 0.6f, 0.5f, 0.f}), reference_tests::Tensor(IN_ET, {3, 1}, std::vector{1.0f, 1.0f, 1.0f}), true, reference_tests::Tensor(IN_ET, {1, 3, 1, 1}, std::vector{1.0f, 0.0f, -1.0f}), "ctc_greedy_decoder_merge"), CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {3, 1, 3}, std::vector{0.1f, 0.2f, 0.f, 0.3f, 0.4f, 0.f, 0.6f, 0.5f, 0.f}), + reference_tests::Tensor(IN_ET, + {3, 1, 3}, + std::vector{0.1f, 0.2f, 0.f, 0.3f, 0.4f, 0.f, 0.6f, 0.5f, 0.f}), reference_tests::Tensor(IN_ET, {3, 1}, std::vector{1.0f, 1.0f, 1.0f}), false, reference_tests::Tensor(IN_ET, {1, 3, 1, 1}, std::vector{1.0f, 1.0f, 0.0f}), "ctc_greedy_decoder_single_no_merge"), CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {2, 2, 3}, std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f, 0.7f, 0.8f, 0.f}), + reference_tests::Tensor(IN_ET, + {2, 2, 3}, + std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f, 0.7f, 0.8f, 0.f}), reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1.0f, 1.0f, 1.0f, 0.0f}), false, reference_tests::Tensor(IN_ET, {2, 2, 1, 1}, std::vector{1.0f, 1.0f, 0.0f, -1.0f}), @@ -113,7 +148,7 @@ std::vector generateParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -127,6 +162,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoder_With_Hardcoded_Refs, ReferenceCTCGreedyDecoderTest, - testing::ValuesIn(generateCombinedParams()), ReferenceCTCGreedyDecoderTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoder_With_Hardcoded_Refs, + ReferenceCTCGreedyDecoderTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceCTCGreedyDecoderTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder_seq_len.cpp b/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder_seq_len.cpp index 7c287cf3843869..2dadfd81d2634e 100644 --- a/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder_seq_len.cpp +++ b/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder_seq_len.cpp @@ -2,22 +2,32 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/ctc_greedy_decoder_seq_len.hpp" + #include -#include "openvino/op/ctc_greedy_decoder_seq_len.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct CTCGreedyDecoderSeqLenParams { - CTCGreedyDecoderSeqLenParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& seqLenTensor, const reference_tests::Tensor& blankIndexTensor, int64_t mergeRepeated, - const reference_tests::Tensor& expectedTensor, const reference_tests::Tensor& expectedTensor2, const std::string& testcaseName = "") : - dataTensor(dataTensor), seqLenTensor(seqLenTensor), blankIndexTensor(blankIndexTensor), mergeRepeated(mergeRepeated), - expectedTensor(expectedTensor), expectedTensor2(expectedTensor2), testcaseName(testcaseName) {} + CTCGreedyDecoderSeqLenParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& seqLenTensor, + const reference_tests::Tensor& blankIndexTensor, + int64_t mergeRepeated, + const reference_tests::Tensor& expectedTensor, + const reference_tests::Tensor& expectedTensor2, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + seqLenTensor(seqLenTensor), + blankIndexTensor(blankIndexTensor), + mergeRepeated(mergeRepeated), + expectedTensor(expectedTensor), + expectedTensor2(expectedTensor2), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor seqLenTensor; @@ -29,11 +39,18 @@ struct CTCGreedyDecoderSeqLenParams { }; struct CTCGreedyDecoderSeqLenParamsNoOptionalInput { - CTCGreedyDecoderSeqLenParamsNoOptionalInput( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& seqLenTensor, int64_t mergeRepeated, - const reference_tests::Tensor& expectedTensor, const reference_tests::Tensor& expectedTensor2, const std::string& testcaseName = "") : - dataTensor(dataTensor), seqLenTensor(seqLenTensor), mergeRepeated(mergeRepeated), - expectedTensor(expectedTensor), expectedTensor2(expectedTensor2), testcaseName(testcaseName) {} + CTCGreedyDecoderSeqLenParamsNoOptionalInput(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& seqLenTensor, + int64_t mergeRepeated, + const reference_tests::Tensor& expectedTensor, + const reference_tests::Tensor& expectedTensor2, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + seqLenTensor(seqLenTensor), + mergeRepeated(mergeRepeated), + expectedTensor(expectedTensor), + expectedTensor2(expectedTensor2), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor seqLenTensor; @@ -43,7 +60,8 @@ struct CTCGreedyDecoderSeqLenParamsNoOptionalInput { std::string testcaseName; }; -class ReferenceCTCGreedyDecoderSeqLenTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceCTCGreedyDecoderSeqLenTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -77,16 +95,19 @@ class ReferenceCTCGreedyDecoderSeqLenTest : public testing::TestWithParam function; const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto seq_len = std::make_shared(params.seqLenTensor.type, params.seqLenTensor.shape); - auto blank_index = std::make_shared(params.blankIndexTensor.type, params.blankIndexTensor.shape, + auto blank_index = std::make_shared(params.blankIndexTensor.type, + params.blankIndexTensor.shape, params.blankIndexTensor.data.data()); - const auto decoder = std::make_shared(data, seq_len, blank_index, params.mergeRepeated); + const auto decoder = + std::make_shared(data, seq_len, blank_index, params.mergeRepeated); function = std::make_shared(decoder->outputs(), ParameterVector{data, seq_len}); return function; } }; -class ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput : - public testing::TestWithParam, public CommonReferenceTest { +class ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput + : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -135,7 +156,7 @@ TEST_P(ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ CTCGreedyDecoderSeqLenParams( reference_tests::Tensor(ET, {1, 3, 3}, std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), reference_tests::Tensor(element::i32, {1}, std::vector{2}), @@ -153,8 +174,26 @@ std::vector generateParams() { reference_tests::Tensor(element::i32, {1}, std::vector{2}), "evaluate_ctc_greedy_decoder_seq_len_merge"), CTCGreedyDecoderSeqLenParams( - reference_tests::Tensor(ET, {2, 3, 3}, std::vector{0.1f, 0.2f, 0.f, 0.15f, 0.25f, 0.f, 0.4f, 0.3f, 0.f, - 0.45f, 0.35f, 0.f, 0.5f, 0.6f, 0.f, 0.55f, 0.65f, 0.f}), + reference_tests::Tensor(ET, + {2, 3, 3}, + std::vector{0.1f, + 0.2f, + 0.f, + 0.15f, + 0.25f, + 0.f, + 0.4f, + 0.3f, + 0.f, + 0.45f, + 0.35f, + 0.f, + 0.5f, + 0.6f, + 0.f, + 0.55f, + 0.65f, + 0.f}), reference_tests::Tensor(element::i32, {2}, std::vector{1, 1}), reference_tests::Tensor(element::i32, {}, std::vector{2}), false, @@ -162,9 +201,10 @@ std::vector generateParams() { reference_tests::Tensor(element::i32, {2}, std::vector{1, 1}), "evaluate_ctc_greedy_decoder_seq_len_multiple_batches"), CTCGreedyDecoderSeqLenParams( - reference_tests::Tensor(ET, {3, 3, 3}, std::vector{0.1f, 0.2f, 0.f, 0.15f, 0.25f, 0.f, 0.4f, 0.3f, 0.f, - 0.45f, 0.35f, 0.f, 0.5f, 0.6f, 0.f, 0.55f, 0.65f, 0.f, - 0.1f, 0.2f, 0.f, 0.15f, 0.25f, 0.f, 0.4f, 0.3f, 0.f}), + reference_tests::Tensor(ET, {3, 3, 3}, std::vector{0.1f, 0.2f, 0.f, 0.15f, 0.25f, 0.f, 0.4f, + 0.3f, 0.f, 0.45f, 0.35f, 0.f, 0.5f, 0.6f, + 0.f, 0.55f, 0.65f, 0.f, 0.1f, 0.2f, 0.f, + 0.15f, 0.25f, 0.f, 0.4f, 0.3f, 0.f}), reference_tests::Tensor(element::i32, {3}, std::vector{2, 3, 1}), reference_tests::Tensor(element::i32, {}, std::vector{2}), false, @@ -176,7 +216,7 @@ std::vector generateParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -193,7 +233,7 @@ std::vector generateCombinedParams() { template std::vector generateParamsNoOptionalInput() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ CTCGreedyDecoderSeqLenParamsNoOptionalInput( reference_tests::Tensor(ET, {1, 3, 3}, std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), reference_tests::Tensor(element::i32, {1}, std::vector{2}), @@ -206,7 +246,7 @@ std::vector generateParamsNoOptiona } std::vector generateCombinedParamsNoOptionalInput() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsNoOptionalInput(), generateParamsNoOptionalInput(), generateParamsNoOptionalInput(), @@ -220,9 +260,13 @@ std::vector generateCombinedParamsN return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoderSeqLen_With_Hardcoded_Refs, ReferenceCTCGreedyDecoderSeqLenTest, - testing::ValuesIn(generateCombinedParams()), ReferenceCTCGreedyDecoderSeqLenTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoderSeqLen_With_Hardcoded_Refs, + ReferenceCTCGreedyDecoderSeqLenTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceCTCGreedyDecoderSeqLenTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoderSeqLen_With_Hardcoded_Refs, ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput, - testing::ValuesIn(generateCombinedParamsNoOptionalInput()), ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoderSeqLen_With_Hardcoded_Refs, + ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput, + testing::ValuesIn(generateCombinedParamsNoOptionalInput()), + ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/ctc_loss.cpp b/src/plugins/template/tests/functional/op_reference/ctc_loss.cpp index b432f1d408054a..4aec555d6dbe88 100644 --- a/src/plugins/template/tests/functional/op_reference/ctc_loss.cpp +++ b/src/plugins/template/tests/functional/op_reference/ctc_loss.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/ctc_loss.hpp" + #include -#include "openvino/op/ctc_loss.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,8 +14,15 @@ using namespace ov; namespace { struct CTCLossParams { - CTCLossParams(const bool collapseRepeated, const bool mergeRepeated, const bool findUnique, const reference_tests::Tensor& logitsTensor, const reference_tests::Tensor& logitsLenTensor, - const reference_tests::Tensor& labelsTensor, const reference_tests::Tensor& labelsLenTensor, const reference_tests::Tensor& blankIdxTensor, const reference_tests::Tensor& expectedTensor) + CTCLossParams(const bool collapseRepeated, + const bool mergeRepeated, + const bool findUnique, + const reference_tests::Tensor& logitsTensor, + const reference_tests::Tensor& logitsLenTensor, + const reference_tests::Tensor& labelsTensor, + const reference_tests::Tensor& labelsLenTensor, + const reference_tests::Tensor& blankIdxTensor, + const reference_tests::Tensor& expectedTensor) : preprocessCollapseRepeated(collapseRepeated), ctcMergeRepeated(mergeRepeated), unique(findUnique), @@ -41,7 +49,11 @@ class ReferenceCTCLossLayerTest : public testing::TestWithParam, void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.logits.data, params.logitsLen.data, params.labels.data, params.labelsLen.data, params.blankIdx.data}; + inputData = {params.logits.data, + params.logitsLen.data, + params.labels.data, + params.labelsLen.data, + params.blankIdx.data}; refOutData = {params.expected.data}; } static std::string getTestCaseName(const testing::TestParamInfo& obj) { @@ -68,8 +80,15 @@ class ReferenceCTCLossLayerTest : public testing::TestWithParam, const auto D = std::make_shared(params.labelsLen.type, params.labelsLen.shape); // labelsLen const auto E = std::make_shared(params.blankIdx.type, params.blankIdx.shape); // blankIdx - const auto ctcLoss = std::make_shared(A, B, C, D, E, params.preprocessCollapseRepeated, params.ctcMergeRepeated, params.unique); - return std::make_shared(NodeVector {ctcLoss}, ParameterVector {A, B, C, D, E}); + const auto ctcLoss = std::make_shared(A, + B, + C, + D, + E, + params.preprocessCollapseRepeated, + params.ctcMergeRepeated, + params.unique); + return std::make_shared(NodeVector{ctcLoss}, ParameterVector{A, B, C, D, E}); } }; @@ -78,91 +97,153 @@ TEST_P(ReferenceCTCLossLayerTest, CompareWithRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_CTCLoss_With_Hardcoded_Refs, ReferenceCTCLossLayerTest, - ::testing::Values(CTCLossParams(false, false, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, false, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, true, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41156f, 13.2745f})), // refOut - CTCLossParams(true, false, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, true, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41156f, 13.2745f})), // refOut - CTCLossParams(true, true, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41223f, 13.2745f})), // refOut - // floating point type - float16 - CTCLossParams(false, false, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, false, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, true, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41156f, 13.2745f})), // refOut - CTCLossParams(true, false, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, true, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41156f, 13.2745f})), // refOut - CTCLossParams(true, true, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41223f, 13.2745f}))), // refOut + smoke_CTCLoss_With_Hardcoded_Refs, + ReferenceCTCLossLayerTest, + ::testing::Values( + CTCLossParams(false, + false, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + false, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + true, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41156f, 13.2745f})), // refOut + CTCLossParams(true, + false, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + true, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41156f, 13.2745f})), // refOut + CTCLossParams(true, + true, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41223f, 13.2745f})), // refOut + // floating point type - float16 + CTCLossParams(false, + false, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + false, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + true, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41156f, 13.2745f})), // refOut + CTCLossParams(true, + false, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + true, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41156f, 13.2745f})), // refOut + CTCLossParams(true, + true, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41223f, 13.2745f}))), // refOut ReferenceCTCLossLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/cum_sum.cpp b/src/plugins/template/tests/functional/op_reference/cum_sum.cpp index dee306417ee73d..51ee19e188c3fa 100644 --- a/src/plugins/template/tests/functional/op_reference/cum_sum.cpp +++ b/src/plugins/template/tests/functional/op_reference/cum_sum.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/cum_sum.hpp" + #include -#include "openvino/op/cum_sum.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,8 +15,15 @@ namespace { struct CumSumParams { // Custom axis input and attributes template - CumSumParams(const PartialShape& shape, const element::Type& iType, const std::vector& iValues, const std::vector& oValues, const bool execlusive, - const bool reverse, const element::Type& axisType, AT axisVal, const PartialShape& axisShape) + CumSumParams(const PartialShape& shape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const bool execlusive, + const bool reverse, + const element::Type& axisType, + AT axisVal, + const PartialShape& axisShape) : execlusive(execlusive), reverse(reverse), axisValue(axisVal), @@ -24,14 +32,17 @@ struct CumSumParams { axisType(axisType), inType(iType), outType(iType), - axisData(CreateTensor(axisType, std::vector {axisVal})), + axisData(CreateTensor(axisType, std::vector{axisVal})), inputData(CreateTensor(iType, iValues)), refData(CreateTensor(iType, oValues)), testDefaults(false) {} // Default axis input and attributes template - CumSumParams(const PartialShape& shape, const element::Type& iType, const std::vector& iValues, const std::vector& oValues) + CumSumParams(const PartialShape& shape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : inShape(shape), axisType(element::i32), inType(iType), @@ -65,7 +76,12 @@ class ReferenceCumSumLayerTest : public testing::TestWithParam, pu inputData = {params.inputData}; refOutData = {params.refData}; } else { - function = CreateFunction(params.inShape, params.inType, params.axisShape, params.axisType, params.execlusive, params.reverse); + function = CreateFunction(params.inShape, + params.inType, + params.axisShape, + params.axisType, + params.execlusive, + params.reverse); inputData = {params.inputData, params.axisData}; refOutData = {params.refData}; } @@ -85,18 +101,22 @@ class ReferenceCumSumLayerTest : public testing::TestWithParam, pu } private: - static std::shared_ptr CreateFunction(const PartialShape& data_shape, const element::Type& data_type, const PartialShape& axis_shape, - const element::Type& axis_type, const bool execlusive, const bool reverse) { + static std::shared_ptr CreateFunction(const PartialShape& data_shape, + const element::Type& data_type, + const PartialShape& axis_shape, + const element::Type& axis_type, + const bool execlusive, + const bool reverse) { const auto data_param = std::make_shared(data_type, data_shape); const auto axis_param = std::make_shared(axis_type, axis_shape); const auto cum_sum = std::make_shared(data_param, axis_param, execlusive, reverse); - return std::make_shared(NodeVector {cum_sum}, ParameterVector {data_param, axis_param}); + return std::make_shared(NodeVector{cum_sum}, ParameterVector{data_param, axis_param}); } static std::shared_ptr CreateFunction(const PartialShape& data_shape, const element::Type& data_type) { const auto data_param = std::make_shared(data_type, data_shape); const auto cum_sum = std::make_shared(data_param); - return std::make_shared(NodeVector {cum_sum}, ParameterVector {data_param}); + return std::make_shared(NodeVector{cum_sum}, ParameterVector{data_param}); } }; @@ -107,73 +127,176 @@ TEST_P(ReferenceCumSumLayerTest, CompareWithHardcodedRefs) { template std::vector generateCumSumParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector opParams { + std::vector opParams{ // Default axis input and attributes - CumSumParams(PartialShape {1}, type, std::vector {3}, std::vector {3}), - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {1, 3, 6, 10, 15, 21}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {0, 1, 2, 3, 4, 6, 8, 10}), + CumSumParams(PartialShape{1}, type, std::vector{3}, std::vector{3}), + CumSumParams(PartialShape{6}, type, std::vector{1, 2, 3, 4, 5, 6}, std::vector{1, 3, 6, 10, 15, 21}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{0, 1, 2, 3, 4, 6, 8, 10}), // Custom axis input and attributes - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {1, 3, 6, 10, 15, 21}, false, false, element::i32, int32_t(0), - PartialShape {}), // axis i32 - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {1, 3, 6, 10, 15, 21}, false, false, element::i64, int64_t(0), - PartialShape {}), // axis i64 - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {21, 20, 18, 15, 11, 6}, false, true, element::i64, int64_t(0), - PartialShape {}), - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {0, 1, 3, 6, 10, 15}, true, false, element::i64, int64_t(0), - PartialShape {}), - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {20, 18, 15, 11, 6, 0}, true, true, element::i64, int64_t(0), - PartialShape {}), - - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {0, 1, 2, 3, 4, 6, 8, 10}, false, false, element::i32, - int32_t(0), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {4, 6, 8, 10, 4, 5, 6, 7}, false, true, element::i32, - int32_t(0), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {0, 0, 0, 0, 0, 1, 2, 3}, true, false, element::i32, - int32_t(0), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {4, 5, 6, 7, 0, 0, 0, 0}, true, true, element::i32, - int32_t(0), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {0, 1, 3, 6, 4, 9, 15, 22}, false, false, element::i32, - int32_t(1), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {0, 0, 1, 3, 0, 4, 9, 15}, true, false, element::i32, - int32_t(1), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {6, 6, 5, 3, 22, 18, 13, 7}, false, true, element::i32, - int32_t(1), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {6, 5, 3, 0, 18, 13, 7, 0}, true, true, element::i32, - int32_t(1), PartialShape {}), - - CumSumParams(PartialShape {3, 2, 4}, type, - std::vector {0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}, - std::vector {0, 1, 2, 3, 4, 5, 6, 7, - 8, 10, 12, 14, 16, 18, 20, 22, - 24, 27, 30, 33, 36, 39, 42, 45}, - false, false, element::i32, int32_t(0), PartialShape {}), - CumSumParams(PartialShape {3, 2, 4}, type, - std::vector {0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}, - std::vector {0, 1, 2, 3, 4, 6, 8, 10, - 8, 9, 10, 11, 20, 22, 24, 26, - 16, 17, 18, 19, 36, 38, 40, 42}, - false, false, element::i32, int32_t(1), PartialShape {}), - CumSumParams(PartialShape {3, 2, 4}, type, - std::vector {0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}, - std::vector {0, 1, 3, 6, 4, 9, 15, 22, - 8, 17, 27, 38, 12, 25, 39, 54, - 16, 33, 51, 70, 20, 41, 63, 86}, - false, false, element::i32, int32_t(2), PartialShape {}), + CumSumParams(PartialShape{6}, + type, + std::vector{1, 2, 3, 4, 5, 6}, + std::vector{1, 3, 6, 10, 15, 21}, + false, + false, + element::i32, + int32_t(0), + PartialShape{}), // axis i32 + CumSumParams(PartialShape{6}, + type, + std::vector{1, 2, 3, 4, 5, 6}, + std::vector{1, 3, 6, 10, 15, 21}, + false, + false, + element::i64, + int64_t(0), + PartialShape{}), // axis i64 + CumSumParams(PartialShape{6}, + type, + std::vector{1, 2, 3, 4, 5, 6}, + std::vector{21, 20, 18, 15, 11, 6}, + false, + true, + element::i64, + int64_t(0), + PartialShape{}), + CumSumParams(PartialShape{6}, + type, + std::vector{1, 2, 3, 4, 5, 6}, + std::vector{0, 1, 3, 6, 10, 15}, + true, + false, + element::i64, + int64_t(0), + PartialShape{}), + CumSumParams(PartialShape{6}, + type, + std::vector{1, 2, 3, 4, 5, 6}, + std::vector{20, 18, 15, 11, 6, 0}, + true, + true, + element::i64, + int64_t(0), + PartialShape{}), + + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{0, 1, 2, 3, 4, 6, 8, 10}, + false, + false, + element::i32, + int32_t(0), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{4, 6, 8, 10, 4, 5, 6, 7}, + false, + true, + element::i32, + int32_t(0), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{0, 0, 0, 0, 0, 1, 2, 3}, + true, + false, + element::i32, + int32_t(0), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{4, 5, 6, 7, 0, 0, 0, 0}, + true, + true, + element::i32, + int32_t(0), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{0, 1, 3, 6, 4, 9, 15, 22}, + false, + false, + element::i32, + int32_t(1), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{0, 0, 1, 3, 0, 4, 9, 15}, + true, + false, + element::i32, + int32_t(1), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{6, 6, 5, 3, 22, 18, 13, 7}, + false, + true, + element::i32, + int32_t(1), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{6, 5, 3, 0, 18, 13, 7, 0}, + true, + true, + element::i32, + int32_t(1), + PartialShape{}), + + CumSumParams( + PartialShape{3, 2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 42, 45}, + false, + false, + element::i32, + int32_t(0), + PartialShape{}), + CumSumParams( + PartialShape{3, 2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}, + std::vector{0, 1, 2, 3, 4, 6, 8, 10, 8, 9, 10, 11, 20, 22, 24, 26, 16, 17, 18, 19, 36, 38, 40, 42}, + false, + false, + element::i32, + int32_t(1), + PartialShape{}), + CumSumParams( + PartialShape{3, 2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}, + std::vector{0, 1, 3, 6, 4, 9, 15, 22, 8, 17, 27, 38, 12, 25, 39, 54, 16, 33, 51, 70, 20, 41, 63, 86}, + false, + false, + element::i32, + int32_t(2), + PartialShape{}), }; return opParams; } std::vector generateCumSumCombinedParams() { - const std::vector> opTypeParams { - generateCumSumParams(element::bf16), generateCumSumParams(element::f16), - generateCumSumParams(element::f32), generateCumSumParams(element::i32), - generateCumSumParams(element::i64), generateCumSumParams(element::u32), + const std::vector> opTypeParams{ + generateCumSumParams(element::bf16), + generateCumSumParams(element::f16), + generateCumSumParams(element::f32), + generateCumSumParams(element::i32), + generateCumSumParams(element::i64), + generateCumSumParams(element::u32), generateCumSumParams(element::i8)}; std::vector combinedParams; std::for_each(opTypeParams.begin(), opTypeParams.end(), [&](std::vector params) { @@ -182,6 +305,8 @@ std::vector generateCumSumCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_CumSum_With_Hardcoded_Refs, ReferenceCumSumLayerTest, ::testing::ValuesIn(generateCumSumCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_CumSum_With_Hardcoded_Refs, + ReferenceCumSumLayerTest, + ::testing::ValuesIn(generateCumSumCombinedParams()), ReferenceCumSumLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/deformable_convolution.cpp b/src/plugins/template/tests/functional/op_reference/deformable_convolution.cpp index 38de9a5c62f853..4c0a6e6578d678 100644 --- a/src/plugins/template/tests/functional/op_reference/deformable_convolution.cpp +++ b/src/plugins/template/tests/functional/op_reference/deformable_convolution.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/deformable_convolution.hpp" + #include -#include "openvino/op/deformable_convolution.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,15 +14,23 @@ using namespace ov; namespace { struct DeformableConvolutionParams { template - DeformableConvolutionParams(const PartialShape& inputShape, const PartialShape& filterShape, - const PartialShape& offsetShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, - const std::vector& offsetValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations, - const int64_t group = 1, const int64_t deformableGroup = 1, - const std::string& test_name = "", - const bool use_bilinear_interpolation_padding = false) + DeformableConvolutionParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& offsetShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& offsetValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations, + const int64_t group = 1, + const int64_t deformableGroup = 1, + const std::string& test_name = "", + const bool use_bilinear_interpolation_padding = false) : inputShape(inputShape), filterShape(filterShape), offsetShape(offsetShape), @@ -44,15 +53,25 @@ struct DeformableConvolutionParams { use_bilinear_interpolation_padding(use_bilinear_interpolation_padding) {} template - DeformableConvolutionParams(const PartialShape& inputShape, const PartialShape& filterShape, - const PartialShape& offsetShape, const PartialShape& outputShape, const PartialShape& maskShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, - const std::vector& offsetValues, const std::vector& oValues, const std::vector& maskValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations, - const int64_t group = 1, const int64_t deformableGroup = 1, - const std::string& test_name = "", - const bool use_bilinear_interpolation_padding = false) + DeformableConvolutionParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& offsetShape, + const PartialShape& outputShape, + const PartialShape& maskShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& offsetValues, + const std::vector& oValues, + const std::vector& maskValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations, + const int64_t group = 1, + const int64_t deformableGroup = 1, + const std::string& test_name = "", + const bool use_bilinear_interpolation_padding = false) : inputShape(inputShape), filterShape(filterShape), offsetShape(offsetShape), @@ -102,7 +121,8 @@ struct DeformableConvolutionParams { bool use_bilinear_interpolation_padding; }; -class ReferenceDeformableConvolutionLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceDeformableConvolutionLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -140,20 +160,21 @@ class ReferenceDeformableConvolutionLayerTest : public testing::TestWithParam(params.offsetType, params.offsetShape); const auto filter = std::make_shared(params.filterType, params.filterShape); const auto DeformableConvolution = std::make_shared(in, - offset, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad, - params.group, - params.deformableGroup); - return std::make_shared(NodeVector {DeformableConvolution}, ParameterVector {in, offset, filter}); + offset, + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad, + params.group, + params.deformableGroup); + return std::make_shared(NodeVector{DeformableConvolution}, ParameterVector{in, offset, filter}); } }; -class ReferenceDeformableConvolutionV8LayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceDeformableConvolutionV8LayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -199,32 +220,36 @@ class ReferenceDeformableConvolutionV8LayerTest : public testing::TestWithParam< const auto filter = std::make_shared(params.filterType, params.filterShape); if (params.maskShape.size() != 0) { const auto mask = std::make_shared(params.maskType, params.maskShape); - const auto DeformableConvolutionV8 = std::make_shared(in, - offset, - filter, - mask, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad, - params.group, - params.deformableGroup, - params.use_bilinear_interpolation_padding); - return std::make_shared(NodeVector {DeformableConvolutionV8}, ParameterVector {in, offset, filter, mask}); + const auto DeformableConvolutionV8 = + std::make_shared(in, + offset, + filter, + mask, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad, + params.group, + params.deformableGroup, + params.use_bilinear_interpolation_padding); + return std::make_shared(NodeVector{DeformableConvolutionV8}, + ParameterVector{in, offset, filter, mask}); } else { - const auto DeformableConvolutionV8 = std::make_shared(in, - offset, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad, - params.group, - params.deformableGroup, - params.use_bilinear_interpolation_padding); - return std::make_shared(NodeVector {DeformableConvolutionV8}, ParameterVector {in, offset, filter}); + const auto DeformableConvolutionV8 = + std::make_shared(in, + offset, + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad, + params.group, + params.deformableGroup, + params.use_bilinear_interpolation_padding); + return std::make_shared(NodeVector{DeformableConvolutionV8}, + ParameterVector{in, offset, filter}); } } }; @@ -241,2537 +266,3845 @@ template std::vector generateDeformableConvolutionFloatParams() { using T = typename element_type_traits::value_type; - std::vector deformableConvolutionParams { -// --------------------- 2D DeformableConvolution ------------------------------------------ - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -12.0f, -12.0f, -12.0f, - -12.0f, -12.0f, -12.0f, - -12.0f, -12.0f, -12.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, - 7.0f, 5.0f, 3.0f, - 1.0f, 3.0f, 5.0f}, - std::vector{ - 1.0f, 2.0f, - 0.0f, 1.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 1.0f, 3.0f, 5.0f, 0.0f, - 9.0f, 12.0f, 16.0f, 5.0f, - 15.0f, 20.0f, 16.0f, 3.0f, - 2.0f, 7.0f, 13.0f, 5.0f}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, - 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 1.0f, - 3.0f, 2.0f, 1.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 57.0f, 94.0f, - 66.0f, 102.0f}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 0.0f, - 3.0f, 1.0f, 2.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 78.0f, 106.0f, 134.0f, - 44.0f, 16.0f, -12.0f, - 80.0f, 84.0f, 88.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 0.0f, - 3.0f, 1.0f, 2.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 15.0f, 38.0f, 70.0f, 66.0f, - 33.0f, 78.0f, 134.0f, 103.0f, - 40.0f, 80.0f, 88.0f, 58.0f, - 30.0f, 56.0f, 72.0f, 34.0f}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 3.0f, 5.0f, 7.0f, - 7.0f, 5.0f, 3.0f, 1.0f, - 2.0f, 4.0f, 6.0f, 8.0f, - 8.0f, 6.0f, 4.0f, 2.0f, - // channel 2 - -1.0f, 3.0f, -5.0f, 7.0f, - 7.0f, -5.0f, 3.0f, -1.0f, - -2.0f, 4.0f, -6.0f, 8.0f, - 8.0f, -6.0f, 4.0f, -2.0f}, - std::vector{ - // channel 1 - 5.0f, 3.0f, 5.0f, - 1.0f, 3.0f, 1.0f, - 4.0f, 2.0f, 4.0f, - // channel 2 - -5.0f, 3.0f, 5.0f, - 1.0f, -3.0f, 1.0f, - 4.0f, 2.0f, -4.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 142.0f, 102.0f, - 94.0f, 160.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, - 7.0f, 5.0f, 3.0f, 1.0f, - 2.0f, 4.0f, 6.0f, 8.0f, - 8.0f, 6.0f, 4.0f, 2.0f}, - std::vector{ - // channel 1 - 5.0f, 3.0f, 5.0f, - 1.0f, 3.0f, 1.0f, - 4.0f, 2.0f, 4.0f, - // channel 2 - -5.0f, 3.0f, 5.0f, - 1.0f, -3.0f, 1.0f, - 4.0f, 2.0f, -4.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 104.0f, 140.0f, - 145.0f, 109.0f, - // channel 2 - 16.0f, 28.0f, - 19.0f, 7.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {2, 18, 2, 2}, - PartialShape {2, 1, 2, 2}, - IN_ET, - std::vector{ - // batch 1 - 1.0f, 3.0f, 2.0f, 1.0f, - 1.0f, 3.0f, 3.0f, 1.0f, - 2.0f, 1.0f, 1.0f, 3.0f, - 3.0f, 2.0f, 3.0f, 3.0f, - // batch 2 - -1.0f, 3.0f, 2.0f, -1.0f, - 1.0f, 3.0f, -3.0f, 1.0f, - -2.0f, -1.0f, 1.0f, 3.0f, - 3.0f, 2.0f, 3.0f, -3.0f}, - std::vector{ - -5.0f, 3.0f, 5.0f, - 1.0f, -3.0f, 1.0f, - 4.0f, 2.0f, -4.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // batch 1 - 15.0f, -15.0f, - 23.0f, 2.0f, - // batch 2 - -1.0f, -15.0f, - -5.0f, 6.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 2 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 356.0f, 392.0f, - 464.0f, 500.0f, - // channel 2 - -1004.0f, -1040.0f, - -1112.0f, -1148.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2), - DeformableConvolutionParams(PartialShape {1, 8, 3, 3}, - PartialShape {4, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 4, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f, - // channel 5 - 37.0f, 38.0f, 39.0f, - 40.0f, 41.0f, 42.0f, - 43.0f, 44.0f, 45.0f, - // channel 6 - 46.0f, 47.0f, 48.0f, - 49.0f, 50.0f, 51.0f, - 52.0f, 53.0f, 54.0f, - // channel 7 - 55.0f, 56.0f, 57.0f, - 58.0f, 59.0f, 60.0f, - 61.0f, 62.0f, 63.0f, - // channel 8 - 64.0f, 65.0f, 66.0f, - 67.0f, 68.0f, 69.0f, - 70.0f, 71.0f, 72.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - 9.0f, 10.0f, - 11.0f, 12.0f, - // filter 2 channel 2 - 13.0f, 14.0f, - 15.0f, 16.0f, - // filter 3 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 3 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // filter 4 channel 1 - -9.0f, -10.0f, - -11.0f, -12.0f, - // filter 4 channel 2 - -13.0f, -14.0f, - -15.0f, -16.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 356.0f, 392.0f, - 464.0f, 500.0f, - // channel 2 - 2636.0f, 2736.0f, - 2936.0f, 3036.0f, - // channel 3 - -1652.0f, -1688.0f, - -1760.0f, -1796.0f, - // channel 4 - -6236.0f, -6336.0f, - -6536.0f, -6636.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 4), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // channel 1 - 1.0f, 2.0f, - -1.0f, -2.0f, - // channel 2 - 3.0f, 4.0f, - -3.0f, -4.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -40.0f, -40.0f, -40.0f, - -40.0f, -40.0f, -40.0f, - -40.0f, -40.0f, -40.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 356.0f, 392.0f, - 464.0f, 500.0f, - -1004.0f, -1040.0f, - -1112.0f, -1148.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - // window 1 (Y=0, X=0) -> Y coordinate - 1.0f, 1.0f, 1.0f, // out1 .. out 3 - 1.0f, 1.0f, 1.0f, // out4 .. out 6 - 1.0f, 1.0f, 1.0f, // out7 .. out 9 - // window 1 (Y=0, X=0) -> X coordinate - 1.0f, 1.0f, 1.0f, // out1 .. out 3 - 1.0f, 1.0f, 1.0f, // out4 .. out 6 - 1.0f, 1.0f, 1.0f, // out7 .. out 9 - // window 2 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // window 2 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // window 3 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // window 3 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // window 4 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // window 4 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f}, - std::vector{ - -12.0f, -12.0f, -4.0f, - -12.0f, -12.0f, -4.0f, - 44.0f, 47.0f, 16.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_1"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 7.0f, 7.0f, - 7.0f, 6.0f, 3.0f, 1.0f, - 4.0f, 4.0f, 2.0f, 8.0f, - 1.0f, 1.0f, 1.0f, 2.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 0.0f, 1.0f, 0.0f, - 3.0f, 2.0f, 1.0f}, - std::vector{ - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f}, - std::vector{ - 56.0f, 39.0f, 44.0f, 18.0f, - 38.0f, 56.0f, 65.0f, 0.0f, - 19.0f, 38.0f, 20.0f, 20.0f, - 6.0f, 19.0f, 33.0f, 0.0f}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, - 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 1.0f, - 3.0f, 2.0f, 1.0f}, - std::vector{ - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f}, - std::vector{ - 57.0f, 40.0f, - 38.0f, 102.0f}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_stride"), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 0.0f, - 3.0f, 1.0f, 2.0f}, - std::vector{ - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 2.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f}, - std::vector{ - 16.0f, -2.0f, 134.0f, - 44.0f, -4.0f, -12.0f, - 10.0f, 84.0f, -4.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}, - 1, - 1, - "integral_offset_dialation"), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 0.0f, - 3.0f, 1.0f, 2.0f}, - std::vector{ - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f}, - std::vector{ - 15.0f, 38.0f, 2.0f, 66.0f, - 26.0f, 78.0f, 134.0f, 16.0f, - 23.0f, 80.0f, -4.0f, 58.0f, - 13.0f, 56.0f, 72.0f, -4.0f}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, - 1, - 1, - "integral_offset_padding_stride_dialation"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 3.0f, 5.0f, 7.0f, - 7.0f, 5.0f, 3.0f, 1.0f, - 2.0f, 4.0f, 6.0f, 8.0f, - 8.0f, 6.0f, 4.0f, 2.0f, - // channel 2 - -1.0f, 3.0f, -5.0f, 7.0f, - 7.0f, -5.0f, 3.0f, -1.0f, - -2.0f, 4.0f, -6.0f, 8.0f, - 8.0f, -6.0f, 4.0f, -2.0f}, - std::vector{ - // channel 1 - 5.0f, 3.0f, 5.0f, - 1.0f, 3.0f, 1.0f, - 4.0f, 2.0f, 4.0f, - // channel 2 - -5.0f, 3.0f, 5.0f, - 1.0f, -3.0f, 1.0f, - 4.0f, 2.0f, -4.0f}, - std::vector{ - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f}, - std::vector{ - 160.0f, 32.0f, - 94.0f, 20.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_input_channels"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - // filter 1 - 1.0f, 2.0f, - -1.0f, -2.0f, - // filter 2 - 3.0f, 4.0f, - -3.0f, -4.0f}, - std::vector{ - //channel 1: Y offsets - 1.0f, 1.0f, 1.0f, // out1 .. out 3 - 1.0f, 1.0f, 1.0f, // out4 .. out 6 - 1.0f, 1.0f, 1.0f, // out7 .. out 9 - //channel 1: X offsets - 1.0f, 1.0f, 1.0f, // out1 .. out 3 - 1.0f, 1.0f, 1.0f, // out4 .. out 6 - 1.0f, 1.0f, 1.0f, // out7 .. out 9 - //channel 2: Y offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - //channel 2: X offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - //channel 3: Y offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - //channel 3: X offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - //channel 4: Y offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - //channel 4: X offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f}, - std::vector{ - // output 1 - -12.0f, -12.0f, -4.0f, - -12.0f, -12.0f, -4.0f, - 44.0f, 47.0f, 16.0f, - // output 2 - -28.0f, -28.0f, -12.0f, - -28.0f, -28.0f, -12.0f, - 102.0f, 109.0f, 48.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_output_channels"), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {2, 8, 3, 3}, - PartialShape {2, 1, 3, 3}, - IN_ET, - std::vector{ - //batch 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - //batch 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - // batch1 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // batch2 - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f}, - std::vector{ - // batch 1 - -12.0f, -12.0f, -4.0f, - -12.0f, -12.0f, -4.0f, - 44.0f, 47.0f, 16.0f, - // batch 2 - -12.0f, -12.0f, -12.0f, - -12.0f, -12.0f, -12.0f, - -12.0f, -12.0f, -12.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_batch"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 2 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - // window 1 (F_Y=0, F_X=0) -> I_Y coordinate - 1.0f, 0.0f, 2.0f, 1.0f, // out1 .. out 4 - // window 1 (F_Y=0, F_X=0) -> I_X coordinate - 0.0f, 1.0f, 1.0f, 2.0f, // out1 .. out 4 - // window 2 (F_Y=0, F_X=1) -> I_Y coordinate - 1.0f, 1.0f, 1.0f, 1.0f, // out1 .. out 4 - // window 2 (F_Y=0, F_X=1) -> I_X coordinate - 1.0f, 1.0f, 1.0f, 1.0f, // out1 .. out 4 - // window 3 (F_Y=1, F_X=0) -> I_Y coordinate - 2.0f, 2.0f, 2.0f, 2.0f, // out1 .. out 4 - // window 3 (F_Y=1, F_X=0) -> I_X coordinate - 2.0f, 2.0f, 2.0f, 2.0f, // out1 .. out 4 - // window 4 (F_Y=1, F_X=1) -> I_Y coordinate - 2.0f, 2.0f, 2.0f, 2.0f, // out1 .. out 4 - // window 4 (F_Y=1, F_X=1) -> I_X coordinate - 2.0f, 2.0f, 2.0f, 2.0f}, // out1 .. out 4 - std::vector{ - // channel 1 - 171.0f, 63.0f, - 126.0f, 0.0f, - // channel 2 - -423.0f, -171.0f, - -270.0f, 0.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 1, - "integral_offset_groups_basic"), - DeformableConvolutionParams(PartialShape {1, 8, 3, 3}, - PartialShape {4, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 4, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f, - // channel 5 - 37.0f, 38.0f, 39.0f, - 40.0f, 41.0f, 42.0f, - 43.0f, 44.0f, 45.0f, - // channel 6 - 46.0f, 47.0f, 48.0f, - 49.0f, 50.0f, 51.0f, - 52.0f, 53.0f, 54.0f, - // channel 7 - 55.0f, 56.0f, 57.0f, - 58.0f, 59.0f, 60.0f, - 61.0f, 62.0f, 63.0f, - // channel 8 - 64.0f, 65.0f, 66.0f, - 67.0f, 68.0f, 69.0f, - 70.0f, 71.0f, 72.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - 9.0f, 10.0f, - 11.0f, 12.0f, - // filter 2 channel 2 - 13.0f, 14.0f, - 15.0f, 16.0f, - // filter 3 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 3 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // filter 4 channel 1 - -9.0f, -10.0f, - -11.0f, -12.0f, - // filter 4 channel 2 - -13.0f, -14.0f, - -15.0f, -16.0f}, - std::vector{ - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{ - // channel 1 - 500.0f, 234.0f, - 219.0f, 99.0f, - // channel 2 - 3036.0f, 1482.0f, - 1463.0f, 711.0f, - // channel 3 - -1796.0f, -810.0f, - -723.0f, -315.0f, - // channel 4 - -6636.0f, -3210.0f, - -3119.0f, -1503.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 4, - 1, - "integral_offset_groups_complex"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - // defgroup 1 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // defgroup 2 - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f}, - std::vector{ - // output 1 - 610.0f, 646.0f, 612.0f, - 754.0f, 790.0f, 732.0f, - 768.0f, 797.0f, 792.0f, - // output 2 - -610.0f, -646.0f, -612.0f, - -754.0f, -790.0f, -732.0f, - -768.0f, -797.0f, -792.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "integral_offset_deforgroup_basic"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 32, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f, - // channel 3 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 4 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f1: channel 3 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 4 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // f2: channel 3 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 4 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - // defgroup 1 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // defgroup 2 - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - // defgroup 3 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // defgroup 4 - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f}, - std::vector{ - // output 1 - 1220.0f, 1292.0f, 1224.0f, - 1508.0f, 1580.0f, 1464.0f, - 1536.0f, 1594.0f, 1584.0f, - // output 2 - -1220.0f, -1292.0f, -1224.0f, - -1508.0f, -1580.0f, -1464.0f, - -1536.0f, -1594.0f, -1584.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 4, - "integral_offset_deforgroup_complex1"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f, - // channel 3 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 4 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f1: channel 3 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 4 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // f2: channel 3 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 4 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - // defgroup 1 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // defgroup 2 - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f}, - std::vector{ - // output 1 - 1300.0f, 1372.0f, 992.0f, - 1588.0f, 1660.0f, 1200.0f, - 1228.0f, 1278.0f, 1096.0f, - // output 2 - -1300.0f, -1372.0f, -992.0f, - -1588.0f, -1660.0f, -1200.0f, - -1228.0f, -1278.0f, -1096.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "integral_offset_deforgroup_complex2"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - // defgroup 1 - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - // defgroup 2 - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f}, - std::vector{ - 500.0f, 234.0f, - 219.0f, 99.0f, - -1004.0f, -1040.0f, - -1112.0f, -1148.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2, - "integral_offset_groups_and_deforgroups"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - -11.999998f, -11.999999f, -4.000000f, - -10.799999f, -10.800001f, -3.600004f, - 44.300000f, 47.100000f, 16.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "real_offset_default"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 7.0f, 7.0f, - 7.0f, 6.0f, 3.0f, 1.0f, - 4.0f, 4.0f, 2.0f, 8.0f, - 1.0f, 1.0f, 1.0f, 2.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 0.0f, 1.0f, 0.0f, - 3.0f, 2.0f, 1.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 54.870006f, 61.630001f, 43.230003f, 28.600002f, - 35.590000f, 25.819999f, 20.880001f, 7.700000f, - 19.089998f, 31.719999f, 19.250000f, 7.399999f, - 6.299999f, 9.199999f, 5.099999f, 2.000000f}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}, - 1, - 1, - "real_offset_padding"), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, - 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 1.0f, - 3.0f, 2.0f, 1.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 61.229999f, 29.509998f, - 39.640003f, 22.640003f}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "real_offset_stride"), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 0.0f, - 3.0f, 1.0f, 2.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 15.260000f, 24.119997f, 6.439994f, -3.940005f, - 26.440002f, 20.319999f, -0.500001f, -11.720002f, - 23.500003f, 14.040000f, -1.279998f, -3.860000f, - 12.500000f, -2.599999f, -5.299999f, -3.099999f}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, - 1, - 1, - "real_offset_padding_stride_dialation"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 3.0f, 5.0f, 7.0f, - 7.0f, 5.0f, 3.0f, 1.0f, - 2.0f, 4.0f, 6.0f, 8.0f, - 8.0f, 6.0f, 4.0f, 2.0f, - // channel 2 - -1.0f, 3.0f, -5.0f, 7.0f, - 7.0f, -5.0f, 3.0f, -1.0f, - -2.0f, 4.0f, -6.0f, 8.0f, - 8.0f, -6.0f, 4.0f, -2.0f}, - std::vector{ - // channel 1 - 5.0f, 3.0f, 5.0f, - 1.0f, 3.0f, 1.0f, - 4.0f, 2.0f, 4.0f, - // channel 2 - -5.0f, 3.0f, 5.0f, - 1.0f, -3.0f, 1.0f, - 4.0f, 2.0f, -4.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 148.000000f, 43.259998f, - 91.279998f, 111.199996f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "real_offset_input_channels"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - // filter 1 - 1.0f, 2.0f, - -1.0f, -2.0f, - // filter 2 - 3.0f, 4.0f, - -3.0f, -4.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // output 1 - -12.000000f, -12.000000f, -4.000000f, - -10.799999f, -10.799995f, -3.600000f, - 44.299999f, 47.099998f, 16.000000f, - // output 2 - -28.000000f, -28.000000f, -12.000000f, - -25.200000f, -25.199993f, -10.800003f, - 102.699996f, 109.300003f, 48.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "real_offset_output_channels"), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {2, 8, 3, 3}, - PartialShape {2, 2, 3, 3}, - IN_ET, - std::vector{ - //batch 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - //batch 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // batch 1 - -12.000000f, -12.000000f, -4.000000f, - -10.799999f, -10.799995f, -3.600000f, - 44.299999f, 47.099998f, 16.000000f, - // batch 2 - -12.000000f, -12.000000f, -4.000000f, - -10.799999f, -10.799995f, -3.600000f, - 92.300003f, 95.099998f, 32.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "real_offset_batch"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 2 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // channel 1 - 505.800020f, 235.800000f, - 219.600000f, 99.000000f, - // channel 2 - -1153.800000f, -523.800000f, - -471.600000f, -207.0000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 1, - "real_offset_group_basic"), - DeformableConvolutionParams(PartialShape {1, 8, 3, 3}, - PartialShape {4, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 4, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f, - // channel 5 - 37.0f, 38.0f, 39.0f, - 40.0f, 41.0f, 42.0f, - 43.0f, 44.0f, 45.0f, - // channel 6 - 46.0f, 47.0f, 48.0f, - 49.0f, 50.0f, 51.0f, - 52.0f, 53.0f, 54.0f, - // channel 7 - 55.0f, 56.0f, 57.0f, - 58.0f, 59.0f, 60.0f, - 61.0f, 62.0f, 63.0f, - // channel 8 - 64.0f, 65.0f, 66.0f, - 67.0f, 68.0f, 69.0f, - 70.0f, 71.0f, 72.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - 9.0f, 10.0f, - 11.0f, 12.0f, - // filter 2 channel 2 - 13.0f, 14.0f, - 15.0f, 16.0f, - // filter 3 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 3 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // filter 4 channel 1 - -9.0f, -10.0f, - -11.0f, -12.0f, - // filter 4 channel 2 - -13.0f, -14.0f, - -15.0f, -16.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // channel 1 - 505.800020f, 235.800000f, - 219.600000f, 99.000000f, - // channel 2 - 3054.600000f, 1488.600000f, - 1465.200100f, 711.000000f, - // channel 3 - -1801.799900f, -811.80000f, - -723.600000f, -315.000000f, - // channel 4 - -6654.600000f, -3216.600000f, - -3121.200000f, -1503.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 4, - 1, - "real_offset_groups_complex"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // output 1 - 758.000000f, 792.000000f, 366.399993f, - 893.200012f, 927.200012f, 426.399993f, - 381.399993f, 394.600006f, 176.000000f, - // output 2 - -758.000000f, -792.000000f, -366.399993f, - -893.200012f, -927.200012f, -426.399993f, - -381.399993f, -394.600006f, -176.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "real_offset_deforgroup_basic"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 32, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f, - // channel 3 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 4 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f1: channel 3 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 4 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // f2: channel 3 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 4 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // output 1 - 1516.000000f, 1583.999877f, 732.799987f, - 1786.400146f, 1854.400024f, 852.799987f, - 762.799987f, 789.200012f, 352.000000f, - // output 2 - -1516.000000f, -1583.999877f, -732.799987f, - -1786.400146f, -1854.400024f, -852.799987f, - -762.799987f, -789.200012f, -352.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 4, - "real_offset_deforgroup_complex1"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f, - // channel 3 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 4 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f1: channel 3 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 4 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // f2: channel 3 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 4 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // output 1 - 1516.000000f, 1583.999877f, 732.799987f, - 1786.400146f, 1854.400024f, 852.799987f, - 762.799987f, 789.200012f, 352.000000f, - // output 2 - -1516.000000f, -1583.999877f, -732.799987f, - -1786.400146f, -1854.400024f, -852.799987f, - -762.799987f, -789.200012f, -352.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "real_offset_deforgroup_complex2"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 505.800020f, 235.800000f, - 219.600000f, 99.000000f, - -1153.800000f, -523.800000f, - -471.600000f, -207.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2, - "real_offset_groups_and_deforgroups"), + std::vector deformableConvolutionParams{ + // --------------------- 2D DeformableConvolution ------------------------------------------ + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-12.0f, -12.0f, -12.0f, -12.0f, -12.0f, -12.0f, -12.0f, -12.0f, -12.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 5.0f, 3.0f, 1.0f, 3.0f, 5.0f}, + std::vector{1.0f, 2.0f, 0.0f, 1.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{1.0f, + 3.0f, + 5.0f, + 0.0f, + 9.0f, + 12.0f, + 16.0f, + 5.0f, + 15.0f, + 20.0f, + 16.0f, + 3.0f, + 2.0f, + 7.0f, + 13.0f, + 5.0f}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, 2.0f, 4.0f, 6.0f, + 8.0f, 10.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 1.0f, 3.0f, 2.0f, 1.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{57.0f, 94.0f, 66.0f, 102.0f}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, + -5.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, + -2.0f, -4.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 7.0f, 5.0f, 3.0f, 1.0f, + -1.0f, -3.0f, -5.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 0.0f, 3.0f, 1.0f, 2.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{78.0f, 106.0f, 134.0f, 44.0f, 16.0f, -12.0f, 80.0f, 84.0f, 88.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, + -5.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, + -2.0f, -4.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 7.0f, 5.0f, 3.0f, 1.0f, + -1.0f, -3.0f, -5.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 0.0f, 3.0f, 1.0f, 2.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{15.0f, + 38.0f, + 70.0f, + 66.0f, + 33.0f, + 78.0f, + 134.0f, + 103.0f, + 40.0f, + 80.0f, + 88.0f, + 58.0f, + 30.0f, + 56.0f, + 72.0f, + 34.0f}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 3.0f, + 5.0f, + 7.0f, + 7.0f, + 5.0f, + 3.0f, + 1.0f, + 2.0f, + 4.0f, + 6.0f, + 8.0f, + 8.0f, + 6.0f, + 4.0f, + 2.0f, + // channel 2 + -1.0f, + 3.0f, + -5.0f, + 7.0f, + 7.0f, + -5.0f, + 3.0f, + -1.0f, + -2.0f, + 4.0f, + -6.0f, + 8.0f, + 8.0f, + -6.0f, + 4.0f, + -2.0f}, + std::vector{// channel 1 + 5.0f, + 3.0f, + 5.0f, + 1.0f, + 3.0f, + 1.0f, + 4.0f, + 2.0f, + 4.0f, + // channel 2 + -5.0f, + 3.0f, + 5.0f, + 1.0f, + -3.0f, + 1.0f, + 4.0f, + 2.0f, + -4.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{142.0f, 102.0f, 94.0f, 160.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector< + T>{1.0f, 3.0f, 5.0f, 7.0f, 7.0f, 5.0f, 3.0f, 1.0f, 2.0f, 4.0f, 6.0f, 8.0f, 8.0f, 6.0f, 4.0f, 2.0f}, + std::vector{// channel 1 + 5.0f, + 3.0f, + 5.0f, + 1.0f, + 3.0f, + 1.0f, + 4.0f, + 2.0f, + 4.0f, + // channel 2 + -5.0f, + 3.0f, + 5.0f, + 1.0f, + -3.0f, + 1.0f, + 4.0f, + 2.0f, + -4.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 104.0f, + 140.0f, + 145.0f, + 109.0f, + // channel 2 + 16.0f, + 28.0f, + 19.0f, + 7.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{2, 18, 2, 2}, + PartialShape{2, 1, 2, 2}, + IN_ET, + std::vector{// batch 1 + 1.0f, + 3.0f, + 2.0f, + 1.0f, + 1.0f, + 3.0f, + 3.0f, + 1.0f, + 2.0f, + 1.0f, + 1.0f, + 3.0f, + 3.0f, + 2.0f, + 3.0f, + 3.0f, + // batch 2 + -1.0f, + 3.0f, + 2.0f, + -1.0f, + 1.0f, + 3.0f, + -3.0f, + 1.0f, + -2.0f, + -1.0f, + 1.0f, + 3.0f, + 3.0f, + 2.0f, + 3.0f, + -3.0f}, + std::vector{-5.0f, 3.0f, 5.0f, 1.0f, -3.0f, 1.0f, 4.0f, 2.0f, -4.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// batch 1 + 15.0f, + -15.0f, + 23.0f, + 2.0f, + // batch 2 + -1.0f, + -15.0f, + -5.0f, + 6.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams(PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 2 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 356.0f, + 392.0f, + 464.0f, + 500.0f, + // channel 2 + -1004.0f, + -1040.0f, + -1112.0f, + -1148.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2), + DeformableConvolutionParams(PartialShape{1, 8, 3, 3}, + PartialShape{4, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 4, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f, + // channel 5 + 37.0f, + 38.0f, + 39.0f, + 40.0f, + 41.0f, + 42.0f, + 43.0f, + 44.0f, + 45.0f, + // channel 6 + 46.0f, + 47.0f, + 48.0f, + 49.0f, + 50.0f, + 51.0f, + 52.0f, + 53.0f, + 54.0f, + // channel 7 + 55.0f, + 56.0f, + 57.0f, + 58.0f, + 59.0f, + 60.0f, + 61.0f, + 62.0f, + 63.0f, + // channel 8 + 64.0f, + 65.0f, + 66.0f, + 67.0f, + 68.0f, + 69.0f, + 70.0f, + 71.0f, + 72.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + 9.0f, + 10.0f, + 11.0f, + 12.0f, + // filter 2 channel 2 + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // filter 3 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 3 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // filter 4 channel 1 + -9.0f, + -10.0f, + -11.0f, + -12.0f, + // filter 4 channel 2 + -13.0f, + -14.0f, + -15.0f, + -16.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 356.0f, + 392.0f, + 464.0f, + 500.0f, + // channel 2 + 2636.0f, + 2736.0f, + 2936.0f, + 3036.0f, + // channel 3 + -1652.0f, + -1688.0f, + -1760.0f, + -1796.0f, + // channel 4 + -6236.0f, + -6336.0f, + -6536.0f, + -6636.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 4), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// channel 1 + 1.0f, + 2.0f, + -1.0f, + -2.0f, + // channel 2 + 3.0f, + 4.0f, + -3.0f, + -4.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-40.0f, -40.0f, -40.0f, -40.0f, -40.0f, -40.0f, -40.0f, -40.0f, -40.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, + 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f, 36.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{356.0f, 392.0f, 464.0f, 500.0f, -1004.0f, -1040.0f, -1112.0f, -1148.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{// window 1 (Y=0, X=0) -> Y coordinate + 1.0f, + 1.0f, + 1.0f, // out1 .. out 3 + 1.0f, + 1.0f, + 1.0f, // out4 .. out 6 + 1.0f, + 1.0f, + 1.0f, // out7 .. out 9 + // window 1 (Y=0, X=0) -> X coordinate + 1.0f, + 1.0f, + 1.0f, // out1 .. out 3 + 1.0f, + 1.0f, + 1.0f, // out4 .. out 6 + 1.0f, + 1.0f, + 1.0f, // out7 .. out 9 + // window 2 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // window 2 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // window 3 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // window 3 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // window 4 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // window 4 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f}, + std::vector{-12.0f, -12.0f, -4.0f, -12.0f, -12.0f, -4.0f, 44.0f, 47.0f, 16.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_1"), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector< + T>{1.0f, 3.0f, 7.0f, 7.0f, 7.0f, 6.0f, 3.0f, 1.0f, 4.0f, 4.0f, 2.0f, 8.0f, 1.0f, 1.0f, 1.0f, 2.0f}, + std::vector{1.0f, 2.0f, 3.0f, 0.0f, 1.0f, 0.0f, 3.0f, 2.0f, 1.0f}, + std::vector{ + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f}, + std::vector{56.0f, + 39.0f, + 44.0f, + 18.0f, + 38.0f, + 56.0f, + 65.0f, + 0.0f, + 19.0f, + 38.0f, + 20.0f, + 20.0f, + 6.0f, + 19.0f, + 33.0f, + 0.0f}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, 2.0f, 4.0f, 6.0f, + 8.0f, 10.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 1.0f, 3.0f, 2.0f, 1.0f}, + std::vector{0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, + 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, + 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, + 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, + 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f}, + std::vector{57.0f, 40.0f, 38.0f, 102.0f}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_stride"), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, + -5.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, + -2.0f, -4.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 7.0f, 5.0f, 3.0f, 1.0f, + -1.0f, -3.0f, -5.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 0.0f, 3.0f, 1.0f, 2.0f}, + std::vector{1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, + 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, + 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, + 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, + 1.0f, 0.0f, 1.0f, 1.0f, 2.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f}, + std::vector{16.0f, -2.0f, 134.0f, 44.0f, -4.0f, -12.0f, 10.0f, 84.0f, -4.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}, + 1, + 1, + "integral_offset_dialation"), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, + -5.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, + -2.0f, -4.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 7.0f, 5.0f, 3.0f, 1.0f, + -1.0f, -3.0f, -5.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 0.0f, 3.0f, 1.0f, 2.0f}, + std::vector{ + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f}, + std::vector{15.0f, + 38.0f, + 2.0f, + 66.0f, + 26.0f, + 78.0f, + 134.0f, + 16.0f, + 23.0f, + 80.0f, + -4.0f, + 58.0f, + 13.0f, + 56.0f, + 72.0f, + -4.0f}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + 1, + 1, + "integral_offset_padding_stride_dialation"), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 3.0f, + 5.0f, + 7.0f, + 7.0f, + 5.0f, + 3.0f, + 1.0f, + 2.0f, + 4.0f, + 6.0f, + 8.0f, + 8.0f, + 6.0f, + 4.0f, + 2.0f, + // channel 2 + -1.0f, + 3.0f, + -5.0f, + 7.0f, + 7.0f, + -5.0f, + 3.0f, + -1.0f, + -2.0f, + 4.0f, + -6.0f, + 8.0f, + 8.0f, + -6.0f, + 4.0f, + -2.0f}, + std::vector{// channel 1 + 5.0f, + 3.0f, + 5.0f, + 1.0f, + 3.0f, + 1.0f, + 4.0f, + 2.0f, + 4.0f, + // channel 2 + -5.0f, + 3.0f, + 5.0f, + 1.0f, + -3.0f, + 1.0f, + 4.0f, + 2.0f, + -4.0f}, + std::vector{1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, + 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, + 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, + 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, + 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f}, + std::vector{160.0f, 32.0f, 94.0f, 20.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_input_channels"), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{// filter 1 + 1.0f, + 2.0f, + -1.0f, + -2.0f, + // filter 2 + 3.0f, + 4.0f, + -3.0f, + -4.0f}, + std::vector{// channel 1: Y offsets + 1.0f, + 1.0f, + 1.0f, // out1 .. out 3 + 1.0f, + 1.0f, + 1.0f, // out4 .. out 6 + 1.0f, + 1.0f, + 1.0f, // out7 .. out 9 + // channel 1: X offsets + 1.0f, + 1.0f, + 1.0f, // out1 .. out 3 + 1.0f, + 1.0f, + 1.0f, // out4 .. out 6 + 1.0f, + 1.0f, + 1.0f, // out7 .. out 9 + // channel 2: Y offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // channel 2: X offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // channel 3: Y offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // channel 3: X offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // channel 4: Y offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // channel 4: X offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f}, + std::vector{// output 1 + -12.0f, + -12.0f, + -4.0f, + -12.0f, + -12.0f, + -4.0f, + 44.0f, + 47.0f, + 16.0f, + // output 2 + -28.0f, + -28.0f, + -12.0f, + -28.0f, + -28.0f, + -12.0f, + 102.0f, + 109.0f, + 48.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_output_channels"), + DeformableConvolutionParams(PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{2, 8, 3, 3}, + PartialShape{2, 1, 3, 3}, + IN_ET, + std::vector{// batch 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // batch 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{// batch1 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // batch2 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f}, + std::vector{// batch 1 + -12.0f, + -12.0f, + -4.0f, + -12.0f, + -12.0f, + -4.0f, + 44.0f, + 47.0f, + 16.0f, + // batch 2 + -12.0f, + -12.0f, + -12.0f, + -12.0f, + -12.0f, + -12.0f, + -12.0f, + -12.0f, + -12.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_batch"), + DeformableConvolutionParams(PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 2 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{// window 1 (F_Y=0, F_X=0) -> I_Y coordinate + 1.0f, + 0.0f, + 2.0f, + 1.0f, // out1 .. out 4 + // window 1 (F_Y=0, F_X=0) -> I_X coordinate + 0.0f, + 1.0f, + 1.0f, + 2.0f, // out1 .. out 4 + // window 2 (F_Y=0, F_X=1) -> I_Y coordinate + 1.0f, + 1.0f, + 1.0f, + 1.0f, // out1 .. out 4 + // window 2 (F_Y=0, F_X=1) -> I_X coordinate + 1.0f, + 1.0f, + 1.0f, + 1.0f, // out1 .. out 4 + // window 3 (F_Y=1, F_X=0) -> I_Y coordinate + 2.0f, + 2.0f, + 2.0f, + 2.0f, // out1 .. out 4 + // window 3 (F_Y=1, F_X=0) -> I_X coordinate + 2.0f, + 2.0f, + 2.0f, + 2.0f, // out1 .. out 4 + // window 4 (F_Y=1, F_X=1) -> I_Y coordinate + 2.0f, + 2.0f, + 2.0f, + 2.0f, // out1 .. out 4 + // window 4 (F_Y=1, F_X=1) -> I_X coordinate + 2.0f, + 2.0f, + 2.0f, + 2.0f}, // out1 .. out 4 + std::vector{ // channel 1 + 171.0f, + 63.0f, + 126.0f, + 0.0f, + // channel 2 + -423.0f, + -171.0f, + -270.0f, + 0.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 1, + "integral_offset_groups_basic"), + DeformableConvolutionParams(PartialShape{1, 8, 3, 3}, + PartialShape{4, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 4, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f, + // channel 5 + 37.0f, + 38.0f, + 39.0f, + 40.0f, + 41.0f, + 42.0f, + 43.0f, + 44.0f, + 45.0f, + // channel 6 + 46.0f, + 47.0f, + 48.0f, + 49.0f, + 50.0f, + 51.0f, + 52.0f, + 53.0f, + 54.0f, + // channel 7 + 55.0f, + 56.0f, + 57.0f, + 58.0f, + 59.0f, + 60.0f, + 61.0f, + 62.0f, + 63.0f, + // channel 8 + 64.0f, + 65.0f, + 66.0f, + 67.0f, + 68.0f, + 69.0f, + 70.0f, + 71.0f, + 72.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + 9.0f, + 10.0f, + 11.0f, + 12.0f, + // filter 2 channel 2 + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // filter 3 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 3 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // filter 4 channel 1 + -9.0f, + -10.0f, + -11.0f, + -12.0f, + // filter 4 channel 2 + -13.0f, + -14.0f, + -15.0f, + -16.0f}, + std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{// channel 1 + 500.0f, + 234.0f, + 219.0f, + 99.0f, + // channel 2 + 3036.0f, + 1482.0f, + 1463.0f, + 711.0f, + // channel 3 + -1796.0f, + -810.0f, + -723.0f, + -315.0f, + // channel 4 + -6636.0f, + -3210.0f, + -3119.0f, + -1503.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 4, + 1, + "integral_offset_groups_complex"), + DeformableConvolutionParams(PartialShape{1, 2, 4, 4}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{// defgroup 1 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // defgroup 2 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f}, + std::vector{// output 1 + 610.0f, + 646.0f, + 612.0f, + 754.0f, + 790.0f, + 732.0f, + 768.0f, + 797.0f, + 792.0f, + // output 2 + -610.0f, + -646.0f, + -612.0f, + -754.0f, + -790.0f, + -732.0f, + -768.0f, + -797.0f, + -792.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "integral_offset_deforgroup_basic"), + DeformableConvolutionParams(PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 32, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + // channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 4 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f1: channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 4 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // f2: channel 3 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 4 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{// defgroup 1 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // defgroup 2 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + // defgroup 3 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // defgroup 4 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f}, + std::vector{// output 1 + 1220.0f, + 1292.0f, + 1224.0f, + 1508.0f, + 1580.0f, + 1464.0f, + 1536.0f, + 1594.0f, + 1584.0f, + // output 2 + -1220.0f, + -1292.0f, + -1224.0f, + -1508.0f, + -1580.0f, + -1464.0f, + -1536.0f, + -1594.0f, + -1584.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 4, + "integral_offset_deforgroup_complex1"), + DeformableConvolutionParams(PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + // channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 4 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f1: channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 4 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // f2: channel 3 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 4 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{// defgroup 1 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // defgroup 2 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f}, + std::vector{// output 1 + 1300.0f, + 1372.0f, + 992.0f, + 1588.0f, + 1660.0f, + 1200.0f, + 1228.0f, + 1278.0f, + 1096.0f, + // output 2 + -1300.0f, + -1372.0f, + -992.0f, + -1588.0f, + -1660.0f, + -1200.0f, + -1228.0f, + -1278.0f, + -1096.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "integral_offset_deforgroup_complex2"), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, + 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f, 36.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{// defgroup 1 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // defgroup 2 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f}, + std::vector{500.0f, 234.0f, 219.0f, 99.0f, -1004.0f, -1040.0f, -1112.0f, -1148.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2, + "integral_offset_groups_and_deforgroups"), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{-11.999998f, + -11.999999f, + -4.000000f, + -10.799999f, + -10.800001f, + -3.600004f, + 44.300000f, + 47.100000f, + 16.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "real_offset_default"), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector< + T>{1.0f, 3.0f, 7.0f, 7.0f, 7.0f, 6.0f, 3.0f, 1.0f, 4.0f, 4.0f, 2.0f, 8.0f, 1.0f, 1.0f, 1.0f, 2.0f}, + std::vector{1.0f, 2.0f, 3.0f, 0.0f, 1.0f, 0.0f, 3.0f, 2.0f, 1.0f}, + std::vector{ + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{54.870006f, + 61.630001f, + 43.230003f, + 28.600002f, + 35.590000f, + 25.819999f, + 20.880001f, + 7.700000f, + 19.089998f, + 31.719999f, + 19.250000f, + 7.399999f, + 6.299999f, + 9.199999f, + 5.099999f, + 2.000000f}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}, + 1, + 1, + "real_offset_padding"), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, 2.0f, 4.0f, 6.0f, + 8.0f, 10.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 1.0f, 3.0f, 2.0f, 1.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{61.229999f, 29.509998f, 39.640003f, 22.640003f}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "real_offset_stride"), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, + -5.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, + -2.0f, -4.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 7.0f, 5.0f, 3.0f, 1.0f, + -1.0f, -3.0f, -5.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 0.0f, 3.0f, 1.0f, 2.0f}, + std::vector{ + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{15.260000f, + 24.119997f, + 6.439994f, + -3.940005f, + 26.440002f, + 20.319999f, + -0.500001f, + -11.720002f, + 23.500003f, + 14.040000f, + -1.279998f, + -3.860000f, + 12.500000f, + -2.599999f, + -5.299999f, + -3.099999f}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + 1, + 1, + "real_offset_padding_stride_dialation"), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 3.0f, + 5.0f, + 7.0f, + 7.0f, + 5.0f, + 3.0f, + 1.0f, + 2.0f, + 4.0f, + 6.0f, + 8.0f, + 8.0f, + 6.0f, + 4.0f, + 2.0f, + // channel 2 + -1.0f, + 3.0f, + -5.0f, + 7.0f, + 7.0f, + -5.0f, + 3.0f, + -1.0f, + -2.0f, + 4.0f, + -6.0f, + 8.0f, + 8.0f, + -6.0f, + 4.0f, + -2.0f}, + std::vector{// channel 1 + 5.0f, + 3.0f, + 5.0f, + 1.0f, + 3.0f, + 1.0f, + 4.0f, + 2.0f, + 4.0f, + // channel 2 + -5.0f, + 3.0f, + 5.0f, + 1.0f, + -3.0f, + 1.0f, + 4.0f, + 2.0f, + -4.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{148.000000f, 43.259998f, 91.279998f, 111.199996f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "real_offset_input_channels"), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{// filter 1 + 1.0f, + 2.0f, + -1.0f, + -2.0f, + // filter 2 + 3.0f, + 4.0f, + -3.0f, + -4.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// output 1 + -12.000000f, + -12.000000f, + -4.000000f, + -10.799999f, + -10.799995f, + -3.600000f, + 44.299999f, + 47.099998f, + 16.000000f, + // output 2 + -28.000000f, + -28.000000f, + -12.000000f, + -25.200000f, + -25.199993f, + -10.800003f, + 102.699996f, + 109.300003f, + 48.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "real_offset_output_channels"), + DeformableConvolutionParams( + PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{2, 8, 3, 3}, + PartialShape{2, 2, 3, 3}, + IN_ET, + std::vector{// batch 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // batch 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// batch 1 + -12.000000f, + -12.000000f, + -4.000000f, + -10.799999f, + -10.799995f, + -3.600000f, + 44.299999f, + 47.099998f, + 16.000000f, + // batch 2 + -12.000000f, + -12.000000f, + -4.000000f, + -10.799999f, + -10.799995f, + -3.600000f, + 92.300003f, + 95.099998f, + 32.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "real_offset_batch"), + DeformableConvolutionParams(PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 2 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// channel 1 + 505.800020f, + 235.800000f, + 219.600000f, + 99.000000f, + // channel 2 + -1153.800000f, + -523.800000f, + -471.600000f, + -207.0000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 1, + "real_offset_group_basic"), + DeformableConvolutionParams(PartialShape{1, 8, 3, 3}, + PartialShape{4, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 4, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f, + // channel 5 + 37.0f, + 38.0f, + 39.0f, + 40.0f, + 41.0f, + 42.0f, + 43.0f, + 44.0f, + 45.0f, + // channel 6 + 46.0f, + 47.0f, + 48.0f, + 49.0f, + 50.0f, + 51.0f, + 52.0f, + 53.0f, + 54.0f, + // channel 7 + 55.0f, + 56.0f, + 57.0f, + 58.0f, + 59.0f, + 60.0f, + 61.0f, + 62.0f, + 63.0f, + // channel 8 + 64.0f, + 65.0f, + 66.0f, + 67.0f, + 68.0f, + 69.0f, + 70.0f, + 71.0f, + 72.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + 9.0f, + 10.0f, + 11.0f, + 12.0f, + // filter 2 channel 2 + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // filter 3 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 3 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // filter 4 channel 1 + -9.0f, + -10.0f, + -11.0f, + -12.0f, + // filter 4 channel 2 + -13.0f, + -14.0f, + -15.0f, + -16.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// channel 1 + 505.800020f, + 235.800000f, + 219.600000f, + 99.000000f, + // channel 2 + 3054.600000f, + 1488.600000f, + 1465.200100f, + 711.000000f, + // channel 3 + -1801.799900f, + -811.80000f, + -723.600000f, + -315.000000f, + // channel 4 + -6654.600000f, + -3216.600000f, + -3121.200000f, + -1503.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 4, + 1, + "real_offset_groups_complex"), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// output 1 + 758.000000f, + 792.000000f, + 366.399993f, + 893.200012f, + 927.200012f, + 426.399993f, + 381.399993f, + 394.600006f, + 176.000000f, + // output 2 + -758.000000f, + -792.000000f, + -366.399993f, + -893.200012f, + -927.200012f, + -426.399993f, + -381.399993f, + -394.600006f, + -176.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "real_offset_deforgroup_basic"), + DeformableConvolutionParams( + PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 32, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + // channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 4 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f1: channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 4 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // f2: channel 3 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 4 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{ + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// output 1 + 1516.000000f, + 1583.999877f, + 732.799987f, + 1786.400146f, + 1854.400024f, + 852.799987f, + 762.799987f, + 789.200012f, + 352.000000f, + // output 2 + -1516.000000f, + -1583.999877f, + -732.799987f, + -1786.400146f, + -1854.400024f, + -852.799987f, + -762.799987f, + -789.200012f, + -352.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 4, + "real_offset_deforgroup_complex1"), + DeformableConvolutionParams( + PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + // channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 4 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f1: channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 4 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // f2: channel 3 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 4 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// output 1 + 1516.000000f, + 1583.999877f, + 732.799987f, + 1786.400146f, + 1854.400024f, + 852.799987f, + 762.799987f, + 789.200012f, + 352.000000f, + // output 2 + -1516.000000f, + -1583.999877f, + -732.799987f, + -1786.400146f, + -1854.400024f, + -852.799987f, + -762.799987f, + -789.200012f, + -352.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "real_offset_deforgroup_complex2"), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, + 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f, 36.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{505.800020f, + 235.800000f, + 219.600000f, + 99.000000f, + -1153.800000f, + -523.800000f, + -471.600000f, + -207.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2, + "real_offset_groups_and_deforgroups"), }; return deformableConvolutionParams; } @@ -2780,1843 +4113,2608 @@ template std::vector generateDeformableConvolutionIntParams() { using T = typename element_type_traits::value_type; - std::vector deformableConvolutionParams { -// --------------------- 2D DeformableConvolution ------------------------------------------ - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -12, -12, -12, - -12, -12, -12, - -12, -12, -12}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, - 7, 5, 3, - 1, 3, 5}, - std::vector{ - 1, 2, - 0, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 1, 3, 5, 0, - 9, 12, 16, 5, - 15, 20, 16, 3, - 2, 7, 13, 5}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 57, 94, - 66, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, 11, 13, - 7, 5, 3, 1, -1, -3, -5, - 2, 4, 6, 8, 10, 12, 14, - 8, 6, 4, 2, 0, -2, -4, - 2, 4, 6, 8, 10, 12, 14, - 7, 5, 3, 1, -1, -3, -5, - 8, 6, 4, 2, 0, -2, -4}, - std::vector{ - 1, 2, 3, - 1, 1, 0, - 3, 1, 2}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 78, 106, 134, - 44, 16, -12, - 80, 84, 88}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, 11, 13, - 7, 5, 3, 1, -1, -3, -5, - 2, 4, 6, 8, 10, 12, 14, - 8, 6, 4, 2, 0, -2, -4, - 2, 4, 6, 8, 10, 12, 14, - 7, 5, 3, 1, -1, -3, -5, - 8, 6, 4, 2, 0, -2, -4}, - std::vector{ - 1, 2, 3, - 1, 1, 0, - 3, 1, 2}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 15, 38, 70, 66, - 33, 78, 134, 103, - 40, 80, 88, 58, - 30, 56, 72, 34}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 3, 5, 7, - 7, 5, 3, 1, - 2, 4, 6, 8, - 8, 6, 4, 2, - // channel 2 - -1, 3, -5, 7, - 7, -5, 3, -1, - -2, 4, -6, 8, - 8, -6, 4, -2}, - std::vector{ - // channel 1 - 5, 3, 5, - 1, 3, 1, - 4, 2, 4, - // channel 2 - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 142, 102, - 94, 160}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, - 7, 5, 3, 1, - 2, 4, 6, 8, - 8, 6, 4, 2}, - std::vector{ - // channel 1 - 5, 3, 5, - 1, 3, 1, - 4, 2, 4, - // channel 2 - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 104, 140, - 145, 109, - // channel 2 - 16, 28, - 19, 7}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {2, 18, 2, 2}, - PartialShape {2, 1, 2, 2}, - IN_ET, - std::vector{ - // batch 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // batch 2 - -1, 3, 2, -1, - 1, 3, -3, 1, - -2, -1, 1, 3, - 3, 2, 3, -3}, - std::vector{ - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // batch 1 - 15, -15, - 23, 2, - // batch 2 - -1, -15, - -5, 6}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - // channel 2 - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - // channel 3 - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - // channel 4 - 28, 29, 30, - 31, 32, 33, - 34, 35, 36}, - std::vector{ - // filter 1 channel 1 - 1, 2, - 3, 4, - // filter 1 channel 2 - 5, 6, - 7, 8, - // filter 2 channel 1 - -1, -2, - -3, -4, - // filter 2 channel 2 - -5, -6, - -7, -8}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 356, 392, - 464, 500, - // channel 2 - -1004, -1040, - -1112, -1148}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2), - DeformableConvolutionParams(PartialShape {1, 8, 3, 3}, - PartialShape {4, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 4, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - // channel 2 - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - // channel 3 - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - // channel 4 - 28, 29, 30, - 31, 32, 33, - 34, 35, 36, - // channel 5 - 37, 38, 39, - 40, 41, 42, - 43, 44, 45, - // channel 6 - 46, 47, 48, - 49, 50, 51, - 52, 53, 54, - // channel 7 - 55, 56, 57, - 58, 59, 60, - 61, 62, 63, - // channel 8 - 64, 65, 66, - 67, 68, 69, - 70, 71, 72}, - std::vector{ - // filter 1 channel 1 - 1, 2, - 3, 4, - // filter 1 channel 2 - 5, 6, - 7, 8, - // filter 2 channel 1 - 9, 10, - 11, 12, - // filter 2 channel 2 - 13, 14, - 15, 16, - // filter 3 channel 1 - -1, -2, - -3, -4, - // filter 3 channel 2 - -5, -6, - -7, -8, - // filter 4 channel 1 - -9, -10, - -11, -12, - // filter 4 channel 2 - -13, -14, - -15, -16}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 356, 392, - 464, 500, - // channel 2 - 2636, 2736, - 2936, 3036, - // channel 3 - -1652, -1688, - -1760, -1796, - // channel 4 - -6236, -6336, - -6536, -6636}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 4), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - // channel 1 - 1, 2, - -1, -2, - // channel 2 - 3, 4, - -3, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -40, -40, -40, - -40, -40, -40, - -40, -40, -40}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - 28, 29, 30, - 31, 32, 33, - 34, 35, 36}, - std::vector{ - 1, 2, - 3, 4, - 5, 6, - 7, 8, - -1, -2, - -3, -4, - -5, -6, - -7, -8}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 356, 392, - 464, 500, - -1004, -1040, - -1112, -1148}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - // window 1 (Y=0, X=0) -> Y coordinate - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - // window 1 (Y=0, X=0) -> X coordinate - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - // window 2 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 2 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 3 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 3 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 4 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 4 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1}, - std::vector{ - -12, -12, -4, - -12, -12, -4, - 44, 47, 16}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_1"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 7, 7, - 7, 6, 3, 1, - 4, 4, 2, 8, - 1, 1, 1, 2}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 3, 2, 1}, - std::vector{ - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2}, - std::vector{ - 56, 39, 44, 18, - 38, 56, 65, 0, - 19, 38, 20, 20, - 6, 19, 33, 0}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0}, - std::vector{ - 57, 40, - 38, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_stride"), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, 11, 13, - 7, 5, 3, 1, -1, -3, -5, - 2, 4, 6, 8, 10, 12, 14, - 8, 6, 4, 2, 0, -2, -4, - 2, 4, 6, 8, 10, 12, 14, - 7, 5, 3, 1, -1, -3, -5, - 8, 6, 4, 2, 0, -2, -4}, - std::vector{ - 1, 2, 3, - 1, 1, 0, - 3, 1, 2}, - std::vector{ - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 2, 0, - 0, 2, 0, - 1, 0, 1}, - std::vector{ - 16, -2, 134, - 44, -4, -12, - 10, 84, -4}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}, - 1, - 1, - "integral_offset_dialation"), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, 11, 13, - 7, 5, 3, 1, -1, -3, -5, - 2, 4, 6, 8, 10, 12, 14, - 8, 6, 4, 2, 0, -2, -4, - 2, 4, 6, 8, 10, 12, 14, - 7, 5, 3, 1, -1, -3, -5, - 8, 6, 4, 2, 0, -2, -4}, - std::vector{ - 1, 2, 3, - 1, 1, 0, - 3, 1, 2}, - std::vector{ - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2}, - std::vector{ - 15, 38, 2, 66, - 26, 78, 134, 16, - 23, 80, -4, 58, - 13, 56, 72, -4}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, - 1, - 1, - "integral_offset_padding_stride_dialation"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 3, 5, 7, - 7, 5, 3, 1, - 2, 4, 6, 8, - 8, 6, 4, 2, - // channel 2 - -1, 3, -5, 7, - 7, -5, 3, -1, - -2, 4, -6, 8, - 8, -6, 4, -2}, - std::vector{ - // channel 1 - 5, 3, 5, - 1, 3, 1, - 4, 2, 4, - // channel 2 - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2}, - std::vector{ - 160, 32, - 94, 20}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_input_channels"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - // filter 1 - 1, 2, - -1, -2, - // filter 2 - 3, 4, - -3, -4}, - std::vector{ - //channel 1: Y offsets - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - //channel 1: X offsets - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - //channel 2: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 2: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 3: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 3: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 4: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 4: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1}, - std::vector{ - // output 1 - -12, -12, -4, - -12, -12, -4, - 44, 47, 16, - // output 2 - -28, -28, -12, - -28, -28, -12, - 102, 109, 48}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_output_channels"), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {2, 8, 3, 3}, - PartialShape {2, 1, 3, 3}, - IN_ET, - std::vector{ - //batch 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - //batch 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - // batch1 - 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, 1, 1, - 1, 1, 1, - 1, 1, 1, - // batch2 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}, - std::vector{ - // batch 1 - -12, -12, -4, - -12, -12, -4, - 44, 47, 16, - // batch 2 - -12, -12, -12, - -12, -12, -12, - -12, -12, -12}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_batch"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - // channel 2 - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - // channel 3 - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - // channel 4 - 28, 29, 30, - 31, 32, 33, - 34, 35, 36}, - std::vector{ - // filter 1 channel 1 - 1, 2, - 3, 4, - // filter 1 channel 2 - 5, 6, - 7, 8, - // filter 2 channel 1 - -1, -2, - -3, -4, - // filter 2 channel 2 - -5, -6, - -7, -8}, - std::vector{ - // window 1 (F_Y=0, F_X=0) -> I_Y coordinate - 1, 0, 2, 1, // out1 .. out 4 - // window 1 (F_Y=0, F_X=0) -> I_X coordinate - 0, 1, 1, 2, // out1 .. out 4 - // window 2 (F_Y=0, F_X=1) -> I_Y coordinate - 1, 1, 1, 1, // out1 .. out 4 - // window 2 (F_Y=0, F_X=1) -> I_X coordinate - 1, 1, 1, 1, // out1 .. out 4 - // window 3 (F_Y=1, F_X=0) -> I_Y coordinate - 2, 2, 2, 2, // out1 .. out 4 - // window 3 (F_Y=1, F_X=0) -> I_X coordinate - 2, 2, 2, 2, // out1 .. out 4 - // window 4 (F_Y=1, F_X=1) -> I_Y coordinate - 2, 2, 2, 2, // out1 .. out 4 - // window 4 (F_Y=1, F_X=1) -> I_X coordinate - 2, 2, 2, 2}, // out1 .. out 4 - std::vector{ - // channel 1 - 171, 63, - 126, 0, - // channel 2 - -423, -171, - -270, 0}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 1, - "integral_offset_groups_basic"), - DeformableConvolutionParams(PartialShape {1, 8, 3, 3}, - PartialShape {4, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 4, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - // channel 2 - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - // channel 3 - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - // channel 4 - 28, 29, 30, - 31, 32, 33, - 34, 35, 36, - // channel 5 - 37, 38, 39, - 40, 41, 42, - 43, 44, 45, - // channel 6 - 46, 47, 48, - 49, 50, 51, - 52, 53, 54, - // channel 7 - 55, 56, 57, - 58, 59, 60, - 61, 62, 63, - // channel 8 - 64, 65, 66, - 67, 68, 69, - 70, 71, 72}, - std::vector{ - // filter 1 channel 1 - 1, 2, - 3, 4, - // filter 1 channel 2 - 5, 6, - 7, 8, - // filter 2 channel 1 - 9, 10, - 11, 12, - // filter 2 channel 2 - 13, 14, - 15, 16, - // filter 3 channel 1 - -1, -2, - -3, -4, - // filter 3 channel 2 - -5, -6, - -7, -8, - // filter 4 channel 1 - -9, -10, - -11, -12, - // filter 4 channel 2 - -13, -14, - -15, -16}, - std::vector{ - 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{ - // channel 1 - 500, 234, - 219, 99, - // channel 2 - 3036, 1482, - 1463, 711, - // channel 3 - -1796, -810, - -723, -315, - // channel 4 - -6636, -3210, - -3119, -1503}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 4, - 1, - "integral_offset_groups_complex"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - // f1: channel 1 - 1, 2, - 3, 4, - // f1: channel 2 - 5, 6, - 7, 8, - // f2: channel 1 - -1, -2, - -3, -4, - // f2: channel 2 - -5, -6, - -7, -8}, - std::vector{ - // defgroup 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, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // defgroup 2 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}, - std::vector{ - // output 1 - 610, 646, 612, - 754, 790, 732, - 768, 797, 792, - // output 2 - -610, -646, -612, - -754, -790, -732, - -768, -797, -792}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "integral_offset_deforgroup_basic"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 32, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - // channel 3 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 4 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - // f1: channel 1 - 1, 2, - 3, 4, - // f1: channel 2 - 5, 6, - 7, 8, - // f1: channel 3 - 1, 2, - 3, 4, - // f1: channel 4 - 5, 6, - 7, 8, - // f2: channel 1 - -1, -2, - -3, -4, - // f2: channel 2 - -5, -6, - -7, -8, - // f2: channel 3 - -1, -2, - -3, -4, - // f2: channel 4 - -5, -6, - -7, -8}, - std::vector{ - // defgroup 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, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // defgroup 2 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - // defgroup 3 - 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, 1, 1, - 1, 1, 1, - 1, 1, 1, - // defgroup 4 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}, - std::vector{ - // output 1 - 1220, 1292, 1224, - 1508, 1580, 1464, - 1536, 1594, 1584, - // output 2 - -1220, -1292, -1224, - -1508, -1580, -1464, - -1536, -1594, -1584}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 4, - "integral_offset_deforgroup_complex1"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - // channel 3 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 4 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - // f1: channel 1 - 1, 2, - 3, 4, - // f1: channel 2 - 5, 6, - 7, 8, - // f1: channel 3 - 1, 2, - 3, 4, - // f1: channel 4 - 5, 6, - 7, 8, - // f2: channel 1 - -1, -2, - -3, -4, - // f2: channel 2 - -5, -6, - -7, -8, - // f2: channel 3 - -1, -2, - -3, -4, - // f2: channel 4 - -5, -6, - -7, -8}, - std::vector{ - // defgroup 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, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // defgroup 2 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}, - std::vector{ - // output 1 - 1300, 1372, 992, - 1588, 1660, 1200, - 1228, 1278, 1096, - // output 2 - -1300, -1372, -992, - -1588, -1660, -1200, - -1228, -1278, -1096}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "integral_offset_deforgroup_complex2"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - 28, 29, 30, - 31, 32, 33, - 34, 35, 36}, - std::vector{ - 1, 2, - 3, 4, - 5, 6, - 7, 8, - -1, -2, - -3, -4, - -5, -6, - -7, -8}, - std::vector{ - // defgroup 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, - // defgroup 2 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}, - std::vector{ - 500, 234, - 219, 99, - -1004, -1040, - -1112, -1148}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2, - "integral_offset_groups_and_deforgroups"), + std::vector deformableConvolutionParams{ + // --------------------- 2D DeformableConvolution ------------------------------------------ + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{1, 2, -1, -2}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-12, -12, -12, -12, -12, -12, -12, -12, -12}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 5, 3, 1, 3, 5}, + std::vector{1, 2, 0, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{1, 3, 5, 0, 9, 12, 16, 5, 15, 20, 16, 3, 2, 7, 13, 5}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{57, 94, 66, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 11, 13, 7, 5, 3, 1, -1, -3, -5, 2, 4, 6, 8, 10, 12, 14, 8, 6, 4, 2, + 0, -2, -4, 2, 4, 6, 8, 10, 12, 14, 7, 5, 3, 1, -1, -3, -5, 8, 6, 4, 2, 0, -2, -4}, + std::vector{1, 2, 3, 1, 1, 0, 3, 1, 2}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{78, 106, 134, 44, 16, -12, 80, 84, 88}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 11, 13, 7, 5, 3, 1, -1, -3, -5, 2, 4, 6, 8, 10, 12, 14, 8, 6, 4, 2, + 0, -2, -4, 2, 4, 6, 8, 10, 12, 14, 7, 5, 3, 1, -1, -3, -5, 8, 6, 4, 2, 0, -2, -4}, + std::vector{1, 2, 3, 1, 1, 0, 3, 1, 2}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{15, 38, 70, 66, 33, 78, 134, 103, 40, 80, 88, 58, 30, 56, 72, 34}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 3, + 5, + 7, + 7, + 5, + 3, + 1, + 2, + 4, + 6, + 8, + 8, + 6, + 4, + 2, + // channel 2 + -1, + 3, + -5, + 7, + 7, + -5, + 3, + -1, + -2, + 4, + -6, + 8, + 8, + -6, + 4, + -2}, + std::vector{// channel 1 + 5, + 3, + 5, + 1, + 3, + 1, + 4, + 2, + 4, + // channel 2 + -5, + 3, + 5, + 1, + -3, + 1, + 4, + 2, + -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{142, 102, 94, 160}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 7, 5, 3, 1, 2, 4, 6, 8, 8, 6, 4, 2}, + std::vector{// channel 1 + 5, + 3, + 5, + 1, + 3, + 1, + 4, + 2, + 4, + // channel 2 + -5, + 3, + 5, + 1, + -3, + 1, + 4, + 2, + -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 104, + 140, + 145, + 109, + // channel 2 + 16, + 28, + 19, + 7}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{2, 18, 2, 2}, + PartialShape{2, 1, 2, 2}, + IN_ET, + std::vector{// batch 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // batch 2 + -1, + 3, + 2, + -1, + 1, + 3, + -3, + 1, + -2, + -1, + 1, + 3, + 3, + 2, + 3, + -3}, + std::vector{-5, 3, 5, 1, -3, 1, 4, 2, -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// batch 1 + 15, + -15, + 23, + 2, + // batch 2 + -1, + -15, + -5, + 6}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams(PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + // channel 2 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + // channel 3 + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + // channel 4 + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36}, + std::vector{// filter 1 channel 1 + 1, + 2, + 3, + 4, + // filter 1 channel 2 + 5, + 6, + 7, + 8, + // filter 2 channel 1 + -1, + -2, + -3, + -4, + // filter 2 channel 2 + -5, + -6, + -7, + -8}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 356, + 392, + 464, + 500, + // channel 2 + -1004, + -1040, + -1112, + -1148}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2), + DeformableConvolutionParams(PartialShape{1, 8, 3, 3}, + PartialShape{4, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 4, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + // channel 2 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + // channel 3 + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + // channel 4 + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + // channel 5 + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + // channel 6 + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + // channel 7 + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + // channel 8 + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72}, + std::vector{// filter 1 channel 1 + 1, + 2, + 3, + 4, + // filter 1 channel 2 + 5, + 6, + 7, + 8, + // filter 2 channel 1 + 9, + 10, + 11, + 12, + // filter 2 channel 2 + 13, + 14, + 15, + 16, + // filter 3 channel 1 + -1, + -2, + -3, + -4, + // filter 3 channel 2 + -5, + -6, + -7, + -8, + // filter 4 channel 1 + -9, + -10, + -11, + -12, + // filter 4 channel 2 + -13, + -14, + -15, + -16}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 356, + 392, + 464, + 500, + // channel 2 + 2636, + 2736, + 2936, + 3036, + // channel 3 + -1652, + -1688, + -1760, + -1796, + // channel 4 + -6236, + -6336, + -6536, + -6636}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 4), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{// channel 1 + 1, + 2, + -1, + -2, + // channel 2 + 3, + 4, + -3, + -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-40, -40, -40, -40, -40, -40, -40, -40, -40}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, -1, -2, -3, -4, -5, -6, -7, -8}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{356, 392, 464, 500, -1004, -1040, -1112, -1148}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{1, 2, -1, -2}, + std::vector{// window 1 (Y=0, X=0) -> Y coordinate + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // window 1 (Y=0, X=0) -> X coordinate + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // window 2 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 2 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 3 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 3 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 4 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 4 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1}, + std::vector{-12, -12, -4, -12, -12, -4, 44, 47, 16}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_1"), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 7, 7, 6, 3, 1, 4, 4, 2, 8, 1, 1, 1, 2}, + std::vector{1, 2, 3, 0, 1, 0, 3, 2, 1}, + std::vector{1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2}, + std::vector{56, 39, 44, 18, 38, 56, 65, 0, 19, 38, 20, 20, 6, 19, 33, 0}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0}, + std::vector{57, 40, 38, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_stride"), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 11, 13, 7, 5, 3, 1, -1, -3, -5, 2, 4, 6, 8, 10, 12, 14, 8, 6, 4, 2, + 0, -2, -4, 2, 4, 6, 8, 10, 12, 14, 7, 5, 3, 1, -1, -3, -5, 8, 6, 4, 2, 0, -2, -4}, + std::vector{1, 2, 3, 1, 1, 0, 3, 1, 2}, + std::vector{1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, + 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, + 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, + 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, + 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, + 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 2, 0, 0, 2, 0, 1, 0, 1}, + std::vector{16, -2, 134, 44, -4, -12, 10, 84, -4}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}, + 1, + 1, + "integral_offset_dialation"), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 11, 13, 7, 5, 3, 1, -1, -3, -5, 2, 4, 6, 8, 10, 12, 14, 8, 6, 4, 2, + 0, -2, -4, 2, 4, 6, 8, 10, 12, 14, 7, 5, 3, 1, -1, -3, -5, 8, 6, 4, 2, 0, -2, -4}, + std::vector{1, 2, 3, 1, 1, 0, 3, 1, 2}, + std::vector{1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2}, + std::vector{15, 38, 2, 66, 26, 78, 134, 16, 23, 80, -4, 58, 13, 56, 72, -4}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + 1, + 1, + "integral_offset_padding_stride_dialation"), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 3, + 5, + 7, + 7, + 5, + 3, + 1, + 2, + 4, + 6, + 8, + 8, + 6, + 4, + 2, + // channel 2 + -1, + 3, + -5, + 7, + 7, + -5, + 3, + -1, + -2, + 4, + -6, + 8, + 8, + -6, + 4, + -2}, + std::vector{// channel 1 + 5, + 3, + 5, + 1, + 3, + 1, + 4, + 2, + 4, + // channel 2 + -5, + 3, + 5, + 1, + -3, + 1, + 4, + 2, + -4}, + std::vector{1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, + 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, + 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2}, + std::vector{160, 32, 94, 20}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_input_channels"), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{// filter 1 + 1, + 2, + -1, + -2, + // filter 2 + 3, + 4, + -3, + -4}, + std::vector{// channel 1: Y offsets + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // channel 1: X offsets + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // channel 2: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 2: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 3: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 3: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 4: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 4: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1}, + std::vector{// output 1 + -12, + -12, + -4, + -12, + -12, + -4, + 44, + 47, + 16, + // output 2 + -28, + -28, + -12, + -28, + -28, + -12, + 102, + 109, + 48}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_output_channels"), + DeformableConvolutionParams(PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{2, 8, 3, 3}, + PartialShape{2, 1, 3, 3}, + IN_ET, + std::vector{// batch 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // batch 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{1, 2, -1, -2}, + std::vector{// batch1 + 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, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // batch2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{// batch 1 + -12, + -12, + -4, + -12, + -12, + -4, + 44, + 47, + 16, + // batch 2 + -12, + -12, + -12, + -12, + -12, + -12, + -12, + -12, + -12}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_batch"), + DeformableConvolutionParams(PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + // channel 2 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + // channel 3 + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + // channel 4 + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36}, + std::vector{// filter 1 channel 1 + 1, + 2, + 3, + 4, + // filter 1 channel 2 + 5, + 6, + 7, + 8, + // filter 2 channel 1 + -1, + -2, + -3, + -4, + // filter 2 channel 2 + -5, + -6, + -7, + -8}, + std::vector{// window 1 (F_Y=0, F_X=0) -> I_Y coordinate + 1, + 0, + 2, + 1, // out1 .. out 4 + // window 1 (F_Y=0, F_X=0) -> I_X coordinate + 0, + 1, + 1, + 2, // out1 .. out 4 + // window 2 (F_Y=0, F_X=1) -> I_Y coordinate + 1, + 1, + 1, + 1, // out1 .. out 4 + // window 2 (F_Y=0, F_X=1) -> I_X coordinate + 1, + 1, + 1, + 1, // out1 .. out 4 + // window 3 (F_Y=1, F_X=0) -> I_Y coordinate + 2, + 2, + 2, + 2, // out1 .. out 4 + // window 3 (F_Y=1, F_X=0) -> I_X coordinate + 2, + 2, + 2, + 2, // out1 .. out 4 + // window 4 (F_Y=1, F_X=1) -> I_Y coordinate + 2, + 2, + 2, + 2, // out1 .. out 4 + // window 4 (F_Y=1, F_X=1) -> I_X coordinate + 2, + 2, + 2, + 2}, // out1 .. out 4 + std::vector{ // channel 1 + 171, + 63, + 126, + 0, + // channel 2 + -423, + -171, + -270, + 0}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 1, + "integral_offset_groups_basic"), + DeformableConvolutionParams(PartialShape{1, 8, 3, 3}, + PartialShape{4, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 4, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + // channel 2 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + // channel 3 + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + // channel 4 + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + // channel 5 + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + // channel 6 + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + // channel 7 + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + // channel 8 + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72}, + std::vector{// filter 1 channel 1 + 1, + 2, + 3, + 4, + // filter 1 channel 2 + 5, + 6, + 7, + 8, + // filter 2 channel 1 + 9, + 10, + 11, + 12, + // filter 2 channel 2 + 13, + 14, + 15, + 16, + // filter 3 channel 1 + -1, + -2, + -3, + -4, + // filter 3 channel 2 + -5, + -6, + -7, + -8, + // filter 4 channel 1 + -9, + -10, + -11, + -12, + // filter 4 channel 2 + -13, + -14, + -15, + -16}, + std::vector{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{// channel 1 + 500, + 234, + 219, + 99, + // channel 2 + 3036, + 1482, + 1463, + 711, + // channel 3 + -1796, + -810, + -723, + -315, + // channel 4 + -6636, + -3210, + -3119, + -1503}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 4, + 1, + "integral_offset_groups_complex"), + DeformableConvolutionParams(PartialShape{1, 2, 4, 4}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{// f1: channel 1 + 1, + 2, + 3, + 4, + // f1: channel 2 + 5, + 6, + 7, + 8, + // f2: channel 1 + -1, + -2, + -3, + -4, + // f2: channel 2 + -5, + -6, + -7, + -8}, + std::vector{// defgroup 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, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // defgroup 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{// output 1 + 610, + 646, + 612, + 754, + 790, + 732, + 768, + 797, + 792, + // output 2 + -610, + -646, + -612, + -754, + -790, + -732, + -768, + -797, + -792}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "integral_offset_deforgroup_basic"), + DeformableConvolutionParams(PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 32, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + // channel 3 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 4 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{// f1: channel 1 + 1, + 2, + 3, + 4, + // f1: channel 2 + 5, + 6, + 7, + 8, + // f1: channel 3 + 1, + 2, + 3, + 4, + // f1: channel 4 + 5, + 6, + 7, + 8, + // f2: channel 1 + -1, + -2, + -3, + -4, + // f2: channel 2 + -5, + -6, + -7, + -8, + // f2: channel 3 + -1, + -2, + -3, + -4, + // f2: channel 4 + -5, + -6, + -7, + -8}, + std::vector{// defgroup 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, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // defgroup 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + // defgroup 3 + 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, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // defgroup 4 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{// output 1 + 1220, + 1292, + 1224, + 1508, + 1580, + 1464, + 1536, + 1594, + 1584, + // output 2 + -1220, + -1292, + -1224, + -1508, + -1580, + -1464, + -1536, + -1594, + -1584}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 4, + "integral_offset_deforgroup_complex1"), + DeformableConvolutionParams(PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + // channel 3 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 4 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{// f1: channel 1 + 1, + 2, + 3, + 4, + // f1: channel 2 + 5, + 6, + 7, + 8, + // f1: channel 3 + 1, + 2, + 3, + 4, + // f1: channel 4 + 5, + 6, + 7, + 8, + // f2: channel 1 + -1, + -2, + -3, + -4, + // f2: channel 2 + -5, + -6, + -7, + -8, + // f2: channel 3 + -1, + -2, + -3, + -4, + // f2: channel 4 + -5, + -6, + -7, + -8}, + std::vector{// defgroup 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, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // defgroup 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{// output 1 + 1300, + 1372, + 992, + 1588, + 1660, + 1200, + 1228, + 1278, + 1096, + // output 2 + -1300, + -1372, + -992, + -1588, + -1660, + -1200, + -1228, + -1278, + -1096}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "integral_offset_deforgroup_complex2"), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, -1, -2, -3, -4, -5, -6, -7, -8}, + std::vector{// defgroup 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, + // defgroup 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{500, 234, 219, 99, -1004, -1040, -1112, -1148}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2, + "integral_offset_groups_and_deforgroups"), }; return deformableConvolutionParams; } @@ -4625,583 +6723,687 @@ template std::vector generateDeformableConvolutionInt8Params() { using T = typename element_type_traits::value_type; - std::vector deformableConvolutionParams { -// --------------------- 2D DeformableConvolution ------------------------------------------ - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -12, -12, -12, - -12, -12, -12, - -12, -12, -12}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, - 7, 5, 3, - 1, 3, 5}, - std::vector{ - 1, 2, - 0, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 1, 3, 5, 0, - 9, 12, 16, 5, - 15, 20, 16, 3, - 2, 7, 13, 5}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 57, 94, - 66, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {2, 18, 2, 2}, - PartialShape {2, 1, 2, 2}, - IN_ET, - std::vector{ - // batch 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // batch 2 - -1, 3, 2, -1, - 1, 3, -3, 1, - -2, -1, 1, 3, - 3, 2, 3, -3}, - std::vector{ - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // batch 1 - 15, -15, - 23, 2, - // batch 2 - -1, -15, - -5, 6}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - // channel 1 - 1, 2, - -1, -2, - // channel 2 - 3, 4, - -3, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -40, -40, -40, - -40, -40, -40, - -40, -40, -40}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - // window 1 (Y=0, X=0) -> Y coordinate - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - // window 1 (Y=0, X=0) -> X coordinate - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - // window 2 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 2 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 3 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 3 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 4 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 4 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1}, - std::vector{ - -12, -12, -4, - -12, -12, -4, - 44, 47, 16}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_1"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 7, 7, - 7, 6, 3, 1, - 4, 4, 2, 8, - 1, 1, 1, 2}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 3, 2, 1}, - std::vector{ - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2}, - std::vector{ - 56, 39, 44, 18, - 38, 56, 65, 0, - 19, 38, 20, 20, - 6, 19, 33, 0}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0}, - std::vector{ - 57, 40, - 38, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_stride"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - // filter 1 - 1, 2, - -1, -2, - // filter 2 - 3, 4, - -3, -4}, - std::vector{ - //channel 1: Y offsets - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - //channel 1: X offsets - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - //channel 2: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 2: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 3: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 3: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 4: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 4: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1}, - std::vector{ - // output 1 - -12, -12, -4, - -12, -12, -4, - 44, 47, 16, - // output 2 - -28, -28, -12, - -28, -28, -12, - 102, 109, 48}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_output_channels"), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {2, 8, 3, 3}, - PartialShape {2, 1, 3, 3}, - IN_ET, - std::vector{ - //batch 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - //batch 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - // batch1 - 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, 1, 1, - 1, 1, 1, - 1, 1, 1, - // batch2 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}, - std::vector{ - // batch 1 - -12, -12, -4, - -12, -12, -4, - 44, 47, 16, - // batch 2 - -12, -12, -12, - -12, -12, -12, - -12, -12, -12}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_batch"), + std::vector deformableConvolutionParams{ + // --------------------- 2D DeformableConvolution ------------------------------------------ + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{1, 2, -1, -2}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-12, -12, -12, -12, -12, -12, -12, -12, -12}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 5, 3, 1, 3, 5}, + std::vector{1, 2, 0, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{1, 3, 5, 0, 9, 12, 16, 5, 15, 20, 16, 3, 2, 7, 13, 5}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{57, 94, 66, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{2, 18, 2, 2}, + PartialShape{2, 1, 2, 2}, + IN_ET, + std::vector{// batch 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // batch 2 + -1, + 3, + 2, + -1, + 1, + 3, + -3, + 1, + -2, + -1, + 1, + 3, + 3, + 2, + 3, + -3}, + std::vector{-5, 3, 5, 1, -3, 1, 4, 2, -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// batch 1 + 15, + -15, + 23, + 2, + // batch 2 + -1, + -15, + -5, + 6}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{// channel 1 + 1, + 2, + -1, + -2, + // channel 2 + 3, + 4, + -3, + -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-40, -40, -40, -40, -40, -40, -40, -40, -40}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{1, 2, -1, -2}, + std::vector{// window 1 (Y=0, X=0) -> Y coordinate + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // window 1 (Y=0, X=0) -> X coordinate + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // window 2 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 2 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 3 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 3 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 4 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 4 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1}, + std::vector{-12, -12, -4, -12, -12, -4, 44, 47, 16}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_1"), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 7, 7, 6, 3, 1, 4, 4, 2, 8, 1, 1, 1, 2}, + std::vector{1, 2, 3, 0, 1, 0, 3, 2, 1}, + std::vector{1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2}, + std::vector{56, 39, 44, 18, 38, 56, 65, 0, 19, 38, 20, 20, 6, 19, 33, 0}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0}, + std::vector{57, 40, 38, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_stride"), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{// filter 1 + 1, + 2, + -1, + -2, + // filter 2 + 3, + 4, + -3, + -4}, + std::vector{// channel 1: Y offsets + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // channel 1: X offsets + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // channel 2: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 2: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 3: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 3: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 4: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 4: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1}, + std::vector{// output 1 + -12, + -12, + -4, + -12, + -12, + -4, + 44, + 47, + 16, + // output 2 + -28, + -28, + -12, + -28, + -28, + -12, + 102, + 109, + 48}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_output_channels"), + DeformableConvolutionParams(PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{2, 8, 3, 3}, + PartialShape{2, 1, 3, 3}, + IN_ET, + std::vector{// batch 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // batch 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{1, 2, -1, -2}, + std::vector{// batch1 + 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, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // batch2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{// batch 1 + -12, + -12, + -4, + -12, + -12, + -4, + 44, + 47, + 16, + // batch 2 + -12, + -12, + -12, + -12, + -12, + -12, + -12, + -12, + -12}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_batch"), }; return deformableConvolutionParams; } @@ -5210,248 +7412,108 @@ template std::vector generateDeformableConvolutionUintParams() { using T = typename element_type_traits::value_type; - std::vector deformableConvolutionParams { -// --------------------- 2D DeformableConvolution ------------------------------------------ - DeformableConvolutionParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, - 7, 5, 3, - 1, 3, 5}, - std::vector{ - 1, 2, - 0, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 1, 3, 5, 0, - 9, 12, 16, 5, - 15, 20, 16, 3, - 2, 7, 13, 5}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 57, 94, - 66, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 7, 7, - 7, 6, 3, 1, - 4, 4, 2, 8, - 1, 1, 1, 2}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 3, 2, 1}, - std::vector{ - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2}, - std::vector{ - 56, 39, 44, 18, - 38, 56, 65, 0, - 19, 38, 20, 20, - 6, 19, 33, 0}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0}, - std::vector{ - 57, 40, - 38, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_stride"), + std::vector deformableConvolutionParams{ + // --------------------- 2D DeformableConvolution ------------------------------------------ + DeformableConvolutionParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 5, 3, 1, 3, 5}, + std::vector{1, 2, 0, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{1, 3, 5, 0, 9, 12, 16, 5, 15, 20, 16, 3, 2, 7, 13, 5}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{57, 94, 66, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 7, 7, 6, 3, 1, 4, 4, 2, 8, 1, 1, 1, 2}, + std::vector{1, 2, 3, 0, 1, 0, 3, 2, 1}, + std::vector{1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2}, + std::vector{56, 39, 44, 18, 38, 56, 65, 0, 19, 38, 20, 20, 6, 19, 33, 0}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0}, + std::vector{57, 40, 38, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_stride"), }; return deformableConvolutionParams; } @@ -5460,287 +7522,214 @@ template std::vector generateDeformableConvolutionV8MaskParams() { using T = typename element_type_traits::value_type; - std::vector deformableConvolutionParams { - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 4, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, - std::vector{ - -6.0f, -6.0f, -6.0f, - -6.0f, -6.0f, -6.0f, - -6.0f, -6.0f, -6.0f}, - std::vector{ - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "v8_zeroed_offset_default_mask", - true), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 220.15443f , 38.199608f, - 32.643005f, 59.340614f, - -419.0005f , -252.08015f, - -182.44444f , -165.99335f}, - std::vector{ - 0.64f, - 0.18f, - 0.23f, - 0.74f, - 0.89f, - 0.70f, - 0.13f, - 0.99f, - 0.48f, - 0.20f, - 0.67f, - 0.88f, - 0.17f, - 0.19f, - 0.53f, - 0.22f, - 0.50f, - 0.07f, - 0.21f, - 0.99f, - 0.09f, - 0.28f, - 0.66f, - 0.91f, - 0.28f, - 0.89f, - 0.91f, - 0.39f, - 0.70f, - 0.67f, - 0.26f, - 0.09f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2, - "v8_real_offset_groups_deforgroups_mask", - true), - DeformableConvolutionParams(PartialShape {1, 2, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 184.25163, 101.04752, - 77.46842, 77.56562, - -184.25163, -101.04752, - -77.46842, -77.56562}, - std::vector{ - 0.64f, - 0.18f, - 0.23f, - 0.74f, - 0.89f, - 0.70f, - 0.13f, - 0.99f, - 0.48f, - 0.20f, - 0.67f, - 0.88f, - 0.17f, - 0.19f, - 0.53f, - 0.22f, - 0.50f, - 0.07f, - 0.21f, - 0.99f, - 0.09f, - 0.28f, - 0.66f, - 0.91f, - 0.28f, - 0.89f, - 0.91f, - 0.39f, - 0.70f, - 0.67f, - 0.26f, - 0.09f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "v8_real_offset_groups_deforgroups_mask_2", - true), - DeformableConvolutionParams(PartialShape {1, 2, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, - -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, - -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, - -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f}, - std::vector{ - 45.910797, 104.8302, - 63.12059 , 151.47789, - -45.910797, -104.8302, - -63.12059 , -151.47789}, - std::vector{ - 0.64f, - 0.18f, - 0.23f, - 0.74f, - 0.89f, - 0.70f, - 0.13f, - 0.99f, - 0.48f, - 0.20f, - 0.67f, - 0.88f, - 0.17f, - 0.19f, - 0.53f, - 0.22f, - 0.50f, - 0.07f, - 0.21f, - 0.99f, - 0.09f, - 0.28f, - 0.66f, - 0.91f, - 0.28f, - 0.89f, - 0.91f, - 0.39f, - 0.70f, - 0.67f, - 0.26f, - 0.09f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "v8_neg_offset_groups_deforgroups_mask", - true), + std::vector deformableConvolutionParams{ + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 4, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, + std::vector{-6.0f, -6.0f, -6.0f, -6.0f, -6.0f, -6.0f, -6.0f, -6.0f, -6.0f}, + std::vector{0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, + 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, + 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "v8_zeroed_offset_default_mask", + true), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + IN_ET, + std::vector{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, + 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f, 36.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector< + T>{220.15443f, 38.199608f, 32.643005f, 59.340614f, -419.0005f, -252.08015f, -182.44444f, -165.99335f}, + std::vector{0.64f, 0.18f, 0.23f, 0.74f, 0.89f, 0.70f, 0.13f, 0.99f, 0.48f, 0.20f, 0.67f, + 0.88f, 0.17f, 0.19f, 0.53f, 0.22f, 0.50f, 0.07f, 0.21f, 0.99f, 0.09f, 0.28f, + 0.66f, 0.91f, 0.28f, 0.89f, 0.91f, 0.39f, 0.70f, 0.67f, 0.26f, 0.09f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2, + "v8_real_offset_groups_deforgroups_mask", + true), + DeformableConvolutionParams( + PartialShape{1, 2, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{184.25163, 101.04752, 77.46842, 77.56562, -184.25163, -101.04752, -77.46842, -77.56562}, + std::vector{0.64f, 0.18f, 0.23f, 0.74f, 0.89f, 0.70f, 0.13f, 0.99f, 0.48f, 0.20f, 0.67f, + 0.88f, 0.17f, 0.19f, 0.53f, 0.22f, 0.50f, 0.07f, 0.21f, 0.99f, 0.09f, 0.28f, + 0.66f, 0.91f, 0.28f, 0.89f, 0.91f, 0.39f, 0.70f, 0.67f, 0.26f, 0.09f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "v8_real_offset_groups_deforgroups_mask_2", + true), + DeformableConvolutionParams( + PartialShape{1, 2, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{-1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, + -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, + -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, + -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, + -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f}, + std::vector{45.910797, 104.8302, 63.12059, 151.47789, -45.910797, -104.8302, -63.12059, -151.47789}, + std::vector{0.64f, 0.18f, 0.23f, 0.74f, 0.89f, 0.70f, 0.13f, 0.99f, 0.48f, 0.20f, 0.67f, + 0.88f, 0.17f, 0.19f, 0.53f, 0.22f, 0.50f, 0.07f, 0.21f, 0.99f, 0.09f, 0.28f, + 0.66f, 0.91f, 0.28f, 0.89f, 0.91f, 0.39f, 0.70f, 0.67f, 0.26f, 0.09f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "v8_neg_offset_groups_deforgroups_mask", + true), }; return deformableConvolutionParams; } std::vector generateDeformableConvolutionCombinedParams() { - const std::vector> deformableConvolutionTypeParams { + const std::vector> deformableConvolutionTypeParams{ generateDeformableConvolutionFloatParams(), generateDeformableConvolutionFloatParams(), generateDeformableConvolutionFloatParams(), @@ -5752,8 +7741,7 @@ std::vector generateDeformableConvolutionCombinedPa generateDeformableConvolutionUintParams(), generateDeformableConvolutionUintParams(), generateDeformableConvolutionUintParams(), - generateDeformableConvolutionUintParams() - }; + generateDeformableConvolutionUintParams()}; std::vector combinedParams; for (const auto& params : deformableConvolutionTypeParams) { @@ -5763,7 +7751,7 @@ std::vector generateDeformableConvolutionCombinedPa } std::vector generateDeformableConvolutionV8CombinedParams() { - const std::vector> deformableConvolutionTypeParams { + const std::vector> deformableConvolutionTypeParams{ generateDeformableConvolutionFloatParams(), generateDeformableConvolutionFloatParams(), generateDeformableConvolutionFloatParams(), @@ -5779,8 +7767,7 @@ std::vector generateDeformableConvolutionV8Combined generateDeformableConvolutionUintParams(), generateDeformableConvolutionUintParams(), generateDeformableConvolutionUintParams(), - generateDeformableConvolutionUintParams() - }; + generateDeformableConvolutionUintParams()}; std::vector combinedParams; for (const auto& params : deformableConvolutionTypeParams) { @@ -5789,10 +7776,14 @@ std::vector generateDeformableConvolutionV8Combined return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_DeformableConvolution_With_Hardcoded_Refs, ReferenceDeformableConvolutionLayerTest, - testing::ValuesIn(generateDeformableConvolutionCombinedParams()), ReferenceDeformableConvolutionLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DeformableConvolution_With_Hardcoded_Refs, + ReferenceDeformableConvolutionLayerTest, + testing::ValuesIn(generateDeformableConvolutionCombinedParams()), + ReferenceDeformableConvolutionLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_DeformableConvolutionV8_With_Hardcoded_Refs, ReferenceDeformableConvolutionV8LayerTest, - testing::ValuesIn(generateDeformableConvolutionV8CombinedParams()), ReferenceDeformableConvolutionV8LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DeformableConvolutionV8_With_Hardcoded_Refs, + ReferenceDeformableConvolutionV8LayerTest, + testing::ValuesIn(generateDeformableConvolutionV8CombinedParams()), + ReferenceDeformableConvolutionV8LayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/deformable_psroi_pooling.cpp b/src/plugins/template/tests/functional/op_reference/deformable_psroi_pooling.cpp index 1ae803ac83aca1..858c5d287f4206 100644 --- a/src/plugins/template/tests/functional/op_reference/deformable_psroi_pooling.cpp +++ b/src/plugins/template/tests/functional/op_reference/deformable_psroi_pooling.cpp @@ -5,8 +5,9 @@ #include #include -#include "openvino/op/psroi_pooling.hpp" + #include "base_reference_test.hpp" +#include "openvino/op/psroi_pooling.hpp" #include "openvino/opsets/opset1.hpp" using namespace reference_tests; @@ -15,12 +16,24 @@ using namespace ov; namespace { struct DeformablePSROIPoolingParams { template - DeformablePSROIPoolingParams(const size_t batch_in, const size_t channel_in, const size_t height_in, const size_t width_in, - const float spatial_scale, const size_t group_size, const int64_t spatial_bins_x, const int64_t spatial_bins_y, - const float trans_std, const int64_t part_size, const size_t rois_dim, - const ov::element::Type& iType, const bool is_input_generation_iota, const float inputValue, - const std::vector& roisValues, const std::vector& oValues, - const std::string& test_name = "", const std::string& mode = "bilinear_deformable") + DeformablePSROIPoolingParams(const size_t batch_in, + const size_t channel_in, + const size_t height_in, + const size_t width_in, + const float spatial_scale, + const size_t group_size, + const int64_t spatial_bins_x, + const int64_t spatial_bins_y, + const float trans_std, + const int64_t part_size, + const size_t rois_dim, + const ov::element::Type& iType, + const bool is_input_generation_iota, + const float inputValue, + const std::vector& roisValues, + const std::vector& oValues, + const std::string& test_name = "", + const std::string& mode = "bilinear_deformable") : groupSize(group_size), spatialBinsX(spatial_bins_x), spatialBinsY(spatial_bins_y), @@ -33,34 +46,48 @@ struct DeformablePSROIPoolingParams { outType(iType), roisData(CreateTensor(iType, roisValues)), testcaseName(test_name) { - outputDim = (channel_in / (group_size * group_size)) - (static_cast(channel_in / (group_size * group_size)) % 2); - inputShape = Shape{batch_in, channel_in, height_in, width_in}; - roisShape = Shape{rois_dim, 5}; + outputDim = (channel_in / (group_size * group_size)) - + (static_cast(channel_in / (group_size * group_size)) % 2); + inputShape = Shape{batch_in, channel_in, height_in, width_in}; + roisShape = Shape{rois_dim, 5}; - std::vector inputValues(shape_size(inputShape.get_shape())); - if (is_input_generation_iota) - std::iota(inputValues.begin(), inputValues.end(), inputValue); - else - std::fill(inputValues.begin(), inputValues.end(), inputValue); - inputData = CreateTensor(iType, inputValues); + std::vector inputValues(shape_size(inputShape.get_shape())); + if (is_input_generation_iota) + std::iota(inputValues.begin(), inputValues.end(), inputValue); + else + std::fill(inputValues.begin(), inputValues.end(), inputValue); + inputData = CreateTensor(iType, inputValues); - if (oValues.size() > 1) { - refData = CreateTensor(iType, oValues); - } else { - Shape output_shape{rois_dim, outputDim, group_size, group_size}; - std::vector expected_output_values(shape_size(output_shape)); - std::fill(expected_output_values.begin(), expected_output_values.end(), oValues[0]); - refData = CreateTensor(iType, expected_output_values); - } - } + if (oValues.size() > 1) { + refData = CreateTensor(iType, oValues); + } else { + Shape output_shape{rois_dim, outputDim, group_size, group_size}; + std::vector expected_output_values(shape_size(output_shape)); + std::fill(expected_output_values.begin(), expected_output_values.end(), oValues[0]); + refData = CreateTensor(iType, expected_output_values); + } + } template - DeformablePSROIPoolingParams(const size_t batch_in, const size_t channel_in, const size_t height_in, const size_t width_in, - const float spatial_scale, const size_t group_size, const int64_t spatial_bins_x, const int64_t spatial_bins_y, - const float trans_std, const int64_t part_size, const size_t rois_dim, - const ov::element::Type& iType, const bool is_input_generation_iota, const float inputValue, const float offsetValue, - const std::vector& roisValues, const std::vector& oValues, - const std::string& test_name = "", const std::string& mode = "bilinear_deformable") + DeformablePSROIPoolingParams(const size_t batch_in, + const size_t channel_in, + const size_t height_in, + const size_t width_in, + const float spatial_scale, + const size_t group_size, + const int64_t spatial_bins_x, + const int64_t spatial_bins_y, + const float trans_std, + const int64_t part_size, + const size_t rois_dim, + const ov::element::Type& iType, + const bool is_input_generation_iota, + const float inputValue, + const float offsetValue, + const std::vector& roisValues, + const std::vector& oValues, + const std::string& test_name = "", + const std::string& mode = "bilinear_deformable") : groupSize(group_size), spatialBinsX(spatial_bins_x), spatialBinsY(spatial_bins_y), @@ -74,31 +101,31 @@ struct DeformablePSROIPoolingParams { outType(iType), roisData(CreateTensor(iType, roisValues)), testcaseName(test_name) { - outputDim = (channel_in / (group_size * group_size)) - ((channel_in / (group_size * group_size)) % 2); - inputShape = Shape{batch_in, channel_in, height_in, width_in}; - roisShape = Shape{rois_dim, 5}; - offsetsShape = Shape{rois_dim, 2, group_size, group_size}; + outputDim = (channel_in / (group_size * group_size)) - ((channel_in / (group_size * group_size)) % 2); + inputShape = Shape{batch_in, channel_in, height_in, width_in}; + roisShape = Shape{rois_dim, 5}; + offsetsShape = Shape{rois_dim, 2, group_size, group_size}; - std::vector inputValues(shape_size(inputShape.get_shape())); - if (is_input_generation_iota) - std::iota(inputValues.begin(), inputValues.end(), inputValue); - else - std::fill(inputValues.begin(), inputValues.end(), inputValue); - inputData = CreateTensor(iType, inputValues); + std::vector inputValues(shape_size(inputShape.get_shape())); + if (is_input_generation_iota) + std::iota(inputValues.begin(), inputValues.end(), inputValue); + else + std::fill(inputValues.begin(), inputValues.end(), inputValue); + inputData = CreateTensor(iType, inputValues); - std::vector offsetsValues(shape_size(offsetsShape.get_shape())); - std::fill(offsetsValues.begin(), offsetsValues.end(), offsetValue); - offsetsData = CreateTensor(iType, offsetsValues); + std::vector offsetsValues(shape_size(offsetsShape.get_shape())); + std::fill(offsetsValues.begin(), offsetsValues.end(), offsetValue); + offsetsData = CreateTensor(iType, offsetsValues); - if (oValues.size() > 1) { - refData = CreateTensor(iType, oValues); - } else { - Shape output_shape{rois_dim, outputDim, group_size, group_size}; - std::vector expected_output_values(shape_size(output_shape)); - std::fill(expected_output_values.begin(), expected_output_values.end(), oValues[0]); - refData = CreateTensor(iType, expected_output_values); - } - } + if (oValues.size() > 1) { + refData = CreateTensor(iType, oValues); + } else { + Shape output_shape{rois_dim, outputDim, group_size, group_size}; + std::vector expected_output_values(shape_size(output_shape)); + std::fill(expected_output_values.begin(), expected_output_values.end(), oValues[0]); + refData = CreateTensor(iType, expected_output_values); + } + } size_t groupSize; int64_t spatialBinsX; @@ -123,7 +150,8 @@ struct DeformablePSROIPoolingParams { std::string testcaseName; }; -class ReferenceDeformablePSROIPoolingLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceDeformablePSROIPoolingLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -159,29 +187,30 @@ class ReferenceDeformablePSROIPoolingLayerTest : public testing::TestWithParam(params.offsetsType, params.offsetsShape); const auto DeformablePSROIPooling = std::make_shared(input, - rois, - offsets, - params.outputDim, - params.spatialScale, - params.groupSize, - params.mode, - params.spatialBinsX, - params.spatialBinsY, - params.transStd, - params.partSize); - return std::make_shared(NodeVector {DeformablePSROIPooling}, ParameterVector {input, rois, offsets}); + rois, + offsets, + params.outputDim, + params.spatialScale, + params.groupSize, + params.mode, + params.spatialBinsX, + params.spatialBinsY, + params.transStd, + params.partSize); + return std::make_shared(NodeVector{DeformablePSROIPooling}, + ParameterVector{input, rois, offsets}); } else { const auto DeformablePSROIPooling = std::make_shared(input, - rois, - params.outputDim, - params.spatialScale, - params.groupSize, - params.mode, - params.spatialBinsX, - params.spatialBinsY, - params.transStd, - params.partSize); - return std::make_shared(NodeVector {DeformablePSROIPooling}, ParameterVector {input, rois}); + rois, + params.outputDim, + params.spatialScale, + params.groupSize, + params.mode, + params.spatialBinsX, + params.spatialBinsY, + params.transStd, + params.partSize); + return std::make_shared(NodeVector{DeformablePSROIPooling}, ParameterVector{input, rois}); } } }; @@ -194,152 +223,403 @@ template std::vector generateDeformablePSROIPoolingFloatParams() { using T = typename element_type_traits::value_type; - std::vector deformablePSROIPoolingParams { - DeformablePSROIPoolingParams(1, 16, 2, 2, // batch_in, channel_in, height_in, width_in - 0.0625, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 2, // trans_std, part_size, rois_dim - IN_ET, true, 0, 0.0, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 2, 4, 6, - 0, 0, 3, 10, 4}, - std::vector{ - // First ROI - 0, 4, 8, 12, - 16, 20, 24, 28, - 32, 36, 40, 44, - 48, 52, 56, 60, + std::vector deformablePSROIPoolingParams{ + DeformablePSROIPoolingParams(1, + 16, + 2, + 2, // batch_in, channel_in, height_in, width_in + 0.0625, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 2, // trans_std, part_size, rois_dim + IN_ET, + true, + 0, + 0.0, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 2, + 4, + 6, + 0, + 0, + 3, + 10, + 4}, + std::vector{// First ROI + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60, // Second ROI - 0, 4, 8, 12, - 16, 20, 24, 28, - 32, 36, 40, 44, - 48, 52, 56, 60}, - "offset_00"), - DeformablePSROIPoolingParams(1, 16, 2, 2, // batch_in, channel_in, height_in, width_in - 0.0625, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 2, // trans_std, part_size, rois_dim - IN_ET, true, 0, 0.2, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 2, 4, 6, - 0, 0, 3, 10, 4}, - std::vector{ - // First ROI - 0, 4, 8, 12, - 16, 20, 24, 28, - 32, 36, 40, 44, - 48, 52, 56, 60, + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60}, + "offset_00"), + DeformablePSROIPoolingParams(1, + 16, + 2, + 2, // batch_in, channel_in, height_in, width_in + 0.0625, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 2, // trans_std, part_size, rois_dim + IN_ET, + true, + 0, + 0.2, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 2, + 4, + 6, + 0, + 0, + 3, + 10, + 4}, + std::vector{// First ROI + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60, // Second ROI - 0, 4, 8, 12, - 16, 20, 24, 28, - 32, 36, 40, 44, - 48, 52, 56, 60}, - "offset_0p2"), - DeformablePSROIPoolingParams(1, 16, 2, 2, // batch_in, channel_in, height_in, width_in - 0.0625, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 2, // trans_std, part_size, rois_dim - IN_ET, true, 0, 0.5, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 2, 4, 6, - 0, 5, 3, 10, 4}, - std::vector{ - // First ROI - 0, 4, 8, 12, - 16, 20, 24, 28, - 32, 36, 40, 44, - 48, 52, 56, 60, + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60}, + "offset_0p2"), + DeformablePSROIPoolingParams(1, + 16, + 2, + 2, // batch_in, channel_in, height_in, width_in + 0.0625, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 2, // trans_std, part_size, rois_dim + IN_ET, + true, + 0, + 0.5, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 2, + 4, + 6, + 0, + 5, + 3, + 10, + 4}, + std::vector{// First ROI + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60, // Second ROI - 0, 4.1875, 8, 12.1875, - 16, 20.1875, 24, 28.1875, - 32, 36.1875, 40, 44.1875, - 48, 52.1875, 56, 60.1875}, - "offset_0p5"), - DeformablePSROIPoolingParams(1, 16, 2, 2, // batch_in, channel_in, height_in, width_in - 0.0625, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 2, // trans_std, part_size, rois_dim - IN_ET, true, 0, 0, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 10, 10, 20, 20, - 0, 100, 100, 200, 200}, - std::vector{ - // First ROI - 0.375, 4.71875, 9.0625, 13.40625, 16.375, 20.71875, 25.0625, 29.40625, - 32.375, 36.71875, 41.0625, 45.40625, 48.375, 52.71875, 57.0625, 61.40625, + 0, + 4.1875, + 8, + 12.1875, + 16, + 20.1875, + 24, + 28.1875, + 32, + 36.1875, + 40, + 44.1875, + 48, + 52.1875, + 56, + 60.1875}, + "offset_0p5"), + DeformablePSROIPoolingParams(1, + 16, + 2, + 2, // batch_in, channel_in, height_in, width_in + 0.0625, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 2, // trans_std, part_size, rois_dim + IN_ET, + true, + 0, + 0, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 10, + 10, + 20, + 20, + 0, + 100, + 100, + 200, + 200}, + std::vector{// First ROI + 0.375, + 4.71875, + 9.0625, + 13.40625, + 16.375, + 20.71875, + 25.0625, + 29.40625, + 32.375, + 36.71875, + 41.0625, + 45.40625, + 48.375, + 52.71875, + 57.0625, + 61.40625, // Second ROI - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - "roi_oversize"), - DeformablePSROIPoolingParams(1, 8, 3, 3, // batch_in, channel_in, height_in, width_in - 1, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 2, 1, // trans_std, part_size, rois_dim - IN_ET, true, 0, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 1, 2, 2}, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + "roi_oversize"), + DeformablePSROIPoolingParams(1, + 8, + 3, + 3, // batch_in, channel_in, height_in, width_in + 1, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 2, + 1, // trans_std, part_size, rois_dim + IN_ET, + true, + 0, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 1, + 2, + 2}, std::vector{2.0, 12.0, 23.0, 33.0, 38.0, 48.0, 59.0, 69.0}, - "no_offset_input"), - DeformablePSROIPoolingParams(1, 8, 3, 3, // batch_in, channel_in, height_in, width_in - 1, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 2, 1, // trans_std, part_size, rois_dim, - IN_ET, true, 0, 0, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 1, 2, 2}, + "no_offset_input"), + DeformablePSROIPoolingParams(1, + 8, + 3, + 3, // batch_in, channel_in, height_in, width_in + 1, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 2, + 1, // trans_std, part_size, rois_dim, + IN_ET, + true, + 0, + 0, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 1, + 2, + 2}, std::vector{2.0, 12.0, 23.0, 33.0, 38.0, 48.0, 59.0, 69.0}, - "offset_zero"), - DeformablePSROIPoolingParams(1, 8, 3, 3, // batch_in, channel_in, height_in, width_in - 1, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 2, 1, // trans_std, part_size, rois_dim, - IN_ET, true, 0, 0.1, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 1, 2, 2}, + "offset_zero"), + DeformablePSROIPoolingParams(1, + 8, + 3, + 3, // batch_in, channel_in, height_in, width_in + 1, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 2, + 1, // trans_std, part_size, rois_dim, + IN_ET, + true, + 0, + 0.1, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 1, + 2, + 2}, std::vector{2.8, 12.8, 23.8, 33.8, 38.8, 48.8, 59.8, 69.8}, - "offset_01"), - DeformablePSROIPoolingParams(1, 8, 3, 3, // batch_in, channel_in, height_in, width_in - 1, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 2, 1, // trans_std, part_size, rois_dim, - IN_ET, true, 0, 0.5, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 1, 2, 2}, + "offset_01"), + DeformablePSROIPoolingParams(1, + 8, + 3, + 3, // batch_in, channel_in, height_in, width_in + 1, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 2, + 1, // trans_std, part_size, rois_dim, + IN_ET, + true, + 0, + 0.5, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 1, + 2, + 2}, std::vector{6., 15.5, 25.5, 35., 42., 51.5, 61.5, 71.}, - "offset_05"), - DeformablePSROIPoolingParams(1, 16, 2, 2, // batch_in, channel_in, height_in, width_in - 0.0625, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 1, // trans_std, part_size, rois_dim, - IN_ET, false, 0.1, 0.1, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 10, 10, 10, 10}, - std::vector{0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1}, - "single_value"), - DeformablePSROIPoolingParams(1, 1024, 63, 38, // batch_in, channel_in, height_in, width_in - 0.0625, 3, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 2, // trans_std, part_size, rois_dim, - IN_ET, false, 0.1, 0.0, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 2, 4, 6, - 0, 0, 3, 10, 4}, + "offset_05"), + DeformablePSROIPoolingParams( + 1, + 16, + 2, + 2, // batch_in, channel_in, height_in, width_in + 0.0625, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 1, // trans_std, part_size, rois_dim, + IN_ET, + false, + 0.1, + 0.1, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 10, + 10, + 10, + 10}, + std::vector{0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, + "single_value"), + DeformablePSROIPoolingParams(1, + 1024, + 63, + 38, // batch_in, channel_in, height_in, width_in + 0.0625, + 3, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 2, // trans_std, part_size, rois_dim, + IN_ET, + false, + 0.1, + 0.0, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 2, + 4, + 6, + 0, + 0, + 3, + 10, + 4}, std::vector{0.1}, - "single_value_big_shape") - }; + "single_value_big_shape")}; return deformablePSROIPoolingParams; } std::vector generateDeformablePSROIPoolingCombinedParams() { - const std::vector> deformablePSROIPoolingTypeParams { + const std::vector> deformablePSROIPoolingTypeParams{ generateDeformablePSROIPoolingFloatParams(), generateDeformablePSROIPoolingFloatParams(), generateDeformablePSROIPoolingFloatParams(), - generateDeformablePSROIPoolingFloatParams() - }; + generateDeformablePSROIPoolingFloatParams()}; std::vector combinedParams; for (const auto& params : deformablePSROIPoolingTypeParams) { @@ -348,7 +628,9 @@ std::vector generateDeformablePSROIPoolingCombined return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_DeformablePSROIPooling_With_Hardcoded_Refs, ReferenceDeformablePSROIPoolingLayerTest, - testing::ValuesIn(generateDeformablePSROIPoolingCombinedParams()), ReferenceDeformablePSROIPoolingLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DeformablePSROIPooling_With_Hardcoded_Refs, + ReferenceDeformablePSROIPoolingLayerTest, + testing::ValuesIn(generateDeformablePSROIPoolingCombinedParams()), + ReferenceDeformablePSROIPoolingLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/depth_to_space.cpp b/src/plugins/template/tests/functional/op_reference/depth_to_space.cpp index 6340c5665e235b..6f683ed5452765 100644 --- a/src/plugins/template/tests/functional/op_reference/depth_to_space.cpp +++ b/src/plugins/template/tests/functional/op_reference/depth_to_space.cpp @@ -4,18 +4,24 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; namespace { struct DepthToSpaceParams { - DepthToSpaceParams(const reference_tests::Tensor& dataTensor, const std::string mode, const int32_t blockSize, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), mode(mode), blockSize(blockSize), expectedTensor(expectedTensor), - testcaseName(testcaseName) {} + DepthToSpaceParams(const reference_tests::Tensor& dataTensor, + const std::string mode, + const int32_t blockSize, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + mode(mode), + blockSize(blockSize), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; std::string mode; @@ -50,11 +56,12 @@ class ReferenceDepthToSpaceLayerTest : public testing::TestWithParam CreateFunction(const DepthToSpaceParams& params) { - opset1::DepthToSpace::DepthToSpaceMode mode = params.mode == "DEPTH_FIRST" ? - opset1::DepthToSpace::DepthToSpaceMode::DEPTH_FIRST : opset1::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST; + opset1::DepthToSpace::DepthToSpaceMode mode = params.mode == "DEPTH_FIRST" + ? opset1::DepthToSpace::DepthToSpaceMode::DEPTH_FIRST + : opset1::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST; const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto depthToSpace = std::make_shared(data, mode, params.blockSize); - return std::make_shared(NodeVector {depthToSpace}, ParameterVector {data}); + return std::make_shared(NodeVector{depthToSpace}, ParameterVector{data}); } }; @@ -65,72 +72,84 @@ TEST_P(ReferenceDepthToSpaceLayerTest, CompareWithRefs) { template std::vector generateDepthToSpaceParams() { using T = typename element_type_traits::value_type; - std::vector depthToSpaceParams { + std::vector depthToSpaceParams{ // depth_to_space_block_first_K1_BS2 DepthToSpaceParams( - reference_tests::Tensor({1, 8, 2}, IN_ET, std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, 11, 17, 19, 25, 27}), + reference_tests::Tensor({1, 8, 2}, + IN_ET, + std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, 11, 17, 19, 25, 27}), "BLOCKS_FIRST", 2, - reference_tests::Tensor({1, 4, 4}, IN_ET, std::vector{0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27}), + reference_tests::Tensor({1, 4, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27}), "depth_to_space_block_first_K1_BS2"), // depth_to_space_block_first_K2_BS2 DepthToSpaceParams( reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, - 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, - 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), + 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, + 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), "BLOCKS_FIRST", 2, - reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), + reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), "depth_to_space_block_first_K2_BS2"), // depth_to_space_block_first_K2_BS4 DepthToSpaceParams( reference_tests::Tensor({1, 16, 2, 1}, IN_ET, std::vector{0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, - 21, 6, 22, 7, 23, 8, 24, 9, 25, 10, 26, - 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}), + 21, 6, 22, 7, 23, 8, 24, 9, 25, 10, 26, + 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}), "BLOCKS_FIRST", 4, - reference_tests::Tensor({1, 1, 8, 4}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), + reference_tests::Tensor({1, 1, 8, 4}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), "depth_to_space_block_first_K2_BS4"), // depth_to_space_depth_first_1K_BS2 DepthToSpaceParams( - reference_tests::Tensor({1, 8, 2}, IN_ET, std::vector{0, 2, 1, 3, 4, 6, 5, 7, 8, 10, 9, 11, 12, 14, 13, 15}), + reference_tests::Tensor({1, 8, 2}, + IN_ET, + std::vector{0, 2, 1, 3, 4, 6, 5, 7, 8, 10, 9, 11, 12, 14, 13, 15}), "DEPTH_FIRST", 2, - reference_tests::Tensor({1, 4, 4}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}), + reference_tests::Tensor({1, 4, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}), "depth_to_space_depth_first_1K_BS2"), // depth_to_space_depth_first_2K_BS2 DepthToSpaceParams( reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, - 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, - 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), + 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, + 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), "DEPTH_FIRST", 2, - reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 16, 2, 18, 1, 17, 3, 19, 8, 24, 10, 26, 9, 25, 11, 27, - 4, 20, 6, 22, 5, 21, 7, 23, 12, 28, 14, 30, 13, 29, 15, 31}), + reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 16, 2, 18, 1, 17, 3, 19, 8, 24, 10, + 26, 9, 25, 11, 27, 4, 20, 6, 22, 5, 21, + 7, 23, 12, 28, 14, 30, 13, 29, 15, 31}), "depth_to_space_depth_first_2K_BS2"), // depth_to_space_depth_first_2K_BS4 DepthToSpaceParams( reference_tests::Tensor({1, 16, 2, 1}, IN_ET, std::vector{0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, - 21, 6, 22, 7, 23, 8, 24, 9, 25, 10, 26, - 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}), + 21, 6, 22, 7, 23, 8, 24, 9, 25, 10, 26, + 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}), "DEPTH_FIRST", 4, - reference_tests::Tensor({1, 1, 8, 4}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), + reference_tests::Tensor({1, 1, 8, 4}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), "depth_to_space_depth_first_2K_BS4"), }; return depthToSpaceParams; } std::vector generateDepthToSpaceCombinedParams() { - const std::vector> depthToSpaceTypeParams { + const std::vector> depthToSpaceTypeParams{ generateDepthToSpaceParams(), generateDepthToSpaceParams(), generateDepthToSpaceParams(), @@ -152,6 +171,8 @@ std::vector generateDepthToSpaceCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_DepthToSpace_With_Hardcoded_Refs, ReferenceDepthToSpaceLayerTest, - testing::ValuesIn(generateDepthToSpaceCombinedParams()), ReferenceDepthToSpaceLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_DepthToSpace_With_Hardcoded_Refs, + ReferenceDepthToSpaceLayerTest, + testing::ValuesIn(generateDepthToSpaceCombinedParams()), + ReferenceDepthToSpaceLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/detection_output.cpp b/src/plugins/template/tests/functional/op_reference/detection_output.cpp index 573b9c8d144904..a1809cb24a85a9 100644 --- a/src/plugins/template/tests/functional/op_reference/detection_output.cpp +++ b/src/plugins/template/tests/functional/op_reference/detection_output.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/detection_output.hpp" + #include -#include "openvino/op/detection_output.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -44,33 +45,34 @@ struct DetectionOutputParams { priorBoxesData(CreateTensor(iType, priorBoxesValues)), refData(CreateTensor(iType, oValues)), testcaseName(test_name) { - attrs.num_classes = num_classes; - attrs_v8.background_label_id = attrs.background_label_id = background_label_id; - attrs_v8.top_k = attrs.top_k = top_k; - attrs_v8.variance_encoded_in_target = attrs.variance_encoded_in_target = variance_encoded_in_target; - attrs_v8.keep_top_k = attrs.keep_top_k = keep_top_k; - attrs_v8.code_type = attrs.code_type = code_type; - attrs_v8.share_location = attrs.share_location = share_location; - attrs_v8.nms_threshold = attrs.nms_threshold = nms_threshold; - attrs_v8.confidence_threshold = attrs.confidence_threshold = confidence_threshold; - attrs_v8.clip_after_nms = attrs.clip_after_nms = clip_after_nms; - attrs_v8.clip_before_nms = attrs.clip_before_nms = clip_before_nms; - attrs_v8.decrease_label_id = attrs.decrease_label_id = decrease_label_id; - attrs_v8.normalized = attrs.normalized = normalized; - attrs_v8.input_height = attrs.input_height = input_height; - attrs_v8.input_width = attrs.input_width = input_width; - attrs_v8.objectness_score = attrs.objectness_score = objectness_score; + attrs.num_classes = num_classes; + attrs_v8.background_label_id = attrs.background_label_id = background_label_id; + attrs_v8.top_k = attrs.top_k = top_k; + attrs_v8.variance_encoded_in_target = attrs.variance_encoded_in_target = variance_encoded_in_target; + attrs_v8.keep_top_k = attrs.keep_top_k = keep_top_k; + attrs_v8.code_type = attrs.code_type = code_type; + attrs_v8.share_location = attrs.share_location = share_location; + attrs_v8.nms_threshold = attrs.nms_threshold = nms_threshold; + attrs_v8.confidence_threshold = attrs.confidence_threshold = confidence_threshold; + attrs_v8.clip_after_nms = attrs.clip_after_nms = clip_after_nms; + attrs_v8.clip_before_nms = attrs.clip_before_nms = clip_before_nms; + attrs_v8.decrease_label_id = attrs.decrease_label_id = decrease_label_id; + attrs_v8.normalized = attrs.normalized = normalized; + attrs_v8.input_height = attrs.input_height = input_height; + attrs_v8.input_width = attrs.input_width = input_width; + attrs_v8.objectness_score = attrs.objectness_score = objectness_score; - size_t num_loc_classes = attrs.share_location ? 1 : attrs.num_classes; - size_t prior_box_size = attrs.normalized ? 4 : 5; + size_t num_loc_classes = attrs.share_location ? 1 : attrs.num_classes; + size_t prior_box_size = attrs.normalized ? 4 : 5; - locShape = ov::Shape{num_images, num_prior_boxes * num_loc_classes * prior_box_size}; - confShape = ov::Shape{num_images, num_prior_boxes * attrs.num_classes}; - priorBoxesShape = - ov::Shape{is_priors_patch_size_1 ? 1UL : num_images, attrs.variance_encoded_in_target ? 1UL : 2UL, num_prior_boxes * prior_box_size}; - } + locShape = ov::Shape{num_images, num_prior_boxes * num_loc_classes * prior_box_size}; + confShape = ov::Shape{num_images, num_prior_boxes * attrs.num_classes}; + priorBoxesShape = ov::Shape{is_priors_patch_size_1 ? 1UL : num_images, + attrs.variance_encoded_in_target ? 1UL : 2UL, + num_prior_boxes * prior_box_size}; + } -template + template DetectionOutputParams(const int num_classes, const int background_label_id, const int top_k, @@ -106,33 +108,34 @@ template auxLocData(CreateTensor(iType, auxLocValues)), auxConfData(CreateTensor(iType, auxConfValues)), testcaseName(test_name) { - attrs.num_classes = num_classes; - attrs_v8.background_label_id = attrs.background_label_id = background_label_id; - attrs_v8.top_k = attrs.top_k = top_k; - attrs_v8.variance_encoded_in_target = attrs.variance_encoded_in_target = variance_encoded_in_target; - attrs_v8.keep_top_k = attrs.keep_top_k = keep_top_k; - attrs_v8.code_type = attrs.code_type = code_type; - attrs_v8.share_location = attrs.share_location = share_location; - attrs_v8.nms_threshold = attrs.nms_threshold = nms_threshold; - attrs_v8.confidence_threshold = attrs.confidence_threshold = confidence_threshold; - attrs_v8.clip_after_nms = attrs.clip_after_nms = clip_after_nms; - attrs_v8.clip_before_nms = attrs.clip_before_nms = clip_before_nms; - attrs_v8.decrease_label_id = attrs.decrease_label_id = decrease_label_id; - attrs_v8.normalized = attrs.normalized = normalized; - attrs_v8.input_height = attrs.input_height = input_height; - attrs_v8.input_width = attrs.input_width = input_width; - attrs_v8.objectness_score = attrs.objectness_score = objectness_score; + attrs.num_classes = num_classes; + attrs_v8.background_label_id = attrs.background_label_id = background_label_id; + attrs_v8.top_k = attrs.top_k = top_k; + attrs_v8.variance_encoded_in_target = attrs.variance_encoded_in_target = variance_encoded_in_target; + attrs_v8.keep_top_k = attrs.keep_top_k = keep_top_k; + attrs_v8.code_type = attrs.code_type = code_type; + attrs_v8.share_location = attrs.share_location = share_location; + attrs_v8.nms_threshold = attrs.nms_threshold = nms_threshold; + attrs_v8.confidence_threshold = attrs.confidence_threshold = confidence_threshold; + attrs_v8.clip_after_nms = attrs.clip_after_nms = clip_after_nms; + attrs_v8.clip_before_nms = attrs.clip_before_nms = clip_before_nms; + attrs_v8.decrease_label_id = attrs.decrease_label_id = decrease_label_id; + attrs_v8.normalized = attrs.normalized = normalized; + attrs_v8.input_height = attrs.input_height = input_height; + attrs_v8.input_width = attrs.input_width = input_width; + attrs_v8.objectness_score = attrs.objectness_score = objectness_score; - size_t num_loc_classes = attrs.share_location ? 1 : attrs.num_classes; - size_t prior_box_size = attrs.normalized ? 4 : 5; + size_t num_loc_classes = attrs.share_location ? 1 : attrs.num_classes; + size_t prior_box_size = attrs.normalized ? 4 : 5; - locShape = ov::Shape{num_images, num_prior_boxes * num_loc_classes * prior_box_size}; - confShape = ov::Shape{num_images, num_prior_boxes * attrs.num_classes}; - priorBoxesShape = - ov::Shape{is_priors_patch_size_1 ? 1UL : num_images, attrs.variance_encoded_in_target ? 1UL : 2UL, num_prior_boxes * prior_box_size}; - auxLocShape = locShape; - auxConfShape = confShape; - } + locShape = ov::Shape{num_images, num_prior_boxes * num_loc_classes * prior_box_size}; + confShape = ov::Shape{num_images, num_prior_boxes * attrs.num_classes}; + priorBoxesShape = ov::Shape{is_priors_patch_size_1 ? 1UL : num_images, + attrs.variance_encoded_in_target ? 1UL : 2UL, + num_prior_boxes * prior_box_size}; + auxLocShape = locShape; + auxConfShape = confShape; + } ov::op::v0::DetectionOutput::Attributes attrs; ov::op::v8::DetectionOutput::Attributes attrs_v8; @@ -151,7 +154,8 @@ template std::string testcaseName; }; -class ReferenceDetectionOutputLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceDetectionOutputLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -186,17 +190,19 @@ class ReferenceDetectionOutputLayerTest : public testing::TestWithParam(params.inType, params.auxConfShape); const auto auxLoc = std::make_shared(params.inType, params.auxLocShape); - const auto DetectionOutput = std::make_shared(loc, conf, priorBoxes, auxConf, auxLoc, params.attrs); - return std::make_shared(NodeVector {DetectionOutput}, ParameterVector {loc, conf, priorBoxes, auxConf, auxLoc}); + const auto DetectionOutput = + std::make_shared(loc, conf, priorBoxes, auxConf, auxLoc, params.attrs); + return std::make_shared(NodeVector{DetectionOutput}, + ParameterVector{loc, conf, priorBoxes, auxConf, auxLoc}); } else { const auto DetectionOutput = std::make_shared(loc, conf, priorBoxes, params.attrs); - return std::make_shared(NodeVector {DetectionOutput}, ParameterVector {loc, conf, priorBoxes}); + return std::make_shared(NodeVector{DetectionOutput}, ParameterVector{loc, conf, priorBoxes}); } } }; class ReferenceDetectionOutputV8LayerTest : public testing::TestWithParam, - public CommonReferenceTest { + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -234,9 +240,10 @@ class ReferenceDetectionOutputV8LayerTest : public testing::TestWithParam(loc, conf, priorBoxes, auxConf, auxLoc, params.attrs_v8); return std::make_shared(NodeVector{DetectionOutput}, - ParameterVector{loc, conf, priorBoxes, auxConf, auxLoc}); + ParameterVector{loc, conf, priorBoxes, auxConf, auxLoc}); } else { - const auto DetectionOutput = std::make_shared(loc, conf, priorBoxes, params.attrs_v8); + const auto DetectionOutput = + std::make_shared(loc, conf, priorBoxes, params.attrs_v8); return std::make_shared(NodeVector{DetectionOutput}, ParameterVector{loc, conf, priorBoxes}); } } @@ -254,7 +261,7 @@ template std::vector generateDetectionOutputFloatParams() { using T = typename element_type_traits::value_type; - std::vector detectionOutputParams { + std::vector detectionOutputParams{ DetectionOutputParams(3, -1, -1, @@ -275,33 +282,87 @@ std::vector generateDetectionOutputFloatParams() { 2, true, IN_ET, - std::vector{ - // batch 0, class 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 0, class 1 - 0.3, 0.2, 0.5, 0.3, 0.2, 0.1, 0.42, 0.66, - // batch 0, class 2 - 0.05, 0.1, 0.2, 0.3, 0.2, 0.1, 0.33, 0.44, - // batch 1, class 0 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25, - // batch 1, class 1 - 0.1, 0.2, 0.5, 0.3, 0.1, 0.1, 0.12, 0.34, - // batch 1, class 2 - 0.25, 0.11, 0.4, 0.32, 0.2, 0.12, 0.38, 0.24}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, 0, 0.2, - // batch 1 - 0.7, 0.8, 0.42, 0.33, 0.81, 0.2}, - std::vector{ - // prior box 0 - 0.0, 0.5, 0.1, 0.2, - // prior box 1 - 0.0, 0.3, 0.1, 0.35}, - std::vector{ - 0, 0, 0.7, 0.2, 0.4, 0.52, 1, 0, 1, 0.9, 0, 0.6, 0.3, 0.35, - 1, 1, 0.81, 0.25, 0.41, 0.5, 0.67, 1, 1, 0.8, 0.1, 0.55, 0.3, 0.45}, - "3_inputs"), + std::vector{// batch 0, class 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 0, class 1 + 0.3, + 0.2, + 0.5, + 0.3, + 0.2, + 0.1, + 0.42, + 0.66, + // batch 0, class 2 + 0.05, + 0.1, + 0.2, + 0.3, + 0.2, + 0.1, + 0.33, + 0.44, + // batch 1, class 0 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25, + // batch 1, class 1 + 0.1, + 0.2, + 0.5, + 0.3, + 0.1, + 0.1, + 0.12, + 0.34, + // batch 1, class 2 + 0.25, + 0.11, + 0.4, + 0.32, + 0.2, + 0.12, + 0.38, + 0.24}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + 0, + 0.2, + // batch 1 + 0.7, + 0.8, + 0.42, + 0.33, + 0.81, + 0.2}, + std::vector{// prior box 0 + 0.0, + 0.5, + 0.1, + 0.2, + // prior box 1 + 0.0, + 0.3, + 0.1, + 0.35}, + std::vector{0, 0, 0.7, 0.2, 0.4, 0.52, 1, 0, 1, 0.9, 0, 0.6, 0.3, 0.35, + 1, 1, 0.81, 0.25, 0.41, 0.5, 0.67, 1, 1, 0.8, 0.1, 0.55, 0.3, 0.45}, + "3_inputs"), DetectionOutputParams(3, -1, -1, @@ -322,25 +383,59 @@ std::vector generateDetectionOutputFloatParams() { 2, false, IN_ET, - std::vector{ - // batch 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 1 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, 0, 0.2, - // batch 1 - 0.7, 0.8, 0.42, 0.33, 0.81, 0.2}, - std::vector{ - // batch 0 - 0.0, 0.5, 0.1, 0.2, 0.0, 0.3, 0.1, 0.35, - // batch 1 - 0.33, 0.2, 0.52, 0.37, 0.22, 0.1, 0.32, 0.36}, - std::vector{ - 0, 0, 0.7, 0, 0.4, 0.3, 0.5, 0, 1, 0.9, 0.1, 0.6, 0.3, 0.4, - 1, 1, 0.81, 0.32, 0.15, 0.52, 0.61, 1, 1, 0.8, 0.53, 0.3, 0.92, 0.57}, - "3_inputs_share_location"), + std::vector{// batch 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 1 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + 0, + 0.2, + // batch 1 + 0.7, + 0.8, + 0.42, + 0.33, + 0.81, + 0.2}, + std::vector{// batch 0 + 0.0, + 0.5, + 0.1, + 0.2, + 0.0, + 0.3, + 0.1, + 0.35, + // batch 1 + 0.33, + 0.2, + 0.52, + 0.37, + 0.22, + 0.1, + 0.32, + 0.36}, + std::vector{0, 0, 0.7, 0, 0.4, 0.3, 0.5, 0, 1, 0.9, 0.1, 0.6, 0.3, 0.4, + 1, 1, 0.81, 0.32, 0.15, 0.52, 0.61, 1, 1, 0.8, 0.53, 0.3, 0.92, 0.57}, + "3_inputs_share_location"), DetectionOutputParams(3, -1, -1, @@ -361,86 +456,210 @@ std::vector generateDetectionOutputFloatParams() { 2, false, IN_ET, - std::vector{ - // batch 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 1 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, 0, 0.2, - // batch 1 - 0.7, 0.8, 0.42, 0.33, 0.81, 0.2}, - std::vector{ - // batch 0 - 0.0, 0.5, 0.1, 0.2, 0.0, 0.3, 0.1, 0.35, - // batch 1 - 0.33, 0.2, 0.52, 0.37, 0.22, 0.1, 0.32, 0.36}, - std::vector{ - 0, 0, 0.7, 0, 0.4, 0.3, 0.5, 0, 1, 0.9, 0.1, 0.6, 0.3, 0.4, - 1, 1, 0.81, 0.32, 0.15, 0.52, 0.61, 1, 1, 0.8, 0.53, 0.3, 0.92, 0.57}, - "3_inputs_normalized"), - DetectionOutputParams(2, - -1, - -1, - false, - {-1}, - "caffe.PriorBoxParameter.CORNER", - false, - 0.5, - 0.3, - false, - true, - false, - true, - 0, - 0, - 0, - 2, - 3, - false, - IN_ET, - std::vector{ - // batch 0, class 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 0, class 1 - 0.3, 0.2, 0.5, 0.3, 0.2, 0.1, 0.42, 0.66, - // batch 1, class 0 - 0.05, 0.1, 0.2, 0.3, 0.2, 0.1, 0.33, 0.44, - // batch 1, class 1 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25, - // batch 2, class 0 - 0.1, 0.2, 0.5, 0.3, 0.1, 0.1, 0.12, 0.34, - // batch 2, class 1 - 0.25, 0.11, 0.4, 0.32, 0.2, 0.12, 0.38, 0.24}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, - // batch 1 - 0.7, 0.8, 0.42, 0.33, - // batch 1 - 0.1, 0.2, 0.32, 0.43}, - std::vector{ - // batch 0 priors - 0.0, 0.5, 0.1, 0.2, 0.0, 0.3, 0.1, 0.35, - // batch 0 variances - 0.12, 0.11, 0.32, 0.02, 0.02, 0.20, 0.09, 0.71, - // batch 1 priors - 0.33, 0.2, 0.52, 0.37, 0.22, 0.1, 0.32, 0.36, - // batch 1 variances - 0.01, 0.07, 0.12, 0.13, 0.41, 0.33, 0.2, 0.1, - // batch 2 priors - 0.0, 0.3, 0.1, 0.35, 0.22, 0.1, 0.32, 0.36, - // batch 2 variances - 0.32, 0.02, 0.13, 0.41, 0.33, 0.2, 0.02, 0.20}, - std::vector{ - 0, 0, 0.4, 0.006, 0.34, 0.145, 0.563, 0, 1, 0.9, 0, 0.511, 0.164, 0.203, - 0, 1, 0.7, 0.004, 0.32, 0.1378, 0.8186, 1, 0, 0.7, 0.3305, 0.207, 0.544, 0.409, - 1, 0, 0.42, 0.302, 0.133, 0.4, 0.38, 1, 1, 0.8, 0.332, 0.207, 0.5596, 0.4272, - 1, 1, 0.33, 0.261, 0.1165, 0.36, 0.385, 2, 0, 0.32, 0.3025, 0.122, 0.328, 0.424, - 2, 1, 0.43, 0.286, 0.124, 0.3276, 0.408, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - "3_inputs_keep_all_bboxes"), + std::vector{// batch 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 1 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + 0, + 0.2, + // batch 1 + 0.7, + 0.8, + 0.42, + 0.33, + 0.81, + 0.2}, + std::vector{// batch 0 + 0.0, + 0.5, + 0.1, + 0.2, + 0.0, + 0.3, + 0.1, + 0.35, + // batch 1 + 0.33, + 0.2, + 0.52, + 0.37, + 0.22, + 0.1, + 0.32, + 0.36}, + std::vector{0, 0, 0.7, 0, 0.4, 0.3, 0.5, 0, 1, 0.9, 0.1, 0.6, 0.3, 0.4, + 1, 1, 0.81, 0.32, 0.15, 0.52, 0.61, 1, 1, 0.8, 0.53, 0.3, 0.92, 0.57}, + "3_inputs_normalized"), + DetectionOutputParams( + 2, + -1, + -1, + false, + {-1}, + "caffe.PriorBoxParameter.CORNER", + false, + 0.5, + 0.3, + false, + true, + false, + true, + 0, + 0, + 0, + 2, + 3, + false, + IN_ET, + std::vector{// batch 0, class 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 0, class 1 + 0.3, + 0.2, + 0.5, + 0.3, + 0.2, + 0.1, + 0.42, + 0.66, + // batch 1, class 0 + 0.05, + 0.1, + 0.2, + 0.3, + 0.2, + 0.1, + 0.33, + 0.44, + // batch 1, class 1 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25, + // batch 2, class 0 + 0.1, + 0.2, + 0.5, + 0.3, + 0.1, + 0.1, + 0.12, + 0.34, + // batch 2, class 1 + 0.25, + 0.11, + 0.4, + 0.32, + 0.2, + 0.12, + 0.38, + 0.24}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + // batch 1 + 0.7, + 0.8, + 0.42, + 0.33, + // batch 1 + 0.1, + 0.2, + 0.32, + 0.43}, + std::vector{// batch 0 priors + 0.0, + 0.5, + 0.1, + 0.2, + 0.0, + 0.3, + 0.1, + 0.35, + // batch 0 variances + 0.12, + 0.11, + 0.32, + 0.02, + 0.02, + 0.20, + 0.09, + 0.71, + // batch 1 priors + 0.33, + 0.2, + 0.52, + 0.37, + 0.22, + 0.1, + 0.32, + 0.36, + // batch 1 variances + 0.01, + 0.07, + 0.12, + 0.13, + 0.41, + 0.33, + 0.2, + 0.1, + // batch 2 priors + 0.0, + 0.3, + 0.1, + 0.35, + 0.22, + 0.1, + 0.32, + 0.36, + // batch 2 variances + 0.32, + 0.02, + 0.13, + 0.41, + 0.33, + 0.2, + 0.02, + 0.20}, + std::vector{0, 0, 0.4, 0.006, 0.34, 0.145, 0.563, 0, 1, 0.9, 0, 0.511, 0.164, 0.203, + 0, 1, 0.7, 0.004, 0.32, 0.1378, 0.8186, 1, 0, 0.7, 0.3305, 0.207, 0.544, 0.409, + 1, 0, 0.42, 0.302, 0.133, 0.4, 0.38, 1, 1, 0.8, 0.332, 0.207, 0.5596, 0.4272, + 1, 1, 0.33, 0.261, 0.1165, 0.36, 0.385, 2, 0, 0.32, 0.3025, 0.122, 0.328, 0.424, + 2, 1, 0.43, 0.286, 0.124, 0.3276, 0.408, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + "3_inputs_keep_all_bboxes"), DetectionOutputParams(3, -1, -1, @@ -461,35 +680,97 @@ std::vector generateDetectionOutputFloatParams() { 2, false, IN_ET, - std::vector{ - // batch 0, class 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 0, class 1 - 0.3, 0.2, 0.5, 0.3, 0.2, 0.1, 0.42, 0.66, - // batch 0, class 2 - 0.05, 0.1, 0.2, 0.3, 0.2, 0.1, 0.33, 0.44, - // batch 1, class 0 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25, - // batch 1, class 1 - 0.1, 0.2, 0.5, 0.3, 0.1, 0.1, 0.12, 0.34, - // batch 1, class 2 - 0.25, 0.11, 0.4, 0.32, 0.2, 0.12, 0.38, 0.24}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, 0, 0.2, - // batch 1 - 0.7, 0.8, 0.42, 0.33, 0.81, 0.2}, - std::vector{ - // batch 0 - 0.0, 0.5, 0.1, 0.2, 0.0, 0.3, 0.1, 0.35, - // batch 1 - 0.33, 0.2, 0.52, 0.37, 0.22, 0.1, 0.32, 0.36}, - std::vector{ - 0, 0, 0.7, 0, 0.28163019, 0.14609808, 0.37836978, - 0, 1, 0.9, 0, 0.49427515, 0.11107014, 0.14572485, - 1, 1, 0.81, 0.22040875, 0.079573378, 0.36959124, 0.4376266, - 1, 1, 0.8, 0.32796675, 0.18435785, 0.56003326, 0.40264216}, - "3_inputs_center_size"), + std::vector{// batch 0, class 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 0, class 1 + 0.3, + 0.2, + 0.5, + 0.3, + 0.2, + 0.1, + 0.42, + 0.66, + // batch 0, class 2 + 0.05, + 0.1, + 0.2, + 0.3, + 0.2, + 0.1, + 0.33, + 0.44, + // batch 1, class 0 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25, + // batch 1, class 1 + 0.1, + 0.2, + 0.5, + 0.3, + 0.1, + 0.1, + 0.12, + 0.34, + // batch 1, class 2 + 0.25, + 0.11, + 0.4, + 0.32, + 0.2, + 0.12, + 0.38, + 0.24}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + 0, + 0.2, + // batch 1 + 0.7, + 0.8, + 0.42, + 0.33, + 0.81, + 0.2}, + std::vector{// batch 0 + 0.0, + 0.5, + 0.1, + 0.2, + 0.0, + 0.3, + 0.1, + 0.35, + // batch 1 + 0.33, + 0.2, + 0.52, + 0.37, + 0.22, + 0.1, + 0.32, + 0.36}, + std::vector{0, 0, 0.7, 0, 0.28163019, 0.14609808, 0.37836978, + 0, 1, 0.9, 0, 0.49427515, 0.11107014, 0.14572485, + 1, 1, 0.81, 0.22040875, 0.079573378, 0.36959124, 0.4376266, + 1, 1, 0.8, 0.32796675, 0.18435785, 0.56003326, 0.40264216}, + "3_inputs_center_size"), DetectionOutputParams(2, -1, -1, @@ -510,54 +791,130 @@ std::vector generateDetectionOutputFloatParams() { 2, false, IN_ET, - std::vector{ - // batch 0, class 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 0, class 1 - 0.3, 0.2, 0.5, 0.3, 0.2, 0.1, 0.42, 0.66, - // batch 1, class 0 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25, - // batch 1, class 1 - 0.1, 0.2, 0.5, 0.3, 0.1, 0.1, 0.12, 0.34}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, - // batch 1 - 0.42, 0.33, 0.81, 0.2}, - std::vector{ - // batch 0 - 0.0, 0.5, 0.1, 0.2, 0.0, 0.3, 0.1, 0.35, - // batch 1 - 0.33, 0.2, 0.52, 0.37, 0.22, 0.1, 0.32, 0.36}, - std::vector{ - 0, 0, 0.4, 0.55, 0.61, 1, 0.97, 0, 1, 0.7, 0.4, 0.52, 0.9, 1, - 1, 0, 0.42, 0.83, 0.5, 1, 0.87, 1, 1, 0.33, 0.63, 0.35, 1, 1}, - std::vector{ - // batch 0, class 0 - 0.1, 0.2, 0.5, 0.3, 0.1, 0.1, 0.12, 0.34, - // batch 0, class 1 - 0.25, 0.11, 0.4, 0.32, 0.2, 0.12, 0.38, 0.24, - // batch 1, class 0 - 0.3, 0.2, 0.5, 0.3, 0.2, 0.1, 0.42, 0.66, - // batch 1, class 1 - 0.05, 0.1, 0.2, 0.3, 0.2, 0.1, 0.33, 0.44}, - std::vector{ - // batch 0 - 0.1, 0.3, 0.5, 0.8, - // batch 1 - 0.5, 0.8, 0.01, 0.1}, - "5_inputs"), + std::vector{// batch 0, class 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 0, class 1 + 0.3, + 0.2, + 0.5, + 0.3, + 0.2, + 0.1, + 0.42, + 0.66, + // batch 1, class 0 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25, + // batch 1, class 1 + 0.1, + 0.2, + 0.5, + 0.3, + 0.1, + 0.1, + 0.12, + 0.34}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + // batch 1 + 0.42, + 0.33, + 0.81, + 0.2}, + std::vector{// batch 0 + 0.0, + 0.5, + 0.1, + 0.2, + 0.0, + 0.3, + 0.1, + 0.35, + // batch 1 + 0.33, + 0.2, + 0.52, + 0.37, + 0.22, + 0.1, + 0.32, + 0.36}, + std::vector{0, 0, 0.4, 0.55, 0.61, 1, 0.97, 0, 1, 0.7, 0.4, 0.52, 0.9, 1, + 1, 0, 0.42, 0.83, 0.5, 1, 0.87, 1, 1, 0.33, 0.63, 0.35, 1, 1}, + std::vector{// batch 0, class 0 + 0.1, + 0.2, + 0.5, + 0.3, + 0.1, + 0.1, + 0.12, + 0.34, + // batch 0, class 1 + 0.25, + 0.11, + 0.4, + 0.32, + 0.2, + 0.12, + 0.38, + 0.24, + // batch 1, class 0 + 0.3, + 0.2, + 0.5, + 0.3, + 0.2, + 0.1, + 0.42, + 0.66, + // batch 1, class 1 + 0.05, + 0.1, + 0.2, + 0.3, + 0.2, + 0.1, + 0.33, + 0.44}, + std::vector{// batch 0 + 0.1, + 0.3, + 0.5, + 0.8, + // batch 1 + 0.5, + 0.8, + 0.01, + 0.1}, + "5_inputs"), }; return detectionOutputParams; } std::vector generateDetectionOutputCombinedParams() { - const std::vector> detectionOutputTypeParams { + const std::vector> detectionOutputTypeParams{ generateDetectionOutputFloatParams(), generateDetectionOutputFloatParams(), generateDetectionOutputFloatParams(), generateDetectionOutputFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : detectionOutputTypeParams) { @@ -566,12 +923,14 @@ std::vector generateDetectionOutputCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput_With_Hardcoded_Refs, ReferenceDetectionOutputLayerTest, - testing::ValuesIn(generateDetectionOutputCombinedParams()), ReferenceDetectionOutputLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput_With_Hardcoded_Refs, + ReferenceDetectionOutputLayerTest, + testing::ValuesIn(generateDetectionOutputCombinedParams()), + ReferenceDetectionOutputLayerTest::getTestCaseName); INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput_With_Hardcoded_Refs, ReferenceDetectionOutputV8LayerTest, testing::ValuesIn(generateDetectionOutputCombinedParams()), ReferenceDetectionOutputV8LayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/dft.cpp b/src/plugins/template/tests/functional/op_reference/dft.cpp index 4537ec541d2782..5b742a3909b5f9 100644 --- a/src/plugins/template/tests/functional/op_reference/dft.cpp +++ b/src/plugins/template/tests/functional/op_reference/dft.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/dft.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/dft.hpp" using namespace reference_tests; using namespace ov; @@ -16,13 +17,13 @@ namespace { struct DFTParams { template DFTParams(const Shape& input_shape, - const Shape& expected_shape, - const element::Type_t& input_type, - const element::Type_t& expected_type, - const std::vector& input_value, - const std::vector& expected_value, - const std::shared_ptr& axes, - const std::shared_ptr& signal) { + const Shape& expected_shape, + const element::Type_t& input_type, + const element::Type_t& expected_type, + const std::vector& input_value, + const std::vector& expected_value, + const std::shared_ptr& axes, + const std::shared_ptr& signal) { m_input_shape = input_shape; m_expected_shape = expected_shape; m_input_type = input_type; @@ -1118,7 +1119,7 @@ static const std::vector expected_dft3d_signal_size_results = { 1.1392056, -4.696983, 0.45275614, 1.9134089, -3.8572056, -2.009159, 1.6307822, -0.9646755, -1.2407924, 2.6003554}; -template +template static std::vector convert(const std::vector& v) { if (v.empty()) { return std::vector(); @@ -1402,10 +1403,9 @@ std::vector generateCombinedParamsForDFT() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_DFT_With_Hardcoded_Refs, - ReferenceDFTLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDFT()), - ReferenceDFTLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DFT_With_Hardcoded_Refs, + ReferenceDFTLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDFT()), + ReferenceDFTLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/divide.cpp b/src/plugins/template/tests/functional/op_reference/divide.cpp index c89b133e431832..5588bc95c9e2a2 100644 --- a/src/plugins/template/tests/functional/op_reference/divide.cpp +++ b/src/plugins/template/tests/functional/op_reference/divide.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/divide.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/divide.hpp" using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct DivideParams { template DivideParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -45,7 +47,8 @@ struct DivideRoundingParams : public DivideParams { const std::vector& iValues2, const std::vector& oValues, const bool pythondiv) - : DivideParams(iShape1, iShape2, iType, iValues1, iValues2, oValues), pythonDivision(pythondiv) {} + : DivideParams(iShape1, iShape2, iType, iValues1, iValues2, oValues), + pythonDivision(pythondiv) {} bool pythonDivision; }; @@ -71,9 +74,9 @@ class ReferenceDivideLayerTest : public testing::TestWithParam, pu private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto divide = std::make_shared(in1, in2); @@ -81,7 +84,8 @@ class ReferenceDivideLayerTest : public testing::TestWithParam, pu } }; -class ReferenceDivideRoundingLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceDivideRoundingLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -102,14 +106,14 @@ class ReferenceDivideRoundingLayerTest : public testing::TestWithParam CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type, - const bool pythondiv) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type, + const bool pythondiv) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto divide = std::make_shared(in1, in2, pythondiv); - return std::make_shared(NodeVector{divide}, ParameterVector{in1, in2}); + return std::make_shared(NodeVector{divide}, ParameterVector{in1, in2}); } }; @@ -125,14 +129,12 @@ template std::vector generateParamsForDivide() { using T = typename element_type_traits::value_type; - std::vector params{ - DivideParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{2, 4, 8, 16}, - std::vector{1, 2, 4, 8}, - std::vector{2, 2, 2, 2}) - }; + std::vector params{DivideParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{2, 4, 8, 16}, + std::vector{1, 2, 4, 8}, + std::vector{2, 2, 2, 2})}; return params; } @@ -140,23 +142,21 @@ template std::vector generateParamsForDivideFloat32() { using T = typename element_type_traits::value_type; - std::vector params{ - DivideParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{18}, - std::vector{8}, - std::vector{2.25}), - DivideParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{2, 4, 8, 16}, - std::vector{0, 0, 0, 0}, - std::vector{std::numeric_limits::infinity(), - std::numeric_limits::infinity(), - std::numeric_limits::infinity(), - std::numeric_limits::infinity()}) - }; + std::vector params{DivideParams(ov::PartialShape{1}, + ov::PartialShape{1}, + IN_ET, + std::vector{18}, + std::vector{8}, + std::vector{2.25}), + DivideParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{2, 4, 8, 16}, + std::vector{0, 0, 0, 0}, + std::vector{std::numeric_limits::infinity(), + std::numeric_limits::infinity(), + std::numeric_limits::infinity(), + std::numeric_limits::infinity()})}; return params; } @@ -164,20 +164,18 @@ template std::vector generateParamsForDivideInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - DivideParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{0x40000140, 0x40000001, 8, 16}, - std::vector{2, 5, 4, 8}, - std::vector{536871072, 214748365, 2, 2}), - DivideParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{18}, - std::vector{8}, - std::vector{2}) - }; + std::vector params{DivideParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{0x40000140, 0x40000001, 8, 16}, + std::vector{2, 5, 4, 8}, + std::vector{536871072, 214748365, 2, 2}), + DivideParams(ov::PartialShape{1}, + ov::PartialShape{1}, + IN_ET, + std::vector{18}, + std::vector{8}, + std::vector{2})}; return params; } @@ -191,13 +189,8 @@ std::vector generateParamsForDivideBroadcast() { IN_ET, std::vector{12, 24, 36, 48, 60, 72}, std::vector{1, 2, 3, 4, 6, 1}, - std::vector{12, 6, 4, 3, 2, 12, - 24, 12, 8, 6, 4, 24, - 36, 18, 12, 9, 6, 36, - 48, 24, 16, 12, 8, 48, - 60, 30, 20, 15, 10, 60, - 72, 36, 24, 18, 12, 72}) - }; + std::vector{12, 6, 4, 3, 2, 12, 24, 12, 8, 6, 4, 24, 36, 18, 12, 9, 6, 36, + 48, 24, 16, 12, 8, 48, 60, 30, 20, 15, 10, 60, 72, 36, 24, 18, 12, 72})}; return params; } @@ -205,14 +198,12 @@ template std::vector generateParamsForDividePythonRoundingInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - DivideParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{-10, -10, 10, 10}, - std::vector{-3, 3, -3, 3}, - std::vector{3, -4, -4, 3}) - }; + std::vector params{DivideParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{-10, -10, 10, 10}, + std::vector{-3, 3, -3, 3}, + std::vector{3, -4, -4, 3})}; return params; } @@ -220,28 +211,24 @@ template std::vector generateParamsForDivideCppRoundingInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - DivideRoundingParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{-10, -10, 10, 10}, - std::vector{-3, 3, -3, 3}, - std::vector{3, -3, -3, 3}, - false) - }; + std::vector params{DivideRoundingParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{-10, -10, 10, 10}, + std::vector{-3, 3, -3, 3}, + std::vector{3, -3, -3, 3}, + false)}; return params; } std::vector generateCombinedParamsForDivide() { - const std::vector> allTypeParams{ - generateParamsForDivide(), - generateParamsForDivide(), - generateParamsForDivide(), - generateParamsForDivide(), - generateParamsForDivide(), - generateParamsForDivide(), - generateParamsForDivide() - }; + const std::vector> allTypeParams{generateParamsForDivide(), + generateParamsForDivide(), + generateParamsForDivide(), + generateParamsForDivide(), + generateParamsForDivide(), + generateParamsForDivide(), + generateParamsForDivide()}; std::vector combinedParams; @@ -253,9 +240,7 @@ std::vector generateCombinedParamsForDivide() { } std::vector generateCombinedParamsForDivideFloat32() { - const std::vector> allTypeParams{ - generateParamsForDivideFloat32() - }; + const std::vector> allTypeParams{generateParamsForDivideFloat32()}; std::vector combinedParams; @@ -267,9 +252,7 @@ std::vector generateCombinedParamsForDivideFloat32() { } std::vector generateCombinedParamsForDivideInt32() { - const std::vector> allTypeParams{ - generateParamsForDivideInt32() - }; + const std::vector> allTypeParams{generateParamsForDivideInt32()}; std::vector combinedParams; @@ -283,8 +266,7 @@ std::vector generateCombinedParamsForDivideInt32() { std::vector generateCombinedParamsForDivideBroadcast() { const std::vector> allTypeParams{ generateParamsForDivideBroadcast(), - generateParamsForDivideBroadcast() - }; + generateParamsForDivideBroadcast()}; std::vector combinedParams; @@ -297,8 +279,7 @@ std::vector generateCombinedParamsForDivideBroadcast() { std::vector generateCombinedParamsForDividePythonRoundingInt32() { const std::vector> allTypeParams{ - generateParamsForDividePythonRoundingInt32() - }; + generateParamsForDividePythonRoundingInt32()}; std::vector combinedParams; @@ -311,8 +292,7 @@ std::vector generateCombinedParamsForDividePythonRoundingInt32() { std::vector generateCombinedParamsForDivideCppRoundingInt32() { const std::vector> allTypeParams{ - generateParamsForDivideCppRoundingInt32() - }; + generateParamsForDivideCppRoundingInt32()}; std::vector combinedParams; @@ -323,40 +303,34 @@ std::vector generateCombinedParamsForDivideCppRoundingInt3 return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_With_Hardcoded_Refs, - ReferenceDivideLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDivide()), - ReferenceDivideLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_Float32_With_Hardcoded_Refs, - ReferenceDivideLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDivideFloat32()), - ReferenceDivideLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_Int32_With_Hardcoded_Refs, - ReferenceDivideLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDivideInt32()), - ReferenceDivideLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_Broadcast_With_Hardcoded_Refs, - ReferenceDivideLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDivideBroadcast()), - ReferenceDivideLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_Python_Rounding_Int32_With_Hardcoded_Refs, - ReferenceDivideLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDividePythonRoundingInt32()), - ReferenceDivideLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_Cpp_Rounding_Int32_With_Hardcoded_Refs, - ReferenceDivideRoundingLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDivideCppRoundingInt32()), - ReferenceDivideRoundingLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Divide_With_Hardcoded_Refs, + ReferenceDivideLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDivide()), + ReferenceDivideLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Divide_Float32_With_Hardcoded_Refs, + ReferenceDivideLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDivideFloat32()), + ReferenceDivideLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Divide_Int32_With_Hardcoded_Refs, + ReferenceDivideLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDivideInt32()), + ReferenceDivideLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Divide_Broadcast_With_Hardcoded_Refs, + ReferenceDivideLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDivideBroadcast()), + ReferenceDivideLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Divide_Python_Rounding_Int32_With_Hardcoded_Refs, + ReferenceDivideLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDividePythonRoundingInt32()), + ReferenceDivideLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Divide_Cpp_Rounding_Int32_With_Hardcoded_Refs, + ReferenceDivideRoundingLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDivideCppRoundingInt32()), + ReferenceDivideRoundingLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/einsum.cpp b/src/plugins/template/tests/functional/op_reference/einsum.cpp index d3aeb727b60ce7..400fdc445c5387 100644 --- a/src/plugins/template/tests/functional/op_reference/einsum.cpp +++ b/src/plugins/template/tests/functional/op_reference/einsum.cpp @@ -4,9 +4,9 @@ #include -#include "openvino/opsets/opset7.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset7.hpp" using namespace reference_tests; using namespace ov; @@ -73,37 +73,33 @@ TEST_P(ReferenceEinsumTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} + std::vector params{ + Builder{} .inputs({{ET, {1, 2}, std::vector{1, 2}}, - {ET, {3, 4}, std::vector{3, 4, 5, 6, - 7, 8, 9, 10, - 11, 12, 13, 14}}}) + {ET, {3, 4}, std::vector{3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}}}) .equation("ab,cd->abcd") - .expectedResult({ET, {1, 2, 3, 4}, std::vector{3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 6, 8, 10, 12, - 14, 16, 18, 20, 22, 24, 26, 28}}) + .expectedResult({ET, {1, 2, 3, 4}, std::vector{3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28}}) .testcaseName("einsum_no_reduction"), - Builder {} + Builder{} .inputs({{ET, {1, 2, 3}, std::vector{1, 2, 3, 4, 5, 6}}}) .equation("ijk->kij") .expectedResult({ET, {3, 1, 2}, std::vector{1, 4, 2, 5, 3, 6}}) .testcaseName("einsum_transpose"), - Builder {} + Builder{} .inputs({{ET, {2, 3}, std::vector{1, 2, 3, 4, 5, 6}}}) .equation("ab->a") .expectedResult({ET, {2}, std::vector{6, 15}}) .testcaseName("einsum_reduce"), - Builder {} - .inputs({{ET, {2, 3}, std::vector{1, 2, 3, 4, 5, 6}}, - {ET, {3, 2}, std::vector{1, 2, 3, 4, 5, 6}}}) + Builder{} + .inputs({{ET, {2, 3}, std::vector{1, 2, 3, 4, 5, 6}}, {ET, {3, 2}, std::vector{1, 2, 3, 4, 5, 6}}}) .equation("ab,bc->ac") .expectedResult({ET, {2, 2}, std::vector{22, 28, 49, 64}}) .testcaseName("einsum_matrix_multiplication"), - Builder {} + Builder{} .inputs({{ET, {2, 4}, std::vector{1, 3, 2, 7, 5, 6, 0, 1}}, {ET, {4, 3, 1}, std::vector{1, 2, 3, 4, 5, 6, 5, 7, 3, 7, 9, 1}}, {ET, {4, 3}, std::vector{4, 3, 1, 6, 4, 2, 2, 5, 3, 1, 9, 4}}}) @@ -111,50 +107,47 @@ std::vector generateParams() { .expectedResult({ET, {3, 2}, std::vector{145, 171, 703, 231, 85, 91}}) .testcaseName("einsum_multiple_multiplication"), - Builder {} + Builder{} .inputs({{ET, {2, 2, 3}, std::vector{1, 3, 2, 7, 5, 6, 3, 5, 2, 1, 0, 7}}}) .equation("a...->...") .expectedResult({ET, {2, 3}, std::vector{4, 8, 4, 8, 5, 13}}) .testcaseName("einsum_ellipsis_one_input_reduction"), - Builder {} + Builder{} .inputs({{ET, {2, 2, 3}, std::vector{1, 3, 2, 7, 5, 6, 3, 5, 2, 1, 0, 7}}}) .equation("a...->...a") .expectedResult({ET, {2, 3, 2}, std::vector{1, 3, 3, 5, 2, 2, 7, 1, 5, 0, 6, 7}}) .testcaseName("einsum_ellipsis_one_input_transpose"), - Builder {} - .inputs({{ET, {2, 2, 3}, std::vector{1, 3, 2, 7, 5, 6, 3, 5, 2, 1, 0, 7}}, - {ET, {1}, std::vector{2}}}) + Builder{} + .inputs({{ET, {2, 2, 3}, std::vector{1, 3, 2, 7, 5, 6, 3, 5, 2, 1, 0, 7}}, {ET, {1}, std::vector{2}}}) .equation("ab...,...->ab...") .expectedResult({ET, {2, 2, 3}, std::vector{2, 6, 4, 14, 10, 12, 6, 10, 4, 2, 0, 14}}) .testcaseName("einsum_ellipsis_mul_by_1dscalar"), - Builder {} + Builder{} .inputs({{ET, {1, 1, 4, 3}, std::vector{1, 3, 2, 7, 5, 6, 3, 5, 2, 1, 0, 7}}, {ET, {3, 4, 2, 1}, std::vector{3, 1, 6, 2, 3, 10, 9, 8, 2, 9, 3, 2, 4, 2, 3, 1, 9, 1, 11, 4, 7, 2, 3, 1}}}) .equation("a...j,j...->a...") - .expectedResult({ET, {1, 4, 2, 4}, std::vector{27, 85, 37, 66, 30, 58, 50, 8, - 37, 123, 55, 83, 16, 48, 24, 30, - 29, 83, 43, 52, 20, 92, 44, 24, - 24, 96, 48, 30, 13, 67, 31, 15}}) + .expectedResult( + {ET, {1, 4, 2, 4}, std::vector{27, 85, 37, 66, 30, 58, 50, 8, 37, 123, 55, 83, 16, 48, 24, 30, + 29, 83, 43, 52, 20, 92, 44, 24, 24, 96, 48, 30, 13, 67, 31, 15}}) .testcaseName("einsum_ellipsis_complex_mul"), - Builder {} + Builder{} .inputs({{ET, {1, 3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}}}) .equation("kii->ki") .expectedResult({ET, {1, 3}, std::vector{1, 5, 9}}) .testcaseName("einsum_diagonal"), - Builder {} - .inputs({{ET, {2, 3, 3, 2, 4}, std::vector{4, 2, 5, 4, 5, 5, 1, 1, 3, 3, 1, 1, 2, 2, 4, 1, 3, 4, - 4, 5, 1, 3, 1, 3, 1, 4, 3, 5, 4, 4, 5, 4, 4, 5, 4, 2, - 2, 2, 3, 3, 1, 1, 4, 3, 4, 2, 2, 1, 1, 2, 3, 1, 1, 4, - 2, 3, 1, 3, 4, 2, 5, 5, 3, 4, 3, 4, 5, 4, 4, 5, 1, 3, - 4, 4, 5, 3, 1, 3, 2, 5, 3, 2, 5, 4, 4, 2, 4, 4, 1, 4, - 4, 5, 4, 4, 4, 2, 3, 3, 4, 2, 4, 2, 5, 1, 3, 2, 4, 3, - 5, 1, 2, 3, 1, 1, 2, 5, 1, 1, 2, 1, 4, 5, 3, 4, 1, 3, + Builder{} + .inputs({{ET, {2, 3, 3, 2, 4}, std::vector{4, 2, 5, 4, 5, 5, 1, 1, 3, 3, 1, 1, 2, 2, 4, 1, 3, 4, 4, 5, 1, + 3, 1, 3, 1, 4, 3, 5, 4, 4, 5, 4, 4, 5, 4, 2, 2, 2, 3, 3, 1, 1, + 4, 3, 4, 2, 2, 1, 1, 2, 3, 1, 1, 4, 2, 3, 1, 3, 4, 2, 5, 5, 3, + 4, 3, 4, 5, 4, 4, 5, 1, 3, 4, 4, 5, 3, 1, 3, 2, 5, 3, 2, 5, 4, + 4, 2, 4, 4, 1, 4, 4, 5, 4, 4, 4, 2, 3, 3, 4, 2, 4, 2, 5, 1, 3, + 2, 4, 3, 5, 1, 2, 3, 1, 1, 2, 5, 1, 1, 2, 1, 4, 5, 3, 4, 1, 3, 3, 1, 3, 2, 4, 5, 1, 1, 5, 4, 5, 2, 2, 3, 3, 1, 2, 4}}, {ET, {3, 2, 1}, std::vector{1, 4, 4, 5, 3, 3}}}) .equation("abbac,bad->ad") @@ -165,7 +158,7 @@ std::vector generateParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), }; @@ -177,6 +170,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Einsum_With_Hardcoded_Refs, ReferenceEinsumTest, - testing::ValuesIn(generateCombinedParams()), ReferenceEinsumTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Einsum_With_Hardcoded_Refs, + ReferenceEinsumTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceEinsumTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/elu.cpp b/src/plugins/template/tests/functional/op_reference/elu.cpp index ccb5112e709bee..dc057a9ffeb788 100644 --- a/src/plugins/template/tests/functional/op_reference/elu.cpp +++ b/src/plugins/template/tests/functional/op_reference/elu.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/elu.hpp" + #include -#include "openvino/op/elu.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,8 +14,11 @@ using namespace ov; namespace { struct EluParams { template - EluParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const double alpha) + EluParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const double alpha) : alpha(alpha), pshape(shape), inType(iType), @@ -50,11 +54,13 @@ class ReferenceEluLayerTest : public testing::TestWithParam, public C } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const double alpha) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const double alpha) { const auto in = std::make_shared(input_type, input_shape); const auto Elu = std::make_shared(in, alpha); - return std::make_shared(NodeVector {Elu}, ParameterVector {in}); + return std::make_shared(NodeVector{Elu}, ParameterVector{in}); } }; @@ -66,18 +72,17 @@ template std::vector generateEluFloatParams() { using T = typename element_type_traits::value_type; - std::vector eluParams { - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{-2.f, 3.f, -2.f, 1.f, -1.f, 0.f}, - std::vector{-0.432332358f, 3.f, -0.432332358f, 1.f, -0.316060279f, 0.f}, - 0.5f), - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{-2.f, 3.f, -2.f, 1.f, -1.f, 0.f}, - std::vector{0.864664717f, 3.f, 0.864664717f, 1.f, 0.632120559f, 0.f}, - -1.f) - }; + std::vector eluParams{ + EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{-2.f, 3.f, -2.f, 1.f, -1.f, 0.f}, + std::vector{-0.432332358f, 3.f, -0.432332358f, 1.f, -0.316060279f, 0.f}, + 0.5f), + EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{-2.f, 3.f, -2.f, 1.f, -1.f, 0.f}, + std::vector{0.864664717f, 3.f, 0.864664717f, 1.f, 0.632120559f, 0.f}, + -1.f)}; return eluParams; } @@ -85,18 +90,16 @@ template std::vector generateEluIntParams() { using T = typename element_type_traits::value_type; - std::vector eluParams { - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{-2, 3, -2, 1, -1, 0}, - std::vector{0, 3, 0, 1, 0, 0}, - 0.5f), - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{-2, 3, -2, 1, -1, 0}, - std::vector{0, 3, 0, 1, 0, 0}, - -1.f) - }; + std::vector eluParams{EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{-2, 3, -2, 1, -1, 0}, + std::vector{0, 3, 0, 1, 0, 0}, + 0.5f), + EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{-2, 3, -2, 1, -1, 0}, + std::vector{0, 3, 0, 1, 0, 0}, + -1.f)}; return eluParams; } @@ -104,34 +107,30 @@ template std::vector generateEluUintParams() { using T = typename element_type_traits::value_type; - std::vector eluParams { - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{5, 4, 3, 2, 1, 0}, - std::vector{5, 4, 3, 2, 1, 0}, - 0.5f), - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{5, 4, 3, 2, 1, 0}, - std::vector{5, 4, 3, 2, 1, 0}, - -1.f) - }; + std::vector eluParams{EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{5, 4, 3, 2, 1, 0}, + std::vector{5, 4, 3, 2, 1, 0}, + 0.5f), + EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{5, 4, 3, 2, 1, 0}, + std::vector{5, 4, 3, 2, 1, 0}, + -1.f)}; return eluParams; } std::vector generateEluCombinedParams() { - const std::vector> eluTypeParams { - generateEluFloatParams(), - generateEluFloatParams(), - generateEluFloatParams(), - generateEluIntParams(), - generateEluIntParams(), - generateEluIntParams(), - generateEluIntParams(), - generateEluUintParams(), - generateEluUintParams(), - generateEluUintParams(), - generateEluUintParams() - }; + const std::vector> eluTypeParams{generateEluFloatParams(), + generateEluFloatParams(), + generateEluFloatParams(), + generateEluIntParams(), + generateEluIntParams(), + generateEluIntParams(), + generateEluIntParams(), + generateEluUintParams(), + generateEluUintParams(), + generateEluUintParams(), + generateEluUintParams()}; std::vector combinedParams; for (const auto& params : eluTypeParams) { @@ -140,7 +139,9 @@ std::vector generateEluCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Elu_With_Hardcoded_Refs, ReferenceEluLayerTest, - testing::ValuesIn(generateEluCombinedParams()), ReferenceEluLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Elu_With_Hardcoded_Refs, + ReferenceEluLayerTest, + testing::ValuesIn(generateEluCombinedParams()), + ReferenceEluLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/embedding_segments_sum.cpp b/src/plugins/template/tests/functional/op_reference/embedding_segments_sum.cpp index 1097aa85620f61..d308d2c2a5d69f 100644 --- a/src/plugins/template/tests/functional/op_reference/embedding_segments_sum.cpp +++ b/src/plugins/template/tests/functional/op_reference/embedding_segments_sum.cpp @@ -79,14 +79,13 @@ class ReferenceEmbeddingSegmentsSumLayerTest : public testing::TestWithParam CreateFunction( - const PartialShape& input_shape, - const element::Type& input_type, - const std::shared_ptr indices, - const std::shared_ptr segment_ids, - const std::shared_ptr num_segments, - const std::shared_ptr default_index, - const std::shared_ptr per_sample_weights) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const std::shared_ptr indices, + const std::shared_ptr segment_ids, + const std::shared_ptr num_segments, + const std::shared_ptr default_index, + const std::shared_ptr per_sample_weights) { const auto in = std::make_shared(input_type, input_shape); if (default_index) { @@ -133,8 +132,8 @@ INSTANTIATE_TEST_SUITE_P( std::make_shared(element::i32, ov::Shape(), std::vector{3}), std::make_shared(element::i32, ov::Shape(), std::vector{0}), std::make_shared(element::f32, - ov::Shape({4}), - std::vector{0.5, 0.5, 0.5, 0.5})), + ov::Shape({4}), + std::vector{0.5, 0.5, 0.5, 0.5})), EmbeddingSegmentsSumParams( ov::PartialShape{5, 2}, ov::element::f64, diff --git a/src/plugins/template/tests/functional/op_reference/embeddingbag_offsetssum.cpp b/src/plugins/template/tests/functional/op_reference/embeddingbag_offsetssum.cpp index d4d7c5c492c7ec..f7e7bdcafaa7f0 100644 --- a/src/plugins/template/tests/functional/op_reference/embeddingbag_offsetssum.cpp +++ b/src/plugins/template/tests/functional/op_reference/embeddingbag_offsetssum.cpp @@ -74,13 +74,12 @@ class ReferenceEmbeddingBagOffsetsSumLayerTest : public testing::TestWithParam CreateFunction( - const PartialShape& input_shape, - const element::Type& input_type, - const std::shared_ptr indices, - const std::shared_ptr offsets, - const std::shared_ptr default_index, - const std::shared_ptr per_sample_weights) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const std::shared_ptr indices, + const std::shared_ptr offsets, + const std::shared_ptr default_index, + const std::shared_ptr per_sample_weights) { const auto in = std::make_shared(input_type, input_shape); if (default_index) { @@ -121,8 +120,8 @@ INSTANTIATE_TEST_SUITE_P( std::make_shared(element::i32, ov::Shape({3}), std::vector{0, 2, 2}), std::make_shared(element::i32, ov::Shape(), std::vector{0}), std::make_shared(element::f32, - ov::Shape({4}), - std::vector{0.5, 0.5, 0.5, 0.5})), + ov::Shape({4}), + std::vector{0.5, 0.5, 0.5, 0.5})), EmbeddingBagOffsetsSumParams( ov::PartialShape{5, 2}, ov::element::f64, diff --git a/src/plugins/template/tests/functional/op_reference/embeddingbag_packedsum.cpp b/src/plugins/template/tests/functional/op_reference/embeddingbag_packedsum.cpp index f81acb2d4e23d2..80af12d4053c8f 100644 --- a/src/plugins/template/tests/functional/op_reference/embeddingbag_packedsum.cpp +++ b/src/plugins/template/tests/functional/op_reference/embeddingbag_packedsum.cpp @@ -63,11 +63,10 @@ class ReferenceEmbeddingBagPackedSumLayerTest : public testing::TestWithParam CreateFunction( - const PartialShape& input_shape, - const element::Type& input_type, - const std::shared_ptr indices, - const std::shared_ptr per_sample_weights) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const std::shared_ptr indices, + const std::shared_ptr per_sample_weights) { const auto in = std::make_shared(input_type, input_shape); if (per_sample_weights) { @@ -86,7 +85,7 @@ TEST_P(ReferenceEmbeddingBagPackedSumLayerTest, CompareWithRefs) { template inline std::shared_ptr CreateConstant(const std::vector>& val, - const ov::element::Type& element_type) { + const ov::element::Type& element_type) { if (val.size() > 0) { ov::Shape i_shape({val.size(), val[0].size()}); diff --git a/src/plugins/template/tests/functional/op_reference/equal.cpp b/src/plugins/template/tests/functional/op_reference/equal.cpp index 6bed3aa52e5523..574cc95c25e13e 100644 --- a/src/plugins/template/tests/functional/op_reference/equal.cpp +++ b/src/plugins/template/tests/functional/op_reference/equal.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/equal.hpp" + #include -#include "openvino/op/equal.hpp" #include "comparison.hpp" using namespace ov; @@ -16,43 +17,43 @@ namespace { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .input2({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .expected({{2, 2}, element::boolean, std::vector {1, 1, 1, 1}}), - Builder {} + .input1({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .input2({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .expected({{2, 2}, element::boolean, std::vector{1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{2, 3}, type, std::vector {0, 6, 45, 1, 21, 21}}) - .input2({{2, 3}, type, std::vector {1, 18, 23, 1, 19, 21}}) - .expected({{2, 3}, element::boolean, std::vector {0, 0, 0, 1, 0, 1}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 6, 45, 1, 21, 21}}) + .input2({{2, 3}, type, std::vector{1, 18, 23, 1, 19, 21}}) + .expected({{2, 3}, element::boolean, std::vector{0, 0, 0, 1, 0, 1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{1}, type, std::vector {53}}) - .input2({{1}, type, std::vector {53}}) - .expected({{1}, element::boolean, std::vector {1}}), - Builder {} + .input1({{1}, type, std::vector{53}}) + .input2({{1}, type, std::vector{53}}) + .expected({{1}, element::boolean, std::vector{1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 11, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {1, 1, 1, 1, 0, 1, 1, 1}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 11, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{1, 1, 1, 1, 0, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{3, 1, 2}, type, std::vector {2, 1, 4, 1, 3, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{3, 2, 2}, element::boolean, std::vector {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}}), - Builder {} + .input1({{3, 1, 2}, type, std::vector{2, 1, 4, 1, 3, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{3, 2, 2}, element::boolean, std::vector{0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{2, 1, 2, 1}, type, std::vector {2, 1, 4, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {0, 1, 0, 1}})}; + .input1({{2, 1, 2, 1}, type, std::vector{2, 1, 4, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{0, 1, 0, 1}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i32), @@ -66,38 +67,47 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); template std::vector generateNumericParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { - Builder {} + std::vector compParams{ + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{4}, type, std::vector {-2.5f, 25.5f, 2.25f, NAN}}) - .input2({{4}, type, std::vector {10.0f, 5.0f, 2.25f, 10.0f}}) - .expected({{4}, element::boolean, std::vector {0, 0, 1, 0, }}), - Builder {} + .input1({{4}, type, std::vector{-2.5f, 25.5f, 2.25f, NAN}}) + .input2({{4}, type, std::vector{10.0f, 5.0f, 2.25f, 10.0f}}) + .expected({{4}, + element::boolean, + std::vector{ + 0, + 0, + 1, + 0, + }}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{2, 3}, type, std::vector {0.0f, NAN, NAN, 1.0f, 21.0f, -INFINITY}}) - .input2({{2, 3}, type, std::vector {1.0f, NAN, 23.0f, 1.0f, 19.0f, 21.0f}}) - .expected({{2, 3}, element::boolean, std::vector {0, 0, 0, 1, 0, 0}}), - Builder {} + .input1({{2, 3}, type, std::vector{0.0f, NAN, NAN, 1.0f, 21.0f, -INFINITY}}) + .input2({{2, 3}, type, std::vector{1.0f, NAN, 23.0f, 1.0f, 19.0f, 21.0f}}) + .expected({{2, 3}, element::boolean, std::vector{0, 0, 0, 1, 0, 0}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{1}, type, std::vector {INFINITY}}) - .input2({{1}, type, std::vector {INFINITY}}) - .expected({{1}, element::boolean, std::vector {1}}), - Builder {} + .input1({{1}, type, std::vector{INFINITY}}) + .input2({{1}, type, std::vector{INFINITY}}) + .expected({{1}, element::boolean, std::vector{1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{5}, type, std::vector {-2.5f, 25.5f, 2.25f, INFINITY, 6.0f}}) - .input2({{5}, type, std::vector {10.0f, 5.0f, 2.25f, 10.0f, -INFINITY}}) - .expected({{5}, element::boolean, std::vector {0, 0, 1, 0, 0}})}; + .input1({{5}, type, std::vector{-2.5f, 25.5f, 2.25f, INFINITY, 6.0f}}) + .input2({{5}, type, std::vector{10.0f, 5.0f, 2.25f, 10.0f, -INFINITY}}) + .expected({{5}, element::boolean, std::vector{0, 0, 1, 0, 0}})}; return compParams; } std::vector generateNumericCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateNumericParams(element::f16), generateNumericParams(element::f32)}; std::vector combinedParams; @@ -108,8 +118,10 @@ std::vector generateNumericCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Numeric_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateNumericCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_Numeric_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateNumericCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/erf.cpp b/src/plugins/template/tests/functional/op_reference/erf.cpp index 9f658d78573129..a386abfb2fbf5b 100644 --- a/src/plugins/template/tests/functional/op_reference/erf.cpp +++ b/src/plugins/template/tests/functional/op_reference/erf.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/erf.hpp" + #include -#include "functional_test_utils/skip_tests_config.hpp" -#include "openvino/op/erf.hpp" #include "base_reference_test.hpp" +#include "functional_test_utils/skip_tests_config.hpp" using namespace reference_tests; using namespace ov; @@ -14,7 +15,10 @@ using namespace ov; struct ErfParams { template ErfParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues) - : pshape(shape), inType(iType), outType(iType), inputData(CreateTensor(iType, iValues)) { + : pshape(shape), + inType(iType), + outType(iType), + inputData(CreateTensor(iType, iValues)) { std::vector oValues; std::vector output; for (auto element : iValues) @@ -60,11 +64,12 @@ class ReferenceErfLayerTest : public testing::TestWithParam, public C } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto erf = std::make_shared(in); - return std::make_shared(NodeVector {erf}, ParameterVector {in}); + return std::make_shared(NodeVector{erf}, ParameterVector{in}); } }; @@ -73,17 +78,37 @@ TEST_P(ReferenceErfLayerTest, CompareWithRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_Erf_With_Hardcoded_Refs, ReferenceErfLayerTest, - ::testing::Values(ErfParams(ov::PartialShape {2, 5}, ov::element::f32, - std::vector {-INFINITY, -4.0f, -3.0f, -2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f, INFINITY}), - ErfParams(ov::PartialShape {2, 5}, ov::element::f16, - std::vector {-INFINITY, -4.0f, -3.0f, -2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f, INFINITY}), - ErfParams(ov::PartialShape {2, 3}, ov::element::i32, - std::vector {std::numeric_limits::min(), -2, -1, 1, 2, std::numeric_limits::max()}), - ErfParams(ov::PartialShape {2, 3}, ov::element::u32, - std::vector {std::numeric_limits::min(), 0, 1, 2, 3, std::numeric_limits::max()}), - ErfParams(ov::PartialShape {2, 3}, ov::element::i64, - std::vector {std::numeric_limits::min(), -2, -1, 1, 2, std::numeric_limits::max()}), - ErfParams(ov::PartialShape {2, 3}, ov::element::u64, - std::vector {std::numeric_limits::min(), 0, 1, 2, 3, std::numeric_limits::max()})), + smoke_Erf_With_Hardcoded_Refs, + ReferenceErfLayerTest, + ::testing::Values( + ErfParams(ov::PartialShape{2, 5}, + ov::element::f32, + std::vector{-INFINITY, -4.0f, -3.0f, -2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f, INFINITY}), + ErfParams(ov::PartialShape{2, 5}, + ov::element::f16, + std::vector{-INFINITY, -4.0f, -3.0f, -2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f, INFINITY}), + ErfParams(ov::PartialShape{2, 3}, + ov::element::i32, + std::vector< + int32_t>{std::numeric_limits::min(), -2, -1, 1, 2, std::numeric_limits::max()}), + ErfParams(ov::PartialShape{2, 3}, + ov::element::u32, + std::vector{std::numeric_limits::min(), + 0, + 1, + 2, + 3, + std::numeric_limits::max()}), + ErfParams(ov::PartialShape{2, 3}, + ov::element::i64, + std::vector< + int64_t>{std::numeric_limits::min(), -2, -1, 1, 2, std::numeric_limits::max()}), + ErfParams(ov::PartialShape{2, 3}, + ov::element::u64, + std::vector{std::numeric_limits::min(), + 0, + 1, + 2, + 3, + std::numeric_limits::max()})), ReferenceErfLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/exp.cpp b/src/plugins/template/tests/functional/op_reference/exp.cpp index 9b15a9cf970890..4e06b1dc2a8be5 100644 --- a/src/plugins/template/tests/functional/op_reference/exp.cpp +++ b/src/plugins/template/tests/functional/op_reference/exp.cpp @@ -2,11 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/exp.hpp" + #include -#include "openvino/op/exp.hpp" #include "base_reference_test.hpp" - #include "functional_test_utils/skip_tests_config.hpp" using namespace reference_tests; @@ -16,7 +16,10 @@ using namespace InferenceEngine; namespace { struct ExpParams { template - ExpParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + ExpParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -49,11 +52,12 @@ class ReferenceExpLayerTest : public testing::TestWithParam, public C } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto Exp = std::make_shared(in); - return std::make_shared(NodeVector {Exp}, ParameterVector {in}); + return std::make_shared(NodeVector{Exp}, ParameterVector{in}); } }; @@ -75,12 +79,13 @@ class ReferenceExpInPlaceLayerTest : public testing::TestWithParam, p } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto Exp = std::make_shared(in); const auto ExpInPlace = std::make_shared(Exp); - return std::make_shared(NodeVector {ExpInPlace}, ParameterVector {in}); + return std::make_shared(NodeVector{ExpInPlace}, ParameterVector{in}); } }; @@ -96,16 +101,12 @@ template std::vector generateExpFloatParams() { using T = typename element_type_traits::value_type; - std::vector expParams { - ExpParams(ov::PartialShape {8}, - IN_ET, - std::vector{-4, -3, -2, -1, 0, 1, 2, 3}, - std::vector{expf(-4), expf(-3), expf(-2), expf(-1), expf(0), expf(1), expf(2), expf(3)}), - ExpParams(ov::PartialShape {1}, - IN_ET, - std::vector{13}, - std::vector{expf(13)}) - }; + std::vector expParams{ + ExpParams(ov::PartialShape{8}, + IN_ET, + std::vector{-4, -3, -2, -1, 0, 1, 2, 3}, + std::vector{expf(-4), expf(-3), expf(-2), expf(-1), expf(0), expf(1), expf(2), expf(3)}), + ExpParams(ov::PartialShape{1}, IN_ET, std::vector{13}, std::vector{expf(13)})}; return expParams; } @@ -113,17 +114,19 @@ template std::vector generateExpIntParams() { using T = typename element_type_traits::value_type; - std::vector expParams { - ExpParams(ov::PartialShape {8}, - IN_ET, - std::vector{-4, -3, -2, -1, 0, 1, 2, 3}, - std::vector{static_cast(expf(-4)), static_cast(expf(-3)), static_cast(expf(-2)), static_cast(expf(-1)), - static_cast(expf(0)), static_cast(expf(1)), static_cast(expf(2)), static_cast(expf(3))}), - ExpParams(ov::PartialShape {1}, - IN_ET, - std::vector{13}, - std::vector{static_cast(expf(13))}) - }; + std::vector expParams{ + ExpParams(ov::PartialShape{8}, + IN_ET, + std::vector{-4, -3, -2, -1, 0, 1, 2, 3}, + std::vector{static_cast(expf(-4)), + static_cast(expf(-3)), + static_cast(expf(-2)), + static_cast(expf(-1)), + static_cast(expf(0)), + static_cast(expf(1)), + static_cast(expf(2)), + static_cast(expf(3))}), + ExpParams(ov::PartialShape{1}, IN_ET, std::vector{13}, std::vector{static_cast(expf(13))})}; return expParams; } @@ -131,17 +134,19 @@ template std::vector generateExpUintParams() { using T = typename element_type_traits::value_type; - std::vector expParams { - ExpParams(ov::PartialShape {8}, - IN_ET, - std::vector{0, 1, 2, 3, 4, 5, 10, 100}, - std::vector{static_cast(expf(0)), static_cast(expf(1)), static_cast(expf(2)), static_cast(expf(3)), - static_cast(expf(4)), static_cast(expf(5)), static_cast(expf(10)), static_cast(expf(100))}), - ExpParams(ov::PartialShape {1}, - IN_ET, - std::vector{13}, - std::vector{static_cast(expf(13))}) - }; + std::vector expParams{ + ExpParams(ov::PartialShape{8}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 10, 100}, + std::vector{static_cast(expf(0)), + static_cast(expf(1)), + static_cast(expf(2)), + static_cast(expf(3)), + static_cast(expf(4)), + static_cast(expf(5)), + static_cast(expf(10)), + static_cast(expf(100))}), + ExpParams(ov::PartialShape{1}, IN_ET, std::vector{13}, std::vector{static_cast(expf(13))})}; return expParams; } @@ -149,22 +154,16 @@ template std::vector generateExpInPlaceFloatParams() { using T = typename element_type_traits::value_type; - std::vector expParams { - ExpParams(ov::PartialShape {2}, - IN_ET, - std::vector{1, 3}, - std::vector{expf(expf(1)), expf(expf(3))}) - }; + std::vector expParams{ + ExpParams(ov::PartialShape{2}, IN_ET, std::vector{1, 3}, std::vector{expf(expf(1)), expf(expf(3))})}; return expParams; } std::vector generateExpCombinedParams() { - const std::vector> expTypeParams { - generateExpFloatParams(), - generateExpFloatParams(), - generateExpIntParams(), - generateExpIntParams() - }; + const std::vector> expTypeParams{generateExpFloatParams(), + generateExpFloatParams(), + generateExpIntParams(), + generateExpIntParams()}; std::vector combinedParams; for (const auto& params : expTypeParams) { @@ -174,10 +173,8 @@ std::vector generateExpCombinedParams() { } std::vector generateExpInPlaceCombinedParams() { - const std::vector> expTypeParams { - generateExpInPlaceFloatParams(), - generateExpInPlaceFloatParams() - }; + const std::vector> expTypeParams{generateExpInPlaceFloatParams(), + generateExpInPlaceFloatParams()}; std::vector combinedParams; for (const auto& params : expTypeParams) { @@ -186,10 +183,14 @@ std::vector generateExpInPlaceCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Exp_With_Hardcoded_Refs, ReferenceExpLayerTest, - testing::ValuesIn(generateExpCombinedParams()), ReferenceExpLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Exp_With_Hardcoded_Refs, + ReferenceExpLayerTest, + testing::ValuesIn(generateExpCombinedParams()), + ReferenceExpLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Exp_In_Place_With_Hardcoded_Refs, ReferenceExpInPlaceLayerTest, - testing::ValuesIn(generateExpInPlaceCombinedParams()), ReferenceExpInPlaceLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Exp_In_Place_With_Hardcoded_Refs, + ReferenceExpInPlaceLayerTest, + testing::ValuesIn(generateExpInPlaceCombinedParams()), + ReferenceExpInPlaceLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_output.cpp b/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_output.cpp index f602aed2f02e1a..c1c719babd8a72 100644 --- a/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_output.cpp +++ b/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_output.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/experimental_detectron_detection_output.hpp" + #include -#include "openvino/op/experimental_detectron_detection_output.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -18,9 +19,13 @@ struct ExperimentalDOParams { ExperimentalDOParams(const Attrs& attrs, const size_t num_rois, const element::Type& iType, - const std::vector& roisValues, const std::vector& deltasValues, - const std::vector& scoresValues, const std::vector& imageSizeInfoValues, - const std::vector& refBoxesValues, const std::vector& refClassesValues, const std::vector& refScoresValues, + const std::vector& roisValues, + const std::vector& deltasValues, + const std::vector& scoresValues, + const std::vector& imageSizeInfoValues, + const std::vector& refBoxesValues, + const std::vector& refClassesValues, + const std::vector& refScoresValues, const std::string& testcaseName = "") : attrs(attrs), inType(iType), @@ -33,11 +38,11 @@ struct ExperimentalDOParams { refClassesData(CreateTensor(ov::element::i32, refClassesValues)), refScoresData(CreateTensor(iType, refScoresValues)), testcaseName(testcaseName) { - roisShape = Shape{num_rois, 4}; - deltasShape = Shape{num_rois, static_cast(attrs.num_classes * 4)}; - scoresShape = Shape{num_rois, static_cast(attrs.num_classes)}; - imageSizeInfoShape = Shape{1, 3}; - } + roisShape = Shape{num_rois, 4}; + deltasShape = Shape{num_rois, static_cast(attrs.num_classes * 4)}; + scoresShape = Shape{num_rois, static_cast(attrs.num_classes)}; + imageSizeInfoShape = Shape{1, 3}; + } Attrs attrs; PartialShape roisShape; @@ -56,7 +61,8 @@ struct ExperimentalDOParams { std::string testcaseName; }; -class ReferenceExperimentalDOLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExperimentalDOLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -84,12 +90,9 @@ class ReferenceExperimentalDOLayerTest : public testing::TestWithParam(params.inType, params.deltasShape); const auto scores = std::make_shared(params.inType, params.scoresShape); const auto im_info = std::make_shared(params.inType, params.imageSizeInfoShape); - const auto ExperimentalDO = std::make_shared(rois, - deltas, - scores, - im_info, - params.attrs); - return std::make_shared(ExperimentalDO->outputs(), ParameterVector {rois, deltas, scores, im_info}); + const auto ExperimentalDO = + std::make_shared(rois, deltas, scores, im_info, params.attrs); + return std::make_shared(ExperimentalDO->outputs(), ParameterVector{rois, deltas, scores, im_info}); } }; @@ -101,68 +104,71 @@ template std::vector generateExperimentalDOFloatParams() { using T = typename element_type_traits::value_type; - std::vector experimentalDOParams { - ExperimentalDOParams(Attrs{0.01000000074505806f, // score_threshold - 0.2f, // nms_threshold - 2.0f, // max_delta_log_wh - 2, // num_classes - 500, // post_nms_count - 5, // max_detections_per_image - true, // class_agnostic_box_regression - {10.0f, 10.0f, 5.0f, 5.0f} // deltas_weights - }, - 16, - IN_ET, - std::vector{1.0f, 1.0f, 10.0f, 10.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 8.0f, 5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 8.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{1.0f, 1.0f, 1.0f}, - std::vector{0.8929862f, - 0.892986297607421875, - 12.10701370239257812, - 12.10701370239257812, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0}, - std::vector{1, 0, 0, 0, 0}, - std::vector{1.0f, 0.0f, 0.0f, 0.0f, 0.0f}), + std::vector experimentalDOParams{ + ExperimentalDOParams( + Attrs{ + 0.01000000074505806f, // score_threshold + 0.2f, // nms_threshold + 2.0f, // max_delta_log_wh + 2, // num_classes + 500, // post_nms_count + 5, // max_detections_per_image + true, // class_agnostic_box_regression + {10.0f, 10.0f, 5.0f, 5.0f} // deltas_weights + }, + 16, + IN_ET, + std::vector{1.0f, 1.0f, 10.0f, 10.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 8.0f, 5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{ + 5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 8.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{1.0f, 1.0f, 1.0f}, + std::vector{0.8929862f, + 0.892986297607421875, + 12.10701370239257812, + 12.10701370239257812, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0}, + std::vector{1, 0, 0, 0, 0}, + std::vector{1.0f, 0.0f, 0.0f, 0.0f, 0.0f}), }; return experimentalDOParams; } std::vector generateExperimentalDOCombinedParams() { - const std::vector> ExperimentalDOTypeParams { + const std::vector> ExperimentalDOTypeParams{ generateExperimentalDOFloatParams(), generateExperimentalDOFloatParams(), generateExperimentalDOFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : ExperimentalDOTypeParams) { @@ -171,6 +177,8 @@ std::vector generateExperimentalDOCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronDetectionOutput_With_Hardcoded_Refs, ReferenceExperimentalDOLayerTest, - testing::ValuesIn(generateExperimentalDOCombinedParams()), ReferenceExperimentalDOLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronDetectionOutput_With_Hardcoded_Refs, + ReferenceExperimentalDOLayerTest, + testing::ValuesIn(generateExperimentalDOCombinedParams()), + ReferenceExperimentalDOLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_prior_grid.cpp b/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_prior_grid.cpp index a82d111e6bb0ed..abca08c733f33a 100644 --- a/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_prior_grid.cpp +++ b/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_prior_grid.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/experimental_detectron_prior_grid_generator.hpp" #include "base_reference_test.hpp" +#include "openvino/op/experimental_detectron_prior_grid_generator.hpp" using namespace reference_tests; using namespace ov; @@ -16,14 +16,14 @@ namespace { struct ExperimentalPGGParams { template ExperimentalPGGParams(const Attrs& attrs, - const PartialShape& priorsShape, - const PartialShape& featureMapShape, - const PartialShape& imageSizeInfoShape, - const Shape& outRefShape, - const element::Type& iType, - const std::vector& priorsValues, - const std::vector& refValues, - const std::string& testcaseName = "") + const PartialShape& priorsShape, + const PartialShape& featureMapShape, + const PartialShape& imageSizeInfoShape, + const Shape& outRefShape, + const element::Type& iType, + const std::vector& priorsValues, + const std::vector& refValues, + const std::string& testcaseName = "") : attrs(attrs), priorsShape(priorsShape), featureMapShape(featureMapShape), @@ -34,19 +34,19 @@ struct ExperimentalPGGParams { priorsData(CreateTensor(iType, priorsValues)), refData(CreateTensor(outRefShape, iType, refValues)), testcaseName(testcaseName) { - std::vector featureMapValues(shape_size(featureMapShape.get_shape())); - std::iota(featureMapValues.begin(), featureMapValues.end(), 0.f); - featureMapData = CreateTensor(iType, featureMapValues); - - std::vector imageSizeInfoValues(shape_size(imageSizeInfoShape.get_shape())); - std::iota(imageSizeInfoValues.begin(), imageSizeInfoValues.end(), 0.f); - imageSizeInfoData = CreateTensor(iType, imageSizeInfoValues); - - if (shape_size(outRefShape) > refValues.size()) - actualComparisonSize = refValues.size(); - else - actualComparisonSize = 0; - } + std::vector featureMapValues(shape_size(featureMapShape.get_shape())); + std::iota(featureMapValues.begin(), featureMapValues.end(), 0.f); + featureMapData = CreateTensor(iType, featureMapValues); + + std::vector imageSizeInfoValues(shape_size(imageSizeInfoShape.get_shape())); + std::iota(imageSizeInfoValues.begin(), imageSizeInfoValues.end(), 0.f); + imageSizeInfoData = CreateTensor(iType, imageSizeInfoValues); + + if (shape_size(outRefShape) > refValues.size()) + actualComparisonSize = refValues.size(); + else + actualComparisonSize = 0; + } Attrs attrs; PartialShape priorsShape; @@ -63,7 +63,8 @@ struct ExperimentalPGGParams { std::string testcaseName; }; -class ReferenceExperimentalPGGLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExperimentalPGGLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -98,10 +99,10 @@ class ReferenceExperimentalPGGLayerTest : public testing::TestWithParam(params.inType, params.featureMapShape); const auto im_info = std::make_shared(params.inType, params.imageSizeInfoShape); const auto ExperimentalPGG = std::make_shared(priors, - featureMap, - im_info, - params.attrs); - return std::make_shared(NodeVector {ExperimentalPGG}, ParameterVector {priors, featureMap, im_info}); + featureMap, + im_info, + params.attrs); + return std::make_shared(NodeVector{ExperimentalPGG}, ParameterVector{priors, featureMap, im_info}); } }; @@ -113,106 +114,119 @@ template std::vector generateExperimentalPGGFloatParams() { using T = typename element_type_traits::value_type; - std::vector experimentalPGGParams { - ExperimentalPGGParams(Attrs{true, 0, 0, 4.0f, 4.0f}, - {3, 4}, - {1, 16, 4, 5}, - {1, 3, 100, 200}, - {60, 4}, - IN_ET, - std::vector{-24.5, -12.5, 24.5, 12.5, -16.5, -16.5, 16.5, 16.5, -12.5, -24.5, 12.5, 24.5}, - std::vector{-22.5, -10.5, 26.5, 14.5, -14.5, -14.5, 18.5, 18.5, -10.5, -22.5, 14.5, 26.5, -18.5, -10.5, 30.5, 14.5, - -10.5, -14.5, 22.5, 18.5, -6.5, -22.5, 18.5, 26.5, -14.5, -10.5, 34.5, 14.5, -6.5, -14.5, 26.5, 18.5, - -2.5, -22.5, 22.5, 26.5, -10.5, -10.5, 38.5, 14.5, -2.5, -14.5, 30.5, 18.5, 1.5, -22.5, 26.5, 26.5, - -6.5, -10.5, 42.5, 14.5, 1.5, -14.5, 34.5, 18.5, 5.5, -22.5, 30.5, 26.5, -22.5, -6.5, 26.5, 18.5, - -14.5, -10.5, 18.5, 22.5, -10.5, -18.5, 14.5, 30.5, -18.5, -6.5, 30.5, 18.5, -10.5, -10.5, 22.5, 22.5, - -6.5, -18.5, 18.5, 30.5, -14.5, -6.5, 34.5, 18.5, -6.5, -10.5, 26.5, 22.5, -2.5, -18.5, 22.5, 30.5, - -10.5, -6.5, 38.5, 18.5, -2.5, -10.5, 30.5, 22.5, 1.5, -18.5, 26.5, 30.5, -6.5, -6.5, 42.5, 18.5, - 1.5, -10.5, 34.5, 22.5, 5.5, -18.5, 30.5, 30.5, -22.5, -2.5, 26.5, 22.5, -14.5, -6.5, 18.5, 26.5, - -10.5, -14.5, 14.5, 34.5, -18.5, -2.5, 30.5, 22.5, -10.5, -6.5, 22.5, 26.5, -6.5, -14.5, 18.5, 34.5, - -14.5, -2.5, 34.5, 22.5, -6.5, -6.5, 26.5, 26.5, -2.5, -14.5, 22.5, 34.5, -10.5, -2.5, 38.5, 22.5, - -2.5, -6.5, 30.5, 26.5, 1.5, -14.5, 26.5, 34.5, -6.5, -2.5, 42.5, 22.5, 1.5, -6.5, 34.5, 26.5, - 5.5, -14.5, 30.5, 34.5, -22.5, 1.5, 26.5, 26.5, -14.5, -2.5, 18.5, 30.5, -10.5, -10.5, 14.5, 38.5, - -18.5, 1.5, 30.5, 26.5, -10.5, -2.5, 22.5, 30.5, -6.5, -10.5, 18.5, 38.5, -14.5, 1.5, 34.5, 26.5, - -6.5, -2.5, 26.5, 30.5, -2.5, -10.5, 22.5, 38.5, -10.5, 1.5, 38.5, 26.5, -2.5, -2.5, 30.5, 30.5, - 1.5, -10.5, 26.5, 38.5, -6.5, 1.5, 42.5, 26.5, 1.5, -2.5, 34.5, 30.5, 5.5, -10.5, 30.5, 38.5}), - ExperimentalPGGParams(Attrs{false, 0, 0, 8.0f, 8.0f}, - {3, 4}, - {1, 16, 3, 7}, - {1, 3, 100, 200}, - {3, 7, 3, 4}, - IN_ET, - std::vector{-44.5, -24.5, 44.5, 24.5, -32.5, -32.5, 32.5, 32.5, -24.5, -44.5, 24.5, 44.5}, - std::vector{-40.5, -20.5, 48.5, 28.5, -28.5, -28.5, 36.5, 36.5, -20.5, -40.5, 28.5, 48.5, -32.5, -20.5, 56.5, 28.5, - -20.5, -28.5, 44.5, 36.5, -12.5, -40.5, 36.5, 48.5, -24.5, -20.5, 64.5, 28.5, -12.5, -28.5, 52.5, 36.5, - -4.5, -40.5, 44.5, 48.5, -16.5, -20.5, 72.5, 28.5, -4.5, -28.5, 60.5, 36.5, 3.5, -40.5, 52.5, 48.5, - -8.5, -20.5, 80.5, 28.5, 3.5, -28.5, 68.5, 36.5, 11.5, -40.5, 60.5, 48.5, -0.5, -20.5, 88.5, 28.5, - 11.5, -28.5, 76.5, 36.5, 19.5, -40.5, 68.5, 48.5, 7.5, -20.5, 96.5, 28.5, 19.5, -28.5, 84.5, 36.5, - 27.5, -40.5, 76.5, 48.5, -40.5, -12.5, 48.5, 36.5, -28.5, -20.5, 36.5, 44.5, -20.5, -32.5, 28.5, 56.5, - -32.5, -12.5, 56.5, 36.5, -20.5, -20.5, 44.5, 44.5, -12.5, -32.5, 36.5, 56.5, -24.5, -12.5, 64.5, 36.5, - -12.5, -20.5, 52.5, 44.5, -4.5, -32.5, 44.5, 56.5, -16.5, -12.5, 72.5, 36.5, -4.5, -20.5, 60.5, 44.5, - 3.5, -32.5, 52.5, 56.5, -8.5, -12.5, 80.5, 36.5, 3.5, -20.5, 68.5, 44.5, 11.5, -32.5, 60.5, 56.5, - -0.5, -12.5, 88.5, 36.5, 11.5, -20.5, 76.5, 44.5, 19.5, -32.5, 68.5, 56.5, 7.5, -12.5, 96.5, 36.5, - 19.5, -20.5, 84.5, 44.5, 27.5, -32.5, 76.5, 56.5, -40.5, -4.5, 48.5, 44.5, -28.5, -12.5, 36.5, 52.5, - -20.5, -24.5, 28.5, 64.5, -32.5, -4.5, 56.5, 44.5, -20.5, -12.5, 44.5, 52.5, -12.5, -24.5, 36.5, 64.5, - -24.5, -4.5, 64.5, 44.5, -12.5, -12.5, 52.5, 52.5, -4.5, -24.5, 44.5, 64.5, -16.5, -4.5, 72.5, 44.5, - -4.5, -12.5, 60.5, 52.5, 3.5, -24.5, 52.5, 64.5, -8.5, -4.5, 80.5, 44.5, 3.5, -12.5, 68.5, 52.5, - 11.5, -24.5, 60.5, 64.5, -0.5, -4.5, 88.5, 44.5, 11.5, -12.5, 76.5, 52.5, 19.5, -24.5, 68.5, 64.5, - 7.5, -4.5, 96.5, 44.5, 19.5, -12.5, 84.5, 52.5, 27.5, -24.5, 76.5, 64.5}), - ExperimentalPGGParams(Attrs{true, 3, 6, 64.0f, 64.0f}, - {3, 4}, - {1, 16, 100, 100}, - {1, 3, 100, 200}, - {30000, 4}, - IN_ET, - std::vector{-364.5, -184.5, 364.5, 184.5, -256.5, -256.5, 256.5, 256.5, -180.5, -360.5, 180.5, 360.5}, - std::vector{-332.5, -152.5, 396.5, 216.5, -224.5, -224.5, 288.5, 288.5, -148.5, -328.5, 212.5, 392.5, -268.5, -152.5, - 460.5, 216.5, -160.5, -224.5, 352.5, 288.5, -84.5, -328.5, 276.5, 392.5, -204.5, -152.5, 524.5, 216.5, - -96.5, -224.5, 416.5, 288.5, -20.5, -328.5, 340.5, 392.5, -140.5, -152.5, 588.5, 216.5, -32.5, -224.5, - 480.5, 288.5, 43.5, -328.5, 404.5, 392.5, -76.5, -152.5, 652.5, 216.5, 31.5, -224.5, 544.5, 288.5, - 107.5, -328.5, 468.5, 392.5, -12.5, -152.5, 716.5, 216.5, 95.5, -224.5, 608.5, 288.5, 171.5, -328.5, - 532.5, 392.5, -332.5, -88.5, 396.5, 280.5, -224.5, -160.5, 288.5, 352.5, -148.5, -264.5, 212.5, 456.5, - -268.5, -88.5, 460.5, 280.5, -160.5, -160.5, 352.5, 352.5, -84.5, -264.5, 276.5, 456.5, -204.5, -88.5, - 524.5, 280.5, -96.5, -160.5, 416.5, 352.5, -20.5, -264.5, 340.5, 456.5, -140.5, -88.5, 588.5, 280.5, - -32.5, -160.5, 480.5, 352.5, 43.5, -264.5, 404.5, 456.5, -76.5, -88.5, 652.5, 280.5, 31.5, -160.5, - 544.5, 352.5, 107.5, -264.5, 468.5, 456.5, -12.5, -88.5, 716.5, 280.5, 95.5, -160.5, 608.5, 352.5, - 171.5, -264.5, 532.5, 456.5, -332.5, -24.5, 396.5, 344.5, -224.5, -96.5, 288.5, 416.5, -148.5, -200.5, - 212.5, 520.5, -268.5, -24.5, 460.5, 344.5, -160.5, -96.5, 352.5, 416.5, -84.5, -200.5, 276.5, 520.5, - -204.5, -24.5, 524.5, 344.5, -96.5, -96.5, 416.5, 416.5, -20.5, -200.5, 340.5, 520.5, -140.5, -24.5, - 588.5, 344.5, -32.5, -96.5, 480.5, 416.5, 43.5, -200.5, 404.5, 520.5, -76.5, -24.5, 652.5, 344.5, - 31.5, -96.5, 544.5, 416.5, 107.5, -200.5, 468.5, 520.5, -12.5, -24.5, 716.5, 344.5, 95.5, -96.5, - 608.5, 416.5, 171.5, -200.5, 532.5, 520.5}), - ExperimentalPGGParams(Attrs{false, 5, 3, 32.0f, 32.0f}, - {3, 4}, - {1, 16, 100, 100}, - {1, 3, 100, 200}, - {100, 100, 3, 4}, - IN_ET, - std::vector{-180.5, -88.5, 180.5, 88.5, -128.5, -128.5, 128.5, 128.5, -92.5, -184.5, 92.5, 184.5}, - std::vector{-164.5, -72.5, 196.5, 104.5, -112.5, -112.5, 144.5, 144.5, -76.5, -168.5, 108.5, 200.5, -132.5, -72.5, - 228.5, 104.5, -80.5, -112.5, 176.5, 144.5, -44.5, -168.5, 140.5, 200.5, -100.5, -72.5, 260.5, 104.5, - -48.5, -112.5, 208.5, 144.5, -12.5, -168.5, 172.5, 200.5, -164.5, -40.5, 196.5, 136.5, -112.5, -80.5, - 144.5, 176.5, -76.5, -136.5, 108.5, 232.5, -132.5, -40.5, 228.5, 136.5, -80.5, -80.5, 176.5, 176.5, - -44.5, -136.5, 140.5, 232.5, -100.5, -40.5, 260.5, 136.5, -48.5, -80.5, 208.5, 176.5, -12.5, -136.5, - 172.5, 232.5, -164.5, -8.5, 196.5, 168.5, -112.5, -48.5, 144.5, 208.5, -76.5, -104.5, 108.5, 264.5, - -132.5, -8.5, 228.5, 168.5, -80.5, -48.5, 176.5, 208.5, -44.5, -104.5, 140.5, 264.5, -100.5, -8.5, - 260.5, 168.5, -48.5, -48.5, 208.5, 208.5, -12.5, -104.5, 172.5, 264.5, -164.5, 23.5, 196.5, 200.5, - -112.5, -16.5, 144.5, 240.5, -76.5, -72.5, 108.5, 296.5, -132.5, 23.5, 228.5, 200.5, -80.5, -16.5, - 176.5, 240.5, -44.5, -72.5, 140.5, 296.5, -100.5, 23.5, 260.5, 200.5, -48.5, -16.5, 208.5, 240.5, - -12.5, -72.5, 172.5, 296.5, -164.5, 55.5, 196.5, 232.5, -112.5, 15.5, 144.5, 272.5, -76.5, -40.5, - 108.5, 328.5, -132.5, 55.5, 228.5, 232.5, -80.5, 15.5, 176.5, 272.5, -44.5, -40.5, 140.5, 328.5, - -100.5, 55.5, 260.5, 232.5, -48.5, 15.5, 208.5, 272.5, -12.5, -40.5, 172.5, 328.5}), + std::vector experimentalPGGParams{ + ExperimentalPGGParams( + Attrs{true, 0, 0, 4.0f, 4.0f}, + {3, 4}, + {1, 16, 4, 5}, + {1, 3, 100, 200}, + {60, 4}, + IN_ET, + std::vector{-24.5, -12.5, 24.5, 12.5, -16.5, -16.5, 16.5, 16.5, -12.5, -24.5, 12.5, 24.5}, + std::vector{-22.5, -10.5, 26.5, 14.5, -14.5, -14.5, 18.5, 18.5, -10.5, -22.5, 14.5, 26.5, -18.5, + -10.5, 30.5, 14.5, -10.5, -14.5, 22.5, 18.5, -6.5, -22.5, 18.5, 26.5, -14.5, -10.5, + 34.5, 14.5, -6.5, -14.5, 26.5, 18.5, -2.5, -22.5, 22.5, 26.5, -10.5, -10.5, 38.5, + 14.5, -2.5, -14.5, 30.5, 18.5, 1.5, -22.5, 26.5, 26.5, -6.5, -10.5, 42.5, 14.5, + 1.5, -14.5, 34.5, 18.5, 5.5, -22.5, 30.5, 26.5, -22.5, -6.5, 26.5, 18.5, -14.5, + -10.5, 18.5, 22.5, -10.5, -18.5, 14.5, 30.5, -18.5, -6.5, 30.5, 18.5, -10.5, -10.5, + 22.5, 22.5, -6.5, -18.5, 18.5, 30.5, -14.5, -6.5, 34.5, 18.5, -6.5, -10.5, 26.5, + 22.5, -2.5, -18.5, 22.5, 30.5, -10.5, -6.5, 38.5, 18.5, -2.5, -10.5, 30.5, 22.5, + 1.5, -18.5, 26.5, 30.5, -6.5, -6.5, 42.5, 18.5, 1.5, -10.5, 34.5, 22.5, 5.5, + -18.5, 30.5, 30.5, -22.5, -2.5, 26.5, 22.5, -14.5, -6.5, 18.5, 26.5, -10.5, -14.5, + 14.5, 34.5, -18.5, -2.5, 30.5, 22.5, -10.5, -6.5, 22.5, 26.5, -6.5, -14.5, 18.5, + 34.5, -14.5, -2.5, 34.5, 22.5, -6.5, -6.5, 26.5, 26.5, -2.5, -14.5, 22.5, 34.5, + -10.5, -2.5, 38.5, 22.5, -2.5, -6.5, 30.5, 26.5, 1.5, -14.5, 26.5, 34.5, -6.5, + -2.5, 42.5, 22.5, 1.5, -6.5, 34.5, 26.5, 5.5, -14.5, 30.5, 34.5, -22.5, 1.5, + 26.5, 26.5, -14.5, -2.5, 18.5, 30.5, -10.5, -10.5, 14.5, 38.5, -18.5, 1.5, 30.5, + 26.5, -10.5, -2.5, 22.5, 30.5, -6.5, -10.5, 18.5, 38.5, -14.5, 1.5, 34.5, 26.5, + -6.5, -2.5, 26.5, 30.5, -2.5, -10.5, 22.5, 38.5, -10.5, 1.5, 38.5, 26.5, -2.5, + -2.5, 30.5, 30.5, 1.5, -10.5, 26.5, 38.5, -6.5, 1.5, 42.5, 26.5, 1.5, -2.5, + 34.5, 30.5, 5.5, -10.5, 30.5, 38.5}), + ExperimentalPGGParams( + Attrs{false, 0, 0, 8.0f, 8.0f}, + {3, 4}, + {1, 16, 3, 7}, + {1, 3, 100, 200}, + {3, 7, 3, 4}, + IN_ET, + std::vector{-44.5, -24.5, 44.5, 24.5, -32.5, -32.5, 32.5, 32.5, -24.5, -44.5, 24.5, 44.5}, + std::vector{ + -40.5, -20.5, 48.5, 28.5, -28.5, -28.5, 36.5, 36.5, -20.5, -40.5, 28.5, 48.5, -32.5, -20.5, 56.5, 28.5, + -20.5, -28.5, 44.5, 36.5, -12.5, -40.5, 36.5, 48.5, -24.5, -20.5, 64.5, 28.5, -12.5, -28.5, 52.5, 36.5, + -4.5, -40.5, 44.5, 48.5, -16.5, -20.5, 72.5, 28.5, -4.5, -28.5, 60.5, 36.5, 3.5, -40.5, 52.5, 48.5, + -8.5, -20.5, 80.5, 28.5, 3.5, -28.5, 68.5, 36.5, 11.5, -40.5, 60.5, 48.5, -0.5, -20.5, 88.5, 28.5, + 11.5, -28.5, 76.5, 36.5, 19.5, -40.5, 68.5, 48.5, 7.5, -20.5, 96.5, 28.5, 19.5, -28.5, 84.5, 36.5, + 27.5, -40.5, 76.5, 48.5, -40.5, -12.5, 48.5, 36.5, -28.5, -20.5, 36.5, 44.5, -20.5, -32.5, 28.5, 56.5, + -32.5, -12.5, 56.5, 36.5, -20.5, -20.5, 44.5, 44.5, -12.5, -32.5, 36.5, 56.5, -24.5, -12.5, 64.5, 36.5, + -12.5, -20.5, 52.5, 44.5, -4.5, -32.5, 44.5, 56.5, -16.5, -12.5, 72.5, 36.5, -4.5, -20.5, 60.5, 44.5, + 3.5, -32.5, 52.5, 56.5, -8.5, -12.5, 80.5, 36.5, 3.5, -20.5, 68.5, 44.5, 11.5, -32.5, 60.5, 56.5, + -0.5, -12.5, 88.5, 36.5, 11.5, -20.5, 76.5, 44.5, 19.5, -32.5, 68.5, 56.5, 7.5, -12.5, 96.5, 36.5, + 19.5, -20.5, 84.5, 44.5, 27.5, -32.5, 76.5, 56.5, -40.5, -4.5, 48.5, 44.5, -28.5, -12.5, 36.5, 52.5, + -20.5, -24.5, 28.5, 64.5, -32.5, -4.5, 56.5, 44.5, -20.5, -12.5, 44.5, 52.5, -12.5, -24.5, 36.5, 64.5, + -24.5, -4.5, 64.5, 44.5, -12.5, -12.5, 52.5, 52.5, -4.5, -24.5, 44.5, 64.5, -16.5, -4.5, 72.5, 44.5, + -4.5, -12.5, 60.5, 52.5, 3.5, -24.5, 52.5, 64.5, -8.5, -4.5, 80.5, 44.5, 3.5, -12.5, 68.5, 52.5, + 11.5, -24.5, 60.5, 64.5, -0.5, -4.5, 88.5, 44.5, 11.5, -12.5, 76.5, 52.5, 19.5, -24.5, 68.5, 64.5, + 7.5, -4.5, 96.5, 44.5, 19.5, -12.5, 84.5, 52.5, 27.5, -24.5, 76.5, 64.5}), + ExperimentalPGGParams( + Attrs{true, 3, 6, 64.0f, 64.0f}, + {3, 4}, + {1, 16, 100, 100}, + {1, 3, 100, 200}, + {30000, 4}, + IN_ET, + std::vector{-364.5, -184.5, 364.5, 184.5, -256.5, -256.5, 256.5, 256.5, -180.5, -360.5, 180.5, 360.5}, + std::vector{-332.5, -152.5, 396.5, 216.5, -224.5, -224.5, 288.5, 288.5, -148.5, -328.5, 212.5, 392.5, + -268.5, -152.5, 460.5, 216.5, -160.5, -224.5, 352.5, 288.5, -84.5, -328.5, 276.5, 392.5, + -204.5, -152.5, 524.5, 216.5, -96.5, -224.5, 416.5, 288.5, -20.5, -328.5, 340.5, 392.5, + -140.5, -152.5, 588.5, 216.5, -32.5, -224.5, 480.5, 288.5, 43.5, -328.5, 404.5, 392.5, + -76.5, -152.5, 652.5, 216.5, 31.5, -224.5, 544.5, 288.5, 107.5, -328.5, 468.5, 392.5, + -12.5, -152.5, 716.5, 216.5, 95.5, -224.5, 608.5, 288.5, 171.5, -328.5, 532.5, 392.5, + -332.5, -88.5, 396.5, 280.5, -224.5, -160.5, 288.5, 352.5, -148.5, -264.5, 212.5, 456.5, + -268.5, -88.5, 460.5, 280.5, -160.5, -160.5, 352.5, 352.5, -84.5, -264.5, 276.5, 456.5, + -204.5, -88.5, 524.5, 280.5, -96.5, -160.5, 416.5, 352.5, -20.5, -264.5, 340.5, 456.5, + -140.5, -88.5, 588.5, 280.5, -32.5, -160.5, 480.5, 352.5, 43.5, -264.5, 404.5, 456.5, + -76.5, -88.5, 652.5, 280.5, 31.5, -160.5, 544.5, 352.5, 107.5, -264.5, 468.5, 456.5, + -12.5, -88.5, 716.5, 280.5, 95.5, -160.5, 608.5, 352.5, 171.5, -264.5, 532.5, 456.5, + -332.5, -24.5, 396.5, 344.5, -224.5, -96.5, 288.5, 416.5, -148.5, -200.5, 212.5, 520.5, + -268.5, -24.5, 460.5, 344.5, -160.5, -96.5, 352.5, 416.5, -84.5, -200.5, 276.5, 520.5, + -204.5, -24.5, 524.5, 344.5, -96.5, -96.5, 416.5, 416.5, -20.5, -200.5, 340.5, 520.5, + -140.5, -24.5, 588.5, 344.5, -32.5, -96.5, 480.5, 416.5, 43.5, -200.5, 404.5, 520.5, + -76.5, -24.5, 652.5, 344.5, 31.5, -96.5, 544.5, 416.5, 107.5, -200.5, 468.5, 520.5, + -12.5, -24.5, 716.5, 344.5, 95.5, -96.5, 608.5, 416.5, 171.5, -200.5, 532.5, 520.5}), + ExperimentalPGGParams( + Attrs{false, 5, 3, 32.0f, 32.0f}, + {3, 4}, + {1, 16, 100, 100}, + {1, 3, 100, 200}, + {100, 100, 3, 4}, + IN_ET, + std::vector{-180.5, -88.5, 180.5, 88.5, -128.5, -128.5, 128.5, 128.5, -92.5, -184.5, 92.5, 184.5}, + std::vector{-164.5, -72.5, 196.5, 104.5, -112.5, -112.5, 144.5, 144.5, -76.5, -168.5, 108.5, 200.5, + -132.5, -72.5, 228.5, 104.5, -80.5, -112.5, 176.5, 144.5, -44.5, -168.5, 140.5, 200.5, + -100.5, -72.5, 260.5, 104.5, -48.5, -112.5, 208.5, 144.5, -12.5, -168.5, 172.5, 200.5, + -164.5, -40.5, 196.5, 136.5, -112.5, -80.5, 144.5, 176.5, -76.5, -136.5, 108.5, 232.5, + -132.5, -40.5, 228.5, 136.5, -80.5, -80.5, 176.5, 176.5, -44.5, -136.5, 140.5, 232.5, + -100.5, -40.5, 260.5, 136.5, -48.5, -80.5, 208.5, 176.5, -12.5, -136.5, 172.5, 232.5, + -164.5, -8.5, 196.5, 168.5, -112.5, -48.5, 144.5, 208.5, -76.5, -104.5, 108.5, 264.5, + -132.5, -8.5, 228.5, 168.5, -80.5, -48.5, 176.5, 208.5, -44.5, -104.5, 140.5, 264.5, + -100.5, -8.5, 260.5, 168.5, -48.5, -48.5, 208.5, 208.5, -12.5, -104.5, 172.5, 264.5, + -164.5, 23.5, 196.5, 200.5, -112.5, -16.5, 144.5, 240.5, -76.5, -72.5, 108.5, 296.5, + -132.5, 23.5, 228.5, 200.5, -80.5, -16.5, 176.5, 240.5, -44.5, -72.5, 140.5, 296.5, + -100.5, 23.5, 260.5, 200.5, -48.5, -16.5, 208.5, 240.5, -12.5, -72.5, 172.5, 296.5, + -164.5, 55.5, 196.5, 232.5, -112.5, 15.5, 144.5, 272.5, -76.5, -40.5, 108.5, 328.5, + -132.5, 55.5, 228.5, 232.5, -80.5, 15.5, 176.5, 272.5, -44.5, -40.5, 140.5, 328.5, + -100.5, 55.5, 260.5, 232.5, -48.5, 15.5, 208.5, 272.5, -12.5, -40.5, 172.5, 328.5}), }; return experimentalPGGParams; } std::vector generateExperimentalPGGCombinedParams() { - const std::vector> experimentalPGGTypeParams { + const std::vector> experimentalPGGTypeParams{ generateExperimentalPGGFloatParams(), generateExperimentalPGGFloatParams(), generateExperimentalPGGFloatParams(), generateExperimentalPGGFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : experimentalPGGTypeParams) { @@ -221,6 +235,8 @@ std::vector generateExperimentalPGGCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronPriorGridGenerator_With_Hardcoded_Refs, ReferenceExperimentalPGGLayerTest, - testing::ValuesIn(generateExperimentalPGGCombinedParams()), ReferenceExperimentalPGGLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronPriorGridGenerator_With_Hardcoded_Refs, + ReferenceExperimentalPGGLayerTest, + testing::ValuesIn(generateExperimentalPGGCombinedParams()), + ReferenceExperimentalPGGLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/experimental_detectron_generate_proposals.cpp b/src/plugins/template/tests/functional/op_reference/experimental_detectron_generate_proposals.cpp index 1a3ff42b53e1d2..f0320d7b411cc5 100644 --- a/src/plugins/template/tests/functional/op_reference/experimental_detectron_generate_proposals.cpp +++ b/src/plugins/template/tests/functional/op_reference/experimental_detectron_generate_proposals.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/experimental_detectron_generate_proposals.hpp" + #include -#include "openvino/op/experimental_detectron_generate_proposals.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -16,11 +17,16 @@ namespace { struct ExperimentalGPParams { template ExperimentalGPParams(const Attrs& attrs, - const size_t number_of_channels, const size_t height, const size_t width, + const size_t number_of_channels, + const size_t height, + const size_t width, const element::Type& iType, - const std::vector& imageSizeInfoValues, const std::vector& anchorsValues, - const std::vector& deltasValues, const std::vector& scoresValues, - const std::vector& refRoisValues, const std::vector& refScoresValues, + const std::vector& imageSizeInfoValues, + const std::vector& anchorsValues, + const std::vector& deltasValues, + const std::vector& scoresValues, + const std::vector& refRoisValues, + const std::vector& refScoresValues, const std::string& testcaseName = "") : attrs(attrs), inType(iType), @@ -32,11 +38,11 @@ struct ExperimentalGPParams { refRoisData(CreateTensor(iType, refRoisValues)), refScoresData(CreateTensor(iType, refScoresValues)), testcaseName(testcaseName) { - imageSizeInfoShape = Shape{3}; - anchorsShape = Shape{height * width * number_of_channels, 4}; - deltasShape = Shape{number_of_channels * 4, height, width}; - scoresShape = Shape{number_of_channels, height, width}; - } + imageSizeInfoShape = Shape{3}; + anchorsShape = Shape{height * width * number_of_channels, 4}; + deltasShape = Shape{number_of_channels * 4, height, width}; + scoresShape = Shape{number_of_channels, height, width}; + } Attrs attrs; PartialShape imageSizeInfoShape; @@ -54,7 +60,8 @@ struct ExperimentalGPParams { std::string testcaseName; }; -class ReferenceExperimentalGPLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExperimentalGPLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -82,12 +89,14 @@ class ReferenceExperimentalGPLayerTest : public testing::TestWithParam(params.inType, params.anchorsShape); const auto deltas = std::make_shared(params.inType, params.deltasShape); const auto scores = std::make_shared(params.inType, params.scoresShape); - const auto ExperimentalGP = std::make_shared(im_info, - anchors, - deltas, - scores, - params.attrs); - return std::make_shared(ExperimentalGP->outputs(), ParameterVector {im_info, anchors, deltas, scores}); + const auto ExperimentalGP = + std::make_shared(im_info, + anchors, + deltas, + scores, + params.attrs); + return std::make_shared(ExperimentalGP->outputs(), + ParameterVector{im_info, anchors, deltas, scores}); } }; @@ -99,104 +108,118 @@ template std::vector generateExperimentalGPFloatParams() { using T = typename element_type_traits::value_type; - std::vector experimentalGPParams { - ExperimentalGPParams(Attrs{0, // min_size - 0.699999988079071, // nms_threshold - 6, // post_nms_count - 1000 // pre_nms_count - }, - 3, - 2, - 6, - IN_ET, - std::vector{1.0f, 1.0f, 1.0f}, - std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 8.0f, 1.0f}, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, - std::vector{8.0f, 5.0f, 4.0f, 1.0f, 1.0f, 1.0f}, - "eval"), - ExperimentalGPParams(Attrs{0, // min_size - 0.699999988079071, // nms_threshold - 6, // post_nms_count - 1000 // pre_nms_count - }, - 3, - 2, - 6, - IN_ET, - std::vector{150.0, 150.0, 1.0}, - std::vector{12.0, 68.0, 102.0, 123.0, 46.0, 80.0, 79.0, 128.0, 33.0, 71.0, 127.0, 86.0, 33.0, 56.0, 150.0, 73.0, - 5.0, 41.0, 93.0, 150.0, 74.0, 66.0, 106.0, 115.0, 17.0, 37.0, 87.0, 150.0, 31.0, 27.0, 150.0, 39.0, - 29.0, 23.0, 112.0, 123.0, 41.0, 37.0, 103.0, 150.0, 8.0, 46.0, 98.0, 111.0, 7.0, 69.0, 114.0, 150.0, - 70.0, 21.0, 150.0, 125.0, 54.0, 19.0, 132.0, 68.0, 62.0, 8.0, 150.0, 101.0, 57.0, 81.0, 150.0, 97.0, - 79.0, 29.0, 109.0, 130.0, 12.0, 63.0, 100.0, 150.0, 17.0, 33.0, 113.0, 150.0, 90.0, 78.0, 150.0, 111.0, - 47.0, 68.0, 150.0, 71.0, 66.0, 103.0, 111.0, 150.0, 4.0, 17.0, 112.0, 94.0, 12.0, 8.0, 119.0, 98.0, - 54.0, 56.0, 120.0, 150.0, 56.0, 29.0, 150.0, 31.0, 42.0, 3.0, 139.0, 92.0, 41.0, 65.0, 150.0, 130.0, - 49.0, 13.0, 143.0, 30.0, 40.0, 60.0, 150.0, 150.0, 23.0, 73.0, 24.0, 115.0, 56.0, 84.0, 107.0, 108.0, - 63.0, 8.0, 142.0, 125.0, 78.0, 37.0, 93.0, 144.0, 40.0, 34.0, 150.0, 46.0, 30.0, 21.0, 150.0, 120.0}, - std::vector{9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, 1.4206103, - 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, 4.771589, 2.5131326, - 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, 1.0207708, 1.1352817, 1.5785321, - 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, 1.8534478, 1.2593061, 1.7394226, 1.7686696, - 1.647999, 1.7611449, 1.3119122, 0.03007332, 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, - 2.0407224, 1.7211134, 1.8565536, 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, - 10.139171, 8.002429, 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, - 11.628928, 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, - 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, 1.9828427, - 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, 1.7512476, 1.9363779, - 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, 14.146055, 3.4043705, 15.292292, - 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, 9.427372, 12.384038, 9.583308, 8.427233, - 15.293704, 3.288159, 11.64898, 9.350885, 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, - 8.248259, 11.815807, 15.713364, 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, - 1.4412547, 1.4862992, 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, - 0.09934269, 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712}, - std::vector{0.7719922, 0.35906568, 0.29054508, 0.18124384, 0.5604661, 0.84750974, 0.98948747, 0.009793862, 0.7184191, - 0.5560748, 0.6952493, 0.6732593, 0.3306898, 0.6790913, 0.41128764, 0.34593266, 0.94296855, 0.7348507, - 0.24478768, 0.94024557, 0.05405676, 0.06466125, 0.36244348, 0.07942984, 0.10619422, 0.09412837, 0.9053611, - 0.22870538, 0.9237487, 0.20986171, 0.5067282, 0.29709867, 0.53138554, 0.189101, 0.4786443, 0.88421875}, - std::vector{149, 149, 149, 149, 149, 0, 149, 149, 149, 60.87443542480469, 149, 149, 149, 61.89498901367188, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149}, - std::vector{0.9894874691963196, - 0.9429685473442078, - 0.9402455687522888, - 0.9237486720085144, - 0.9053611159324646, - 0.8842187523841858}, - "eval_2"), + std::vector experimentalGPParams{ + ExperimentalGPParams( + Attrs{ + 0, // min_size + 0.699999988079071, // nms_threshold + 6, // post_nms_count + 1000 // pre_nms_count + }, + 3, + 2, + 6, + IN_ET, + std::vector{1.0f, 1.0f, 1.0f}, + std::vector{ + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{ + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 8.0f, 1.0f}, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, + std::vector{8.0f, 5.0f, 4.0f, 1.0f, 1.0f, 1.0f}, + "eval"), + ExperimentalGPParams( + Attrs{ + 0, // min_size + 0.699999988079071, // nms_threshold + 6, // post_nms_count + 1000 // pre_nms_count + }, + 3, + 2, + 6, + IN_ET, + std::vector{150.0, 150.0, 1.0}, + std::vector{ + 12.0, 68.0, 102.0, 123.0, 46.0, 80.0, 79.0, 128.0, 33.0, 71.0, 127.0, 86.0, 33.0, 56.0, 150.0, + 73.0, 5.0, 41.0, 93.0, 150.0, 74.0, 66.0, 106.0, 115.0, 17.0, 37.0, 87.0, 150.0, 31.0, 27.0, + 150.0, 39.0, 29.0, 23.0, 112.0, 123.0, 41.0, 37.0, 103.0, 150.0, 8.0, 46.0, 98.0, 111.0, 7.0, + 69.0, 114.0, 150.0, 70.0, 21.0, 150.0, 125.0, 54.0, 19.0, 132.0, 68.0, 62.0, 8.0, 150.0, 101.0, + 57.0, 81.0, 150.0, 97.0, 79.0, 29.0, 109.0, 130.0, 12.0, 63.0, 100.0, 150.0, 17.0, 33.0, 113.0, + 150.0, 90.0, 78.0, 150.0, 111.0, 47.0, 68.0, 150.0, 71.0, 66.0, 103.0, 111.0, 150.0, 4.0, 17.0, + 112.0, 94.0, 12.0, 8.0, 119.0, 98.0, 54.0, 56.0, 120.0, 150.0, 56.0, 29.0, 150.0, 31.0, 42.0, + 3.0, 139.0, 92.0, 41.0, 65.0, 150.0, 130.0, 49.0, 13.0, 143.0, 30.0, 40.0, 60.0, 150.0, 150.0, + 23.0, 73.0, 24.0, 115.0, 56.0, 84.0, 107.0, 108.0, 63.0, 8.0, 142.0, 125.0, 78.0, 37.0, 93.0, + 144.0, 40.0, 34.0, 150.0, 46.0, 30.0, 21.0, 150.0, 120.0}, + std::vector{ + 9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, + 1.4206103, 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, + 4.771589, 2.5131326, 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, + 1.0207708, 1.1352817, 1.5785321, 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, + 1.8534478, 1.2593061, 1.7394226, 1.7686696, 1.647999, 1.7611449, 1.3119122, 0.03007332, + 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, 2.0407224, 1.7211134, 1.8565536, + 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, 10.139171, 8.002429, + 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, 11.628928, + 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, + 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, + 1.9828427, 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, + 1.7512476, 1.9363779, 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, + 14.146055, 3.4043705, 15.292292, 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, + 9.427372, 12.384038, 9.583308, 8.427233, 15.293704, 3.288159, 11.64898, 9.350885, + 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, 8.248259, 11.815807, 15.713364, + 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, 1.4412547, 1.4862992, + 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, 0.09934269, + 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712}, + std::vector{0.7719922, 0.35906568, 0.29054508, 0.18124384, 0.5604661, 0.84750974, + 0.98948747, 0.009793862, 0.7184191, 0.5560748, 0.6952493, 0.6732593, + 0.3306898, 0.6790913, 0.41128764, 0.34593266, 0.94296855, 0.7348507, + 0.24478768, 0.94024557, 0.05405676, 0.06466125, 0.36244348, 0.07942984, + 0.10619422, 0.09412837, 0.9053611, 0.22870538, 0.9237487, 0.20986171, + 0.5067282, 0.29709867, 0.53138554, 0.189101, 0.4786443, 0.88421875}, + std::vector{ + 149, 149, 149, 149, 149, 0, 149, 149, 149, 60.87443542480469, 149, 149, 149, 61.89498901367188, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149}, + std::vector{0.9894874691963196, + 0.9429685473442078, + 0.9402455687522888, + 0.9237486720085144, + 0.9053611159324646, + 0.8842187523841858}, + "eval_2"), }; return experimentalGPParams; } std::vector generateExperimentalGPCombinedParams() { - const std::vector> experimentalGPTypeParams { + const std::vector> experimentalGPTypeParams{ generateExperimentalGPFloatParams(), generateExperimentalGPFloatParams(), generateExperimentalGPFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : experimentalGPTypeParams) { @@ -205,6 +228,8 @@ std::vector generateExperimentalGPCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronGenerateProposalsSingleImage_With_Hardcoded_Refs, ReferenceExperimentalGPLayerTest, - testing::ValuesIn(generateExperimentalGPCombinedParams()), ReferenceExperimentalGPLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronGenerateProposalsSingleImage_With_Hardcoded_Refs, + ReferenceExperimentalGPLayerTest, + testing::ValuesIn(generateExperimentalGPCombinedParams()), + ReferenceExperimentalGPLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/experimental_detectron_roi_feature_extractor.cpp b/src/plugins/template/tests/functional/op_reference/experimental_detectron_roi_feature_extractor.cpp index 10f5f7e4e10135..f187a79a8fc86b 100644 --- a/src/plugins/template/tests/functional/op_reference/experimental_detectron_roi_feature_extractor.cpp +++ b/src/plugins/template/tests/functional/op_reference/experimental_detectron_roi_feature_extractor.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/experimental_detectron_roi_feature.hpp" #include "base_reference_test.hpp" +#include "openvino/op/experimental_detectron_roi_feature.hpp" using namespace ov; using namespace reference_tests; @@ -23,7 +23,8 @@ struct ExperimentalROIParams { std::string test_case_name; }; -class ReferenceExperimentalROILayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExperimentalROILayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -76,149 +77,67 @@ INSTANTIATE_TEST_SUITE_P( ReferenceExperimentalROILayerTest, ::testing::Values( ExperimentalROIParams( - std::vector{reference_tests::Tensor(Shape{2, 4}, - ov::element::f32, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), - reference_tests::Tensor(Shape{1, 2, 2, 3}, - ov::element::f32, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, - std::vector{reference_tests::Tensor(Shape{2, 2, 3, 3}, - ov::element::f32, - std::vector{1.416667, - 1.75, - 2.083333, - 2.416667, - 2.75, - 3.083333, - 3.166667, - 3.5, - 3.833333, - 7.416667, - 7.75, - 8.083333, - 8.416667, - 8.75, - 9.083334, - 9.166666, - 9.5, - 9.833334, - 4.166667, - 4.5, - 4.833333, - 4.166667, - 4.5, - 4.833333, - 2.083333, - 2.25, - 2.416667, - 10.16667, - 10.5, - 10.83333, - 10.16667, - 10.5, - 10.83333, - 5.083333, - 5.25, - 5.416667}), - reference_tests::Tensor(Shape{2, 4}, - ov::element::f32, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, + std::vector{ + reference_tests::Tensor(Shape{2, 4}, + ov::element::f32, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), + reference_tests::Tensor( + Shape{1, 2, 2, 3}, + ov::element::f32, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, + std::vector{ + reference_tests::Tensor( + Shape{2, 2, 3, 3}, + ov::element::f32, + std::vector{1.416667, 1.75, 2.083333, 2.416667, 2.75, 3.083333, 3.166667, 3.5, 3.833333, + 7.416667, 7.75, 8.083333, 8.416667, 8.75, 9.083334, 9.166666, 9.5, 9.833334, + 4.166667, 4.5, 4.833333, 4.166667, 4.5, 4.833333, 2.083333, 2.25, 2.416667, + 10.16667, 10.5, 10.83333, 10.16667, 10.5, 10.83333, 5.083333, 5.25, 5.416667}), + reference_tests::Tensor(Shape{2, 4}, + ov::element::f32, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, "experimental_detectron_roi_feature_eval_f32"), ExperimentalROIParams( - std::vector{reference_tests::Tensor(Shape{2, 4}, - ov::element::f16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), - reference_tests::Tensor(Shape{1, 2, 2, 3}, - ov::element::f16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, - std::vector{reference_tests::Tensor(Shape{2, 2, 3, 3}, - ov::element::f16, - std::vector{1.416667, - 1.75, - 2.083333, - 2.416667, - 2.75, - 3.083333, - 3.166667, - 3.5, - 3.833333, - 7.416667, - 7.75, - 8.083333, - 8.416667, - 8.75, - 9.083334, - 9.166666, - 9.5, - 9.833334, - 4.166667, - 4.5, - 4.833333, - 4.166667, - 4.5, - 4.833333, - 2.083333, - 2.25, - 2.416667, - 10.16667, - 10.5, - 10.83333, - 10.16667, - 10.5, - 10.83333, - 5.083333, - 5.25, - 5.416667}), - reference_tests::Tensor(Shape{2, 4}, - ov::element::f16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, + std::vector{ + reference_tests::Tensor(Shape{2, 4}, + ov::element::f16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), + reference_tests::Tensor( + Shape{1, 2, 2, 3}, + ov::element::f16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, + std::vector{ + reference_tests::Tensor(Shape{2, 2, 3, 3}, + ov::element::f16, + std::vector{1.416667, 1.75, 2.083333, 2.416667, 2.75, 3.083333, + 3.166667, 3.5, 3.833333, 7.416667, 7.75, 8.083333, + 8.416667, 8.75, 9.083334, 9.166666, 9.5, 9.833334, + 4.166667, 4.5, 4.833333, 4.166667, 4.5, 4.833333, + 2.083333, 2.25, 2.416667, 10.16667, 10.5, 10.83333, + 10.16667, 10.5, 10.83333, 5.083333, 5.25, 5.416667}), + reference_tests::Tensor(Shape{2, 4}, + ov::element::f16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, "experimental_detectron_roi_feature_eval_f16"), ExperimentalROIParams( - std::vector{reference_tests::Tensor(Shape{2, 4}, - ov::element::bf16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), - reference_tests::Tensor(Shape{1, 2, 2, 3}, - ov::element::bf16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, - std::vector{reference_tests::Tensor(Shape{2, 2, 3, 3}, - ov::element::bf16, - std::vector{1.416667, - 1.75, - 2.083333, - 2.416667, - 2.75, - 3.083333, - 3.166667, - 3.5, - 3.833333, - 7.416667, - 7.75, - 8.083333, - 8.416667, - 8.75, - 9.083334, - 9.166666, - 9.5, - 9.833334, - 4.166667, - 4.5, - 4.833333, - 4.166667, - 4.5, - 4.833333, - 2.083333, - 2.25, - 2.416667, - 10.16667, - 10.5, - 10.83333, - 10.16667, - 10.5, - 10.83333, - 5.083333, - 5.25, - 5.416667}), - reference_tests::Tensor(Shape{2, 4}, - ov::element::bf16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, + std::vector{ + reference_tests::Tensor(Shape{2, 4}, + ov::element::bf16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), + reference_tests::Tensor( + Shape{1, 2, 2, 3}, + ov::element::bf16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, + std::vector{ + reference_tests::Tensor(Shape{2, 2, 3, 3}, + ov::element::bf16, + std::vector{1.416667, 1.75, 2.083333, 2.416667, 2.75, 3.083333, + 3.166667, 3.5, 3.833333, 7.416667, 7.75, 8.083333, + 8.416667, 8.75, 9.083334, 9.166666, 9.5, 9.833334, + 4.166667, 4.5, 4.833333, 4.166667, 4.5, 4.833333, + 2.083333, 2.25, 2.416667, 10.16667, 10.5, 10.83333, + 10.16667, 10.5, 10.83333, 5.083333, 5.25, 5.416667}), + reference_tests::Tensor(Shape{2, 4}, + ov::element::bf16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, "experimental_detectron_roi_feature_eval_bf16"))); diff --git a/src/plugins/template/tests/functional/op_reference/experimental_detectron_topkrois.cpp b/src/plugins/template/tests/functional/op_reference/experimental_detectron_topkrois.cpp index 0096a4bf212f68..d41d0983481b46 100644 --- a/src/plugins/template/tests/functional/op_reference/experimental_detectron_topkrois.cpp +++ b/src/plugins/template/tests/functional/op_reference/experimental_detectron_topkrois.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/experimental_detectron_topkrois.hpp" + #include -#include "openvino/op/experimental_detectron_topkrois.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,11 +13,16 @@ using namespace ov; namespace { struct ExperimentalDetectronTopKROIsParams { - ExperimentalDetectronTopKROIsParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& probsTensor, const int32_t numRois, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), probsTensor(probsTensor), numRois(numRois), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + ExperimentalDetectronTopKROIsParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& probsTensor, + const int32_t numRois, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + probsTensor(probsTensor), + numRois(numRois), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor probsTensor; @@ -25,7 +31,8 @@ struct ExperimentalDetectronTopKROIsParams { std::string testcaseName; }; -class ReferenceExperimentalDetectronTopKROIsTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExperimentalDetectronTopKROIsTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -70,7 +77,7 @@ TEST_P(ReferenceExperimentalDetectronTopKROIsTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ExperimentalDetectronTopKROIsParams( reference_tests::Tensor(ET, {2, 4}, std::vector{1.0f, 1.0f, 3.0f, 4.0f, 2.0f, 1.0f, 5.0f, 7.0f}), reference_tests::Tensor(ET, {2}, std::vector{0.5f, 0.3f}), @@ -78,8 +85,24 @@ std::vector generateParams() { reference_tests::Tensor(ET, {1, 4}, std::vector{1.0, 1.0, 3.0, 4.0}), "experimental_detectron_topk_rois_eval"), ExperimentalDetectronTopKROIsParams( - reference_tests::Tensor(ET, {4, 4}, std::vector{1.0f, 1.0f, 4.0f, 5.0f, 3.0f, 2.0f, 7.0f, 9.0f, - 10.0f, 15.0f, 13.0f, 17.0f, 13.0f, 10.0f, 18.0f, 15.0f}), + reference_tests::Tensor(ET, + {4, 4}, + std::vector{1.0f, + 1.0f, + 4.0f, + 5.0f, + 3.0f, + 2.0f, + 7.0f, + 9.0f, + 10.0f, + 15.0f, + 13.0f, + 17.0f, + 13.0f, + 10.0f, + 18.0f, + 15.0f}), reference_tests::Tensor(ET, {4}, std::vector{0.1f, 0.7f, 0.5f, 0.9f}), 2, reference_tests::Tensor(ET, {2, 4}, std::vector{13.0f, 10.0f, 18.0f, 15.0f, 3.0f, 2.0f, 7.0f, 9.0f}), @@ -89,7 +112,7 @@ std::vector generateParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -103,6 +126,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronTopKROIs_With_Hardcoded_Refs, ReferenceExperimentalDetectronTopKROIsTest, - testing::ValuesIn(generateCombinedParams()), ReferenceExperimentalDetectronTopKROIsTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronTopKROIs_With_Hardcoded_Refs, + ReferenceExperimentalDetectronTopKROIsTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceExperimentalDetectronTopKROIsTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/extract_image_patches.cpp b/src/plugins/template/tests/functional/op_reference/extract_image_patches.cpp index 49f24595eb58e6..62fc41dbea9b2c 100644 --- a/src/plugins/template/tests/functional/op_reference/extract_image_patches.cpp +++ b/src/plugins/template/tests/functional/op_reference/extract_image_patches.cpp @@ -4,9 +4,9 @@ #include -#include "openvino/opsets/opset3.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset3.hpp" using namespace reference_tests; using namespace ov; @@ -32,7 +32,8 @@ struct Builder : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder, testcaseName); }; -class ReferenceExtractImagePatchesTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExtractImagePatchesTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -78,148 +79,89 @@ TEST_P(ReferenceExtractImagePatchesTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .data({ET, {1, 1, 10, 10}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) + std::vector params{ + Builder{} + .data({ET, + {1, 1, 10, 10}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) .sizes({3, 3}) .strides({5, 5}) .rates({1, 1}) .autoPad(op::PadType::VALID) - .expectedResult({ET, {1, 9, 2, 2}, std::vector{ - 1, 6, 51, 56, - 2, 7, 52, 57, - 3, 8, 53, 58, - 11, 16, 61, 66, - 12, 17, 62, 67, - 13, 18, 63, 68, - 21, 26, 71, 76, - 22, 27, 72, 77, - 23, 28, 73, 78}}), - - Builder {} - .data({ET, {1, 1, 10, 10}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) + .expectedResult({ET, {1, 9, 2, 2}, std::vector{1, 6, 51, 56, 2, 7, 52, 57, 3, 8, 53, 58, + 11, 16, 61, 66, 12, 17, 62, 67, 13, 18, 63, 68, + 21, 26, 71, 76, 22, 27, 72, 77, 23, 28, 73, 78}}), + + Builder{} + .data({ET, + {1, 1, 10, 10}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) .sizes({4, 4}) .strides({8, 8}) .rates({1, 1}) .autoPad(op::PadType::VALID) - .expectedResult({ET, {1, 16, 1, 1}, std::vector{ - 1, 2, 3, 4, - 11, 12, 13, 14, - 21, 22, 23, 24, - 31, 32, 33, 34}}), - - Builder {} - .data({ET, {1, 1, 10, 10}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) + .expectedResult( + {ET, {1, 16, 1, 1}, std::vector{1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34}}), + + Builder{} + .data({ET, + {1, 1, 10, 10}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) .sizes({4, 4}) .strides({9, 9}) .rates({1, 1}) .autoPad(op::PadType::SAME_UPPER) - .expectedResult({ET, {1, 16, 2, 2}, std::vector{ - 0, 0, 0, 89, - 0, 0, 81, 90, - 0, 0, 82, 0, - 0, 0, 83, 0, - 0, 9, 0, 99, - 1, 10, 91, 100, - 2, 0, 92, 0, - 3, 0, 93, 0, - 0, 19, 0, 0, - 11, 20, 0, 0, - 12, 0, 0, 0, - 13, 0, 0, 0, - 0, 29, 0, 0, - 21, 30, 0, 0, - 22, 0, 0, 0, - 23, 0, 0, 0}}), - - Builder {} - .data({ET, {1, 1, 10, 10}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) + .expectedResult( + {ET, {1, 16, 2, 2}, std::vector{0, 0, 0, 89, 0, 0, 81, 90, 0, 0, 82, 0, 0, 0, 83, 0, + 0, 9, 0, 99, 1, 10, 91, 100, 2, 0, 92, 0, 3, 0, 93, 0, + 0, 19, 0, 0, 11, 20, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, + 0, 29, 0, 0, 21, 30, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0}}), + + Builder{} + .data({ET, + {1, 1, 10, 10}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) .sizes({3, 3}) .strides({5, 5}) .rates({2, 2}) .autoPad(op::PadType::VALID) - .expectedResult({ET, {1, 9, 2, 2}, std::vector{ - 1, 6, 51, 56, - 3, 8, 53, 58, - 5, 10, 55, 60, - 21, 26, 71, 76, - 23, 28, 73, 78, - 25, 30, 75, 80, - 41, 46, 91, 96, - 43, 48, 93, 98, - 45, 50, 95, 100}}), - - Builder {} - .data({ET, {1, 2, 5, 5}, std::vector{ - 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50}}) + .expectedResult({ET, {1, 9, 2, 2}, std::vector{1, 6, 51, 56, 3, 8, 53, 58, 5, 10, 55, 60, + 21, 26, 71, 76, 23, 28, 73, 78, 25, 30, 75, 80, + 41, 46, 91, 96, 43, 48, 93, 98, 45, 50, 95, 100}}), + + Builder{} + .data({ET, {1, 2, 5, 5}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}}) .sizes({2, 2}) .strides({3, 3}) .rates({1, 1}) .autoPad(op::PadType::VALID) - .expectedResult({ET, {1, 8, 2, 2}, std::vector{ - 1, 4, 16, 19, - 26, 29, 41, 44, - 2, 5, 17, 20, - 27, 30, 42, 45, - 6, 9, 21, 24, - 31, 34, 46, 49, - 7, 10, 22, 25, - 32, 35, 47, 50}}), + .expectedResult( + {ET, {1, 8, 2, 2}, std::vector{1, 4, 16, 19, 26, 29, 41, 44, 2, 5, 17, 20, 27, 30, 42, 45, + 6, 9, 21, 24, 31, 34, 46, 49, 7, 10, 22, 25, 32, 35, 47, 50}}), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -241,6 +183,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ExtractImagePatches_With_Hardcoded_Refs, ReferenceExtractImagePatchesTest, - testing::ValuesIn(generateCombinedParams()), ReferenceExtractImagePatchesTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ExtractImagePatches_With_Hardcoded_Refs, + ReferenceExtractImagePatchesTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceExtractImagePatchesTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/eye.cpp b/src/plugins/template/tests/functional/op_reference/eye.cpp index 23037edaebcb40..714dbdee8e61b4 100644 --- a/src/plugins/template/tests/functional/op_reference/eye.cpp +++ b/src/plugins/template/tests/functional/op_reference/eye.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/eye.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/eye.hpp" using namespace ov; using namespace reference_tests; @@ -20,13 +22,13 @@ struct EyeParams { const reference_tests::Tensor& expected_tensor, const std::string& test_case_name, bool is_dyn_shape_test = false) - : num_rows(num_rows), - num_columns(num_columns), - diagonal_index(diagonal_index), - output_type(output_type), - expected_tensor(expected_tensor), - test_case_name(test_case_name), - set_dynamic_shape(is_dyn_shape_test) {} + : num_rows(num_rows), + num_columns(num_columns), + diagonal_index(diagonal_index), + output_type(output_type), + expected_tensor(expected_tensor), + test_case_name(test_case_name), + set_dynamic_shape(is_dyn_shape_test) {} reference_tests::Tensor num_rows; reference_tests::Tensor num_columns; @@ -46,14 +48,14 @@ struct EyeBatchShapeParams { const reference_tests::Tensor& expected_tensor, const std::string& test_case_name, bool is_dyn_shape_test = false) - : num_rows(num_rows), - num_columns(num_columns), - diagonal_index(diagonal_index), - batch_shape(batch_shape), - output_type(output_type), - expected_tensor(expected_tensor), - test_case_name(test_case_name), - set_dynamic_shape(is_dyn_shape_test) {} + : num_rows(num_rows), + num_columns(num_columns), + diagonal_index(diagonal_index), + batch_shape(batch_shape), + output_type(output_type), + expected_tensor(expected_tensor), + test_case_name(test_case_name), + set_dynamic_shape(is_dyn_shape_test) {} reference_tests::Tensor num_rows; reference_tests::Tensor num_columns; @@ -88,9 +90,15 @@ class ReferenceEyeLayerTest : public testing::TestWithParam, public C const reference_tests::Tensor& diagonal_index, const element::Type& output_type, bool set_dynamic_shape = false) { - const auto in1 = std::make_shared(num_rows.type, set_dynamic_shape ? PartialShape::dynamic() : num_rows.shape); - const auto in2 = std::make_shared(num_columns.type, set_dynamic_shape ? PartialShape::dynamic() : num_columns.shape); - const auto in3 = std::make_shared(diagonal_index.type, set_dynamic_shape ? PartialShape::dynamic() : diagonal_index.shape); + const auto in1 = + std::make_shared(num_rows.type, + set_dynamic_shape ? PartialShape::dynamic() : num_rows.shape); + const auto in2 = + std::make_shared(num_columns.type, + set_dynamic_shape ? PartialShape::dynamic() : num_columns.shape); + const auto in3 = + std::make_shared(diagonal_index.type, + set_dynamic_shape ? PartialShape::dynamic() : diagonal_index.shape); const auto Eye = std::make_shared(in1, in2, in3, output_type); return std::make_shared(NodeVector{Eye}, ParameterVector{in1, in2, in3}); } @@ -106,7 +114,10 @@ class ReferenceEyeBatchShapeLayerTest : public testing::TestWithParam(num_rows.type, set_dynamic_shape ? PartialShape::dynamic() : num_rows.shape); - const auto in2 = std::make_shared(num_columns.type, set_dynamic_shape ? PartialShape::dynamic() : num_columns.shape); - const auto in3 = std::make_shared(diagonal_index.type, set_dynamic_shape ? PartialShape::dynamic() : diagonal_index.shape); - const auto in4 = std::make_shared(batch_shape.type, set_dynamic_shape ? PartialShape::dynamic() : batch_shape.shape); + const auto in1 = + std::make_shared(num_rows.type, + set_dynamic_shape ? PartialShape::dynamic() : num_rows.shape); + const auto in2 = + std::make_shared(num_columns.type, + set_dynamic_shape ? PartialShape::dynamic() : num_columns.shape); + const auto in3 = + std::make_shared(diagonal_index.type, + set_dynamic_shape ? PartialShape::dynamic() : diagonal_index.shape); + const auto in4 = + std::make_shared(batch_shape.type, + set_dynamic_shape ? PartialShape::dynamic() : batch_shape.shape); const auto Eye = std::make_shared(in1, in2, in3, in4, output_type); return std::make_shared(NodeVector{Eye}, ParameterVector{in1, in2, in3, in4}); } }; std::vector generateEyeParams(bool is_dyn_shape_test = false) { - std::vector test_params { + std::vector test_params{ EyeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{0}}, - element::Type_t::f32, - reference_tests::Tensor{{3, 2}, element::f32, std::vector{1, 0, - 0, 1, - 0, 0}}, - "float32_default_3x2", is_dyn_shape_test), + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{0}}, + element::Type_t::f32, + reference_tests::Tensor{{3, 2}, element::f32, std::vector{1, 0, 0, 1, 0, 0}}, + "float32_default_3x2", + is_dyn_shape_test), EyeParams(reference_tests::Tensor{{}, element::i32, std::vector{2}}, - reference_tests::Tensor{{}, element::i32, std::vector{4}}, - reference_tests::Tensor{{}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 4}, element::i8, std::vector{0, 0, 1, 0, - 0, 0, 0, 1}}, - "int8_diag=2_2x4", is_dyn_shape_test), + reference_tests::Tensor{{}, element::i32, std::vector{4}}, + reference_tests::Tensor{{}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 4}, element::i8, std::vector{0, 0, 1, 0, 0, 0, 0, 1}}, + "int8_diag=2_2x4", + is_dyn_shape_test), EyeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{}, element::i32, std::vector{-3}}, - element::Type_t::i64, - reference_tests::Tensor{{4, 2}, element::i64, std::vector{0, 0, - 0, 0, - 0, 0, - 1, 0}}, - "int64_diag=-3_4x2", is_dyn_shape_test), + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{}, element::i32, std::vector{-3}}, + element::Type_t::i64, + reference_tests::Tensor{{4, 2}, element::i64, std::vector{0, 0, 0, 0, 0, 0, 1, 0}}, + "int64_diag=-3_4x2", + is_dyn_shape_test), EyeParams(reference_tests::Tensor{{}, element::i32, std::vector{1}}, - reference_tests::Tensor{{}, element::i32, std::vector{4}}, - reference_tests::Tensor{{}, element::i32, std::vector{10}}, - element::Type_t::i8, - reference_tests::Tensor{{1, 4}, element::i8, std::vector{0, 0, 0, 0}}, - "int8_empty_1x4", is_dyn_shape_test)}; + reference_tests::Tensor{{}, element::i32, std::vector{4}}, + reference_tests::Tensor{{}, element::i32, std::vector{10}}, + element::Type_t::i8, + reference_tests::Tensor{{1, 4}, element::i8, std::vector{0, 0, 0, 0}}, + "int8_empty_1x4", + is_dyn_shape_test)}; return test_params; } std::vector generateEyeBatchShapeParams(bool is_dyn_shape_test = false) { - std::vector test_params { - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{0}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::f32, - reference_tests::Tensor{{2, 3, 3}, element::f32, std::vector{1, 0, 0, - 0, 1, 0, - 0, 0, 1, - 1, 0, 0, - 0, 1, 0, - 0, 0, 1}}, - "f32_2x3x3_diag0", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{0}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::f32, - reference_tests::Tensor{{2, 3, 3}, element::f32, std::vector{1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1}}, - "f32_2x4x4_diag0", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{0}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::f32, - reference_tests::Tensor{{2, 3, 4}, element::f32, std::vector{1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0}}, - "f32_2x3x4_diag0", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{0}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{1, 0, 0, - 0, 1, 0, - 0, 0, 1, - 0, 0, 0, - 1, 0, 0, - 0, 1, 0, - 0, 0, 1, - 0, 0, 0}}, - "f32_2x4x3_diag0", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{1}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::f32, - reference_tests::Tensor{{2, 3, 4}, element::f32, std::vector{0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1}}, - "f32_2x3x4_diag1", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{1}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::f32, - reference_tests::Tensor{{2, 4, 3}, element::f32, std::vector{0, 1, 0, - 0, 0, 1, - 0, 0, 0, - 0, 0, 0, - 0, 1, 0, - 0, 0, 1, - 0, 0, 0, - 0, 0, 0}}, - "f32_2x4x3_diag1", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 1, 0, - 0, 0, 0, 1, - 0, 0, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, - 0, 0, 0, 0}}, - "i8_2x3x4_diag2", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 1, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 1, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}}, - "i8_2x4x3_diag2", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{-1}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 0, 0, - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 0, 0, - 1, 0, 0, 0, - 0, 1, 0, 0}}, - "i8_2x3x4_diag-1", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{-1}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 0, - 1, 0, 0, - 0, 1, 0, - 0, 0, 1, - 0, 0, 0, - 1, 0, 0, - 0, 1, 0, - 0, 0, 1}}, - "i8_2x4x3_diag-1", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{-2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 0, 0, - 0, 0, 0, 0, - 1, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 1, 0, 0, 0}}, - "i8_2x3x4_diag-2", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{-2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 0, - 0, 0, 0, - 1, 0, 0, - 0, 1, 0, - 0, 0, 0, - 0, 0, 0, - 1, 0, 0, - 0, 1, 0}}, - "i8_2x4x3_diag-2", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{6}}, - reference_tests::Tensor{{1}, element::i32, std::vector{5}}, - reference_tests::Tensor{{1}, element::i32, std::vector{1}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i32, - reference_tests::Tensor{{2, 6, 5}, element::i32, std::vector{0, 1, 0, 0, 0, - 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, - 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, - 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0}}, - "int32_2x6x5_diag1", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{2}, element::i32, std::vector{2, 2}}, - element::Type_t::i64, - reference_tests::Tensor{{2, 2, 4, 2}, element::i64, std::vector{0, 0, 1, 0, - 0, 0, 0, 1, - 0, 0, 1, 0, - 0, 0, 0, 1, - 0, 0, 1, 0, - 0, 0, 0, 1, - 0, 0, 1, 0, - 0, 0, 0, 1}}, - "int64_2x2x3x3", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{2}, element::i32, std::vector{1, 3}}, - element::Type_t::u8, - reference_tests::Tensor{{2, 3, 3}, element::u8, std::vector{0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}, - "uint8_1x3x2x2", is_dyn_shape_test)}; + std::vector test_params{ + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{0}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::f32, + reference_tests::Tensor{{2, 3, 3}, + element::f32, + std::vector{1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1}}, + "f32_2x3x3_diag0", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{0}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::f32, + reference_tests::Tensor{{2, 3, 3}, element::f32, std::vector{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}}, + "f32_2x4x4_diag0", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{0}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::f32, + reference_tests::Tensor{{2, 3, 4}, element::f32, std::vector{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}}, + "f32_2x3x4_diag0", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{0}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + "f32_2x4x3_diag0", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{1}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::f32, + reference_tests::Tensor{{2, 3, 4}, element::f32, std::vector{0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}}, + "f32_2x3x4_diag1", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{1}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::f32, + reference_tests::Tensor{{2, 4, 3}, element::f32, std::vector{0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}}, + "f32_2x4x3_diag1", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0}}, + "i8_2x3x4_diag2", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + "i8_2x4x3_diag2", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{-1}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0}}, + "i8_2x3x4_diag-1", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{-1}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1}}, + "i8_2x4x3_diag-1", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{-2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + "i8_2x3x4_diag-2", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{-2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0}}, + "i8_2x4x3_diag-2", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{6}}, + reference_tests::Tensor{{1}, element::i32, std::vector{5}}, + reference_tests::Tensor{{1}, element::i32, std::vector{1}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i32, + reference_tests::Tensor{{2, 6, 5}, + element::i32, + std::vector{0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + "int32_2x6x5_diag1", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{2}, element::i32, std::vector{2, 2}}, + element::Type_t::i64, + reference_tests::Tensor{{2, 2, 4, 2}, element::i64, std::vector{0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, + 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 1, 0, 0, 0, 0, 1}}, + "int64_2x2x3x3", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{2}, element::i32, std::vector{1, 3}}, + element::Type_t::u8, + reference_tests::Tensor{{2, 3, 3}, element::u8, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + "uint8_1x3x2x2", + is_dyn_shape_test)}; return test_params; } @@ -394,18 +366,16 @@ TEST_P(ReferenceEyeBatchShapeLayerTest, EyeRectangleBatchShapeWithHardcodedRefs) } // namespace -INSTANTIATE_TEST_SUITE_P( - smoke_Eye_With_Hardcoded_Refs, - ReferenceEyeLayerTest, - // Generate params (3 inputs) with static and dynamic shapes - ::testing::ValuesIn(generateEyeCombinedParams()), - ReferenceEyeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Eye_With_Hardcoded_Refs, + ReferenceEyeLayerTest, + // Generate params (3 inputs) with static and dynamic shapes + ::testing::ValuesIn(generateEyeCombinedParams()), + ReferenceEyeLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_EyeBatchShape_With_Hardcoded_Refs, - ReferenceEyeBatchShapeLayerTest, - // Generate params (4 inputs) with static and dynamic shapes - ::testing::ValuesIn(generateEyeBatchShapeCombinedParams()), - ReferenceEyeBatchShapeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_EyeBatchShape_With_Hardcoded_Refs, + ReferenceEyeBatchShapeLayerTest, + // Generate params (4 inputs) with static and dynamic shapes + ::testing::ValuesIn(generateEyeBatchShapeCombinedParams()), + ReferenceEyeBatchShapeLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/fake_quantize.cpp b/src/plugins/template/tests/functional/op_reference/fake_quantize.cpp index 5f42a477da270f..418d02c23c5d08 100644 --- a/src/plugins/template/tests/functional/op_reference/fake_quantize.cpp +++ b/src/plugins/template/tests/functional/op_reference/fake_quantize.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/fake_quantize.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/fake_quantize.hpp" using namespace ov; using namespace reference_tests; @@ -16,17 +17,17 @@ namespace { struct FakeQuantizeParams { template FakeQuantizeParams(const Shape& input_shape, - const Shape& expected_shape, - const element::Type& input_type, - const element::Type& expected_type, - const std::vector& input_data, - const std::vector& expected_data, - const std::shared_ptr& input_low, - const std::shared_ptr& input_high, - const std::shared_ptr& output_low, - const std::shared_ptr& output_high, - const std::size_t& levels, - const op::AutoBroadcastSpec& broadcast = op::AutoBroadcastType::NONE) + const Shape& expected_shape, + const element::Type& input_type, + const element::Type& expected_type, + const std::vector& input_data, + const std::vector& expected_data, + const std::shared_ptr& input_low, + const std::shared_ptr& input_high, + const std::shared_ptr& output_low, + const std::shared_ptr& output_high, + const std::size_t& levels, + const op::AutoBroadcastSpec& broadcast = op::AutoBroadcastType::NONE) : m_input_shape(input_shape), m_expected_shape(expected_shape), m_input_type(input_type), @@ -90,24 +91,26 @@ class ReferenceFakeQuantizeLayerTest : public testing::TestWithParam CreateFunction(const Shape& input_shape, - const Shape& expected_shape, - const element::Type& input_type, - const element::Type& expected_type, - const std::shared_ptr& input_low, - const std::shared_ptr& input_high, - const std::shared_ptr& output_low, - const std::shared_ptr& output_high, - const std::size_t& levels, - const op::AutoBroadcastSpec& broadcast) { + const Shape& expected_shape, + const element::Type& input_type, + const element::Type& expected_type, + const std::shared_ptr& input_low, + const std::shared_ptr& input_high, + const std::shared_ptr& output_low, + const std::shared_ptr& output_high, + const std::size_t& levels, + const op::AutoBroadcastSpec& broadcast) { auto in = std::make_shared(input_type, input_shape); if (broadcast == op::AutoBroadcastType::NONE) { return std::make_shared( - NodeVector{std::make_shared(in, input_low, input_high, output_low, output_high, levels)}, + NodeVector{ + std::make_shared(in, input_low, input_high, output_low, output_high, levels)}, ParameterVector{in}); } else { return std::make_shared( - NodeVector{std::make_shared(in, input_low, input_high, output_low, output_high, levels, broadcast)}, + NodeVector{std::make_shared< + op::v0::FakeQuantize>(in, input_low, input_high, output_low, output_high, levels, broadcast)}, ParameterVector{in}); } } @@ -128,21 +131,22 @@ template std::vector generateParamsForFakeQuantize() { using T = typename element_type_traits::value_type; - std::vector params { - FakeQuantizeParams(ov::Shape{1, 2, 3, 4}, - ov::Shape{1, 2, 3, 4}, - IN_ET, - IN_ET, - iota_vector(shape_size(ov::Shape{1, 2, 3, 4})), - std::vector{2.f, 2.f, 2.f, 2.f, 6.6666669f, 6.6666669f, - 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, - 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, - 11.33333301f, 11.33333301f, 16.f, 16.f, 16.f, 16.f}, - op::v0::Constant::create(IN_ET, Shape{}, {0.f}), - op::v0::Constant::create(IN_ET, Shape{}, {23.f}), - op::v0::Constant::create(IN_ET, Shape{}, {2.f}), - op::v0::Constant::create(IN_ET, Shape{}, {16.f}), - 4), + std::vector params{ + FakeQuantizeParams( + ov::Shape{1, 2, 3, 4}, + ov::Shape{1, 2, 3, 4}, + IN_ET, + IN_ET, + iota_vector(shape_size(ov::Shape{1, 2, 3, 4})), + std::vector{2.f, 2.f, 2.f, 2.f, 6.6666669f, 6.6666669f, + 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, + 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, + 11.33333301f, 11.33333301f, 16.f, 16.f, 16.f, 16.f}, + op::v0::Constant::create(IN_ET, Shape{}, {0.f}), + op::v0::Constant::create(IN_ET, Shape{}, {23.f}), + op::v0::Constant::create(IN_ET, Shape{}, {2.f}), + op::v0::Constant::create(IN_ET, Shape{}, {16.f}), + 4), FakeQuantizeParams(ov::Shape{1, 2, 3, 4}, ov::Shape{1, 2, 3, 4}, IN_ET, @@ -155,61 +159,98 @@ std::vector generateParamsForFakeQuantize() { op::v0::Constant::create(IN_ET, Shape{}, {2.f}), op::v0::Constant::create(IN_ET, Shape{}, {16.f}), 5), - FakeQuantizeParams(ov::Shape{1, 2, 5, 5}, - ov::Shape{1, 2, 5, 5}, - IN_ET, - IN_ET, - iota_vector(shape_size(Shape{1, 2, 5, 5})), - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, - 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, - 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, - 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), - 5), - FakeQuantizeParams(ov::Shape{1, 2, 5, 5}, - ov::Shape{1, 2, 5, 5}, - IN_ET, - IN_ET, - iota_vector(shape_size(Shape{1, 2, 5, 5})), - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, - 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, - 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, - 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), - 5, - op::AutoBroadcastSpec(op::AutoBroadcastType::PDPD, 1)), - FakeQuantizeParams(ov::Shape{1, 2, 5, 5}, - ov::Shape{1, 2, 5, 5}, - IN_ET, - IN_ET, - iota_vector(shape_size(Shape{1, 2, 5, 5})), - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, - 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, - 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, - 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), - 5, - op::AutoBroadcastSpec(op::AutoBroadcastType::PDPD, -1)), + FakeQuantizeParams( + ov::Shape{1, 2, 5, 5}, + ov::Shape{1, 2, 5, 5}, + IN_ET, + IN_ET, + iota_vector(shape_size(Shape{1, 2, 5, 5})), + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, + 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, + 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, + 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), + 5), + FakeQuantizeParams( + ov::Shape{1, 2, 5, 5}, + ov::Shape{1, 2, 5, 5}, + IN_ET, + IN_ET, + iota_vector(shape_size(Shape{1, 2, 5, 5})), + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, + 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, + 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, + 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), + 5, + op::AutoBroadcastSpec(op::AutoBroadcastType::PDPD, 1)), + FakeQuantizeParams( + ov::Shape{1, 2, 5, 5}, + ov::Shape{1, 2, 5, 5}, + IN_ET, + IN_ET, + iota_vector(shape_size(Shape{1, 2, 5, 5})), + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, + 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, + 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, + 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), + 5, + op::AutoBroadcastSpec(op::AutoBroadcastType::PDPD, -1)), FakeQuantizeParams(ov::Shape{1, 2, 3, 3}, ov::Shape{1, 2, 3, 3}, IN_ET, IN_ET, iota_vector(shape_size(Shape{1, 2, 3, 3})), - std::vector{5.0f, 9.0f, 13.0f, 17.0f, 21.0f, 25.0f, 25.0f, 25.0f, 25.0f, - 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f,}, - op::v0::Constant::create(IN_ET, Shape{1, 1, 3, 3}, {0.f,}), - op::v0::Constant::create(IN_ET, Shape{1, 1, 3, 3}, {5.f,}), - op::v0::Constant::create(IN_ET, Shape{1, 2, 3, 1}, {5.f,}), - op::v0::Constant::create(IN_ET, Shape{1, 2, 1, 3}, {25.f,}), + std::vector{ + 5.0f, + 9.0f, + 13.0f, + 17.0f, + 21.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + }, + op::v0::Constant::create(IN_ET, + Shape{1, 1, 3, 3}, + { + 0.f, + }), + op::v0::Constant::create(IN_ET, + Shape{1, 1, 3, 3}, + { + 5.f, + }), + op::v0::Constant::create(IN_ET, + Shape{1, 2, 3, 1}, + { + 5.f, + }), + op::v0::Constant::create(IN_ET, + Shape{1, 2, 1, 3}, + { + 25.f, + }), 16, op::AutoBroadcastSpec(op::AutoBroadcastType::NUMPY)), }; @@ -219,8 +260,7 @@ std::vector generateParamsForFakeQuantize() { std::vector generateCombinedParamsForFakeQuantize() { const std::vector> allTypeParams{ generateParamsForFakeQuantize(), - generateParamsForFakeQuantize() - }; + generateParamsForFakeQuantize()}; std::vector combinedParams; @@ -231,10 +271,9 @@ std::vector generateCombinedParamsForFakeQuantize() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_FakeQuantize_With_Hardcoded_Refs, - ReferenceFakeQuantizeLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFakeQuantize()), - ReferenceFakeQuantizeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_FakeQuantize_With_Hardcoded_Refs, + ReferenceFakeQuantizeLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFakeQuantize()), + ReferenceFakeQuantizeLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/floor.cpp b/src/plugins/template/tests/functional/op_reference/floor.cpp index 59da7069139dbc..861c1c197e1955 100644 --- a/src/plugins/template/tests/functional/op_reference/floor.cpp +++ b/src/plugins/template/tests/functional/op_reference/floor.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/floor.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/floor.hpp" using namespace ov; using namespace reference_tests; @@ -14,9 +16,9 @@ namespace { struct FloorParams { template FloorParams(const PartialShape& shape, - const element::Type& iType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -50,8 +52,8 @@ class ReferenceFloorLayerTest : public testing::TestWithParam, publ private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto floor = std::make_shared(in); return std::make_shared(NodeVector{floor}, ParameterVector{in}); @@ -66,12 +68,10 @@ template std::vector generateParamsForFloorFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - FloorParams(ov::PartialShape{4}, - IN_ET, - std::vector{-2.5f, -2.0f, 0.3f, 4.8f}, - std::vector{-3.0f, -2.0f, 0.0f, 4.0f}) - }; + std::vector params{FloorParams(ov::PartialShape{4}, + IN_ET, + std::vector{-2.5f, -2.0f, 0.3f, 4.8f}, + std::vector{-3.0f, -2.0f, 0.0f, 4.0f})}; return params; } @@ -79,26 +79,21 @@ template std::vector generateParamsForFloorInt64() { using T = typename element_type_traits::value_type; - std::vector params{ - FloorParams(ov::PartialShape{3}, - IN_ET, - std::vector{0, 1, 0x4000000000000001}, - std::vector{0, 1, 0x4000000000000001}) - }; + std::vector params{FloorParams(ov::PartialShape{3}, + IN_ET, + std::vector{0, 1, 0x4000000000000001}, + std::vector{0, 1, 0x4000000000000001})}; return params; } - template std::vector generateParamsForFloorInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - FloorParams(ov::PartialShape{4}, - IN_ET, - std::vector{2, 136314888, 0x40000010, 0x40000001}, - std::vector{2, 136314888, 0x40000010, 0x40000001}) - }; + std::vector params{FloorParams(ov::PartialShape{4}, + IN_ET, + std::vector{2, 136314888, 0x40000010, 0x40000001}, + std::vector{2, 136314888, 0x40000010, 0x40000001})}; return params; } @@ -107,27 +102,21 @@ std::vector generateParamsForFloorInt() { using T = typename element_type_traits::value_type; std::vector params{ - FloorParams(ov::PartialShape{4}, - IN_ET, - std::vector{2, 64, 0x40, 0x01}, - std::vector{2, 64, 0x40, 0x01}) - }; + FloorParams(ov::PartialShape{4}, IN_ET, std::vector{2, 64, 0x40, 0x01}, std::vector{2, 64, 0x40, 0x01})}; return params; } std::vector generateCombinedParamsForFloor() { - const std::vector> allTypeParams{ - generateParamsForFloorFloat(), - generateParamsForFloorFloat(), - generateParamsForFloorInt64(), - generateParamsForFloorInt32(), - generateParamsForFloorInt(), - generateParamsForFloorInt(), - generateParamsForFloorInt(), - generateParamsForFloorInt(), - generateParamsForFloorInt(), - generateParamsForFloorInt() - }; + const std::vector> allTypeParams{generateParamsForFloorFloat(), + generateParamsForFloorFloat(), + generateParamsForFloorInt64(), + generateParamsForFloorInt32(), + generateParamsForFloorInt(), + generateParamsForFloorInt(), + generateParamsForFloorInt(), + generateParamsForFloorInt(), + generateParamsForFloorInt(), + generateParamsForFloorInt()}; std::vector combinedParams; @@ -138,11 +127,9 @@ std::vector generateCombinedParamsForFloor() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Floor_With_Hardcoded_Refs, - ReferenceFloorLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFloor()), - ReferenceFloorLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Floor_With_Hardcoded_Refs, + ReferenceFloorLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFloor()), + ReferenceFloorLayerTest::getTestCaseName); } // namespace - diff --git a/src/plugins/template/tests/functional/op_reference/floor_mod.cpp b/src/plugins/template/tests/functional/op_reference/floor_mod.cpp index 497bea5f9e8621..5eb6433a67f0ef 100644 --- a/src/plugins/template/tests/functional/op_reference/floor_mod.cpp +++ b/src/plugins/template/tests/functional/op_reference/floor_mod.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/floor_mod.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/floor_mod.hpp" using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct FloorModParams { template FloorModParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -57,9 +59,9 @@ class ReferenceFloorModLayerTest : public testing::TestWithParam private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto floormod = std::make_shared(in1, in2); @@ -76,14 +78,12 @@ template std::vector generateParamsForFloorMod() { using T = typename element_type_traits::value_type; - std::vector params{ - FloorModParams(ov::PartialShape{4}, - ov::PartialShape{4}, - IN_ET, - std::vector{7, -7, 7, -7}, - std::vector{3, 3, -3, -3}, - std::vector{1, 2, -2, -1}) - }; + std::vector params{FloorModParams(ov::PartialShape{4}, + ov::PartialShape{4}, + IN_ET, + std::vector{7, -7, 7, -7}, + std::vector{3, 3, -3, -3}, + std::vector{1, 2, -2, -1})}; return params; } @@ -129,14 +129,12 @@ std::vector generateParamsForFloorModNonIntegerDivisor() { } std::vector generateCombinedParamsForFloorMod() { - const std::vector> allTypeParams{ - generateParamsForFloorMod(), - generateParamsForFloorMod(), - generateParamsForFloorMod(), - generateParamsForFloorMod(), - generateParamsForFloorMod(), - generateParamsForFloorMod() - }; + const std::vector> allTypeParams{generateParamsForFloorMod(), + generateParamsForFloorMod(), + generateParamsForFloorMod(), + generateParamsForFloorMod(), + generateParamsForFloorMod(), + generateParamsForFloorMod()}; std::vector combinedParams; @@ -150,8 +148,7 @@ std::vector generateCombinedParamsForFloorMod() { std::vector generateCombinedParamsForFloorModBroadcast() { const std::vector> allTypeParams{ generateParamsForFloorModBroadcast(), - generateParamsForFloorModBroadcast() - }; + generateParamsForFloorModBroadcast()}; std::vector combinedParams; @@ -172,8 +169,7 @@ std::vector generateCombinedParamsForFloorModScalar() { generateParamsForFloorModScalar(), generateParamsForFloorModScalar(), generateParamsForFloorModScalar(), - generateParamsForFloorModScalar() - }; + generateParamsForFloorModScalar()}; std::vector combinedParams; @@ -188,28 +184,24 @@ std::vector generateCombinedParamsForFloorModNonIntegerDivisor() return generateParamsForFloorModNonIntegerDivisor(); } -INSTANTIATE_TEST_SUITE_P( - smoke_FloorMod_With_Hardcoded_Refs, - ReferenceFloorModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFloorMod()), - ReferenceFloorModLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_FloorMod_Broadcast_With_Hardcoded_Refs, - ReferenceFloorModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFloorModBroadcast()), - ReferenceFloorModLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_FloorMod_Scalar_With_Hardcoded_Refs, - ReferenceFloorModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFloorModScalar()), - ReferenceFloorModLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_FloorMod_NonInteger_Divisor, - ReferenceFloorModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFloorModNonIntegerDivisor()), - ReferenceFloorModLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_FloorMod_With_Hardcoded_Refs, + ReferenceFloorModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFloorMod()), + ReferenceFloorModLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_FloorMod_Broadcast_With_Hardcoded_Refs, + ReferenceFloorModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFloorModBroadcast()), + ReferenceFloorModLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_FloorMod_Scalar_With_Hardcoded_Refs, + ReferenceFloorModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFloorModScalar()), + ReferenceFloorModLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_FloorMod_NonInteger_Divisor, + ReferenceFloorModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFloorModNonIntegerDivisor()), + ReferenceFloorModLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gather.cpp b/src/plugins/template/tests/functional/op_reference/gather.cpp index d158a8b38e3bf1..916cee50407836 100644 --- a/src/plugins/template/tests/functional/op_reference/gather.cpp +++ b/src/plugins/template/tests/functional/op_reference/gather.cpp @@ -4,21 +4,26 @@ #include -#include "openvino/opsets/opset8.hpp" -#include "openvino/opsets/opset7.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset7.hpp" +#include "openvino/opsets/opset8.hpp" using namespace reference_tests; using namespace ov; namespace { struct GatherParams { - GatherParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& indicesTensor, const reference_tests::Tensor& axisTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), indicesTensor(indicesTensor), axisTensor(axisTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + GatherParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& indicesTensor, + const reference_tests::Tensor& axisTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + indicesTensor(indicesTensor), + axisTensor(axisTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor indicesTensor; @@ -59,8 +64,8 @@ class ReferenceGatherTest : public testing::TestWithParam, public static std::shared_ptr CreateFunction(const GatherParams& params) { const auto P = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto I = std::make_shared(params.indicesTensor.type, params.indicesTensor.shape); - const auto A = opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, - params.axisTensor.data.data()); + const auto A = + opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, params.axisTensor.data.data()); const auto G = std::make_shared(P, I, A); const auto f = std::make_shared(G, ParameterVector{P, I}); return f; @@ -72,11 +77,18 @@ TEST_P(ReferenceGatherTest, CompareWithRefs) { } struct GatherParamsV7 { - GatherParamsV7( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& indicesTensor, const reference_tests::Tensor& axisTensor, int64_t batchDims, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), indicesTensor(indicesTensor), axisTensor(axisTensor), batchDims(batchDims), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + GatherParamsV7(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& indicesTensor, + const reference_tests::Tensor& axisTensor, + int64_t batchDims, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + indicesTensor(indicesTensor), + axisTensor(axisTensor), + batchDims(batchDims), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor indicesTensor; @@ -119,8 +131,8 @@ class ReferenceGatherTestV7 : public testing::TestWithParam, pub static std::shared_ptr CreateFunction(const GatherParamsV7& params) { const auto P = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto I = std::make_shared(params.indicesTensor.type, params.indicesTensor.shape); - const auto A = opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, - params.axisTensor.data.data()); + const auto A = + opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, params.axisTensor.data.data()); const auto G = std::make_shared(P, I, A, params.batchDims); const auto f = std::make_shared(G, ParameterVector{P, I}); return f; @@ -136,8 +148,8 @@ class ReferenceGatherTestV8 : public ReferenceGatherTestV7 { static std::shared_ptr CreateFunction(const GatherParamsV7& params) { const auto P = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto I = std::make_shared(params.indicesTensor.type, params.indicesTensor.shape); - const auto A = opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, - params.axisTensor.data.data()); + const auto A = + opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, params.axisTensor.data.data()); const auto G = std::make_shared(P, I, A, params.batchDims); const auto f = std::make_shared(G, ParameterVector{P, I}); return f; @@ -153,29 +165,27 @@ std::vector generateParams() { using T = typename element_type_traits::value_type; using T_I = typename element_type_traits::value_type; using T_A = typename element_type_traits::value_type; - std::vector params { - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 10, 11, 20, 21, 30, 31}), - reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{ - 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 2, 3, 4, 2}, std::vector{ - 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, - 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, - 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, - 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31}), - "gather_4d_indices_axis_0"), - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 10, 11, 20, 21, 30, 31}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 10, 11, 20, 21, 20, 21, 30, 31}), - "gather_axis_0"), + std::vector params{ + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{10, 11, 20, 21, 30, 31}), + reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor( + ET, + {2, 2, 3, 4, 2}, + std::vector{10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, + 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, + 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, + 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, + 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31}), + "gather_4d_indices_axis_0"), + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{10, 11, 20, 21, 30, 31}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{10, 11, 20, 21, 20, 21, 30, 31}), + "gather_axis_0"), }; return params; } @@ -185,251 +195,139 @@ std::vector generateParamsFloatValue() { using T = typename element_type_traits::value_type; using T_I = typename element_type_traits::value_type; using T_A = typename element_type_traits::value_type; - std::vector params { - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{ - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 2, 3, 4, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + std::vector params{ + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, + {2, 2, 3, 4, 2}, + std::vector{1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_4d_indices_axis_0_2d_input"), - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 3, 4}, std::vector{ - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 3, 4, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_3d_indices_axis_0_2d_input"), + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + "gather_4d_indices_axis_0_2d_input"), GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, + reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 3, 4}, std::vector{0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_2d_indices_axis_0_2d_input"), - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, -2, 1, 2}), + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, + reference_tests::Tensor(ET, {2, 3, 4, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_2d_negative_and_positive_indices_axis_0_2d_input"), - GatherParams( - reference_tests::Tensor(ET, {3}, std::vector{ - 1.0f, 2.0f, 3.0f}), - reference_tests::Tensor(ET_I, {2}, std::vector{ - 1, 0}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2}, std::vector{ - 2.0f, 1.0f}), - "gather_1d_indices_axis_0_1d_input"), - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {}, std::vector{1}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2}, std::vector{ - 2.0f, 2.1f}), - "gather_scalar_indices_axis_0_2d_input"), + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + "gather_3d_indices_axis_0_2d_input"), + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, + {2, 2, 2}, + std::vector{1.0f, + 1.1f, + 2.0f, + 2.1f, + + 2.0f, + 2.1f, + 3.0f, + 3.1f}), + "gather_2d_indices_axis_0_2d_input"), + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, -2, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, + {2, 2, 2}, + std::vector{1.0f, + 1.1f, + 2.0f, + 2.1f, + + 2.0f, + 2.1f, + 3.0f, + 3.1f}), + "gather_2d_negative_and_positive_indices_axis_0_2d_input"), + GatherParams(reference_tests::Tensor(ET, {3}, std::vector{1.0f, 2.0f, 3.0f}), + reference_tests::Tensor(ET_I, {2}, std::vector{1, 0}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, {2}, std::vector{2.0f, 1.0f}), + "gather_1d_indices_axis_0_1d_input"), + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {}, std::vector{1}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, {2}, std::vector{2.0f, 2.1f}), + "gather_scalar_indices_axis_0_2d_input"), GatherParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 2.0f, 2.1f, 2.2f, - 3.0f, 3.1f, 3.2f}), - reference_tests::Tensor(ET_I, {1, 2}, std::vector{ - 0, 2}), + reference_tests::Tensor(ET, {3, 3}, std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), + reference_tests::Tensor(ET_I, {1, 2}, std::vector{0, 2}), reference_tests::Tensor(ET_A, {}, std::vector{1}), - reference_tests::Tensor(ET, {3, 1, 2}, std::vector{ - 1.0f, 1.2f, - 2.0f, 2.2f, - 3.0f, 3.2f}), + reference_tests::Tensor(ET, {3, 1, 2}, std::vector{1.0f, 1.2f, 2.0f, 2.2f, 3.0f, 3.2f}), "gather_2d_indices_axis_1_2d_input"), GatherParams( - reference_tests::Tensor(ET, {2, 2, 3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 2.0f, 2.1f, 2.2f, - 3.0f, 3.1f, 3.2f, - - 11.0f, 11.1f, 11.2f, - 12.0f, 12.1f, 12.2f, - 13.0f, 13.1f, 13.2f, + reference_tests::Tensor( + ET, + {2, 2, 3, 3}, + std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f, + 11.0f, 11.1f, 11.2f, 12.0f, 12.1f, 12.2f, 13.0f, 13.1f, 13.2f, - 101.0f, 101.1f, 101.2f, - 102.0f, 102.1f, 102.2f, - 103.0f, 103.1f, 103.2f, + 101.0f, 101.1f, 101.2f, 102.0f, 102.1f, 102.2f, 103.0f, 103.1f, 103.2f, - 111.0f, 111.1f, 111.2f, - 112.0f, 112.1f, 112.2f, - 113.0f, 113.1f, 113.2f}), - reference_tests::Tensor(ET_I, {2}, std::vector{ - 0, 2}), + 111.0f, 111.1f, 111.2f, 112.0f, 112.1f, 112.2f, 113.0f, 113.1f, 113.2f}), + reference_tests::Tensor(ET_I, {2}, std::vector{0, 2}), reference_tests::Tensor(ET_A, {}, std::vector{2}), - reference_tests::Tensor(ET, {2, 2, 2, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 3.0f, 3.1f, 3.2f, + reference_tests::Tensor(ET, {2, 2, 2, 3}, std::vector{1.0f, 1.1f, 1.2f, 3.0f, 3.1f, 3.2f, - 11.0f, 11.1f, 11.2f, - 13.0f, 13.1f, 13.2f, + 11.0f, 11.1f, 11.2f, 13.0f, 13.1f, 13.2f, + 101.0f, 101.1f, 101.2f, 103.0f, 103.1f, 103.2f, - 101.0f, 101.1f, 101.2f, - 103.0f, 103.1f, 103.2f, - - 111.0f, 111.1f, 111.2f, - 113.0f, 113.1f, 113.2f}), + 111.0f, 111.1f, 111.2f, 113.0f, 113.1f, 113.2f}), "gather_1d_indices_axis_2_4d_input"), GatherParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), + reference_tests::Tensor(ET, {3, 3}, std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), reference_tests::Tensor(ET_I, {}, std::vector{0}), reference_tests::Tensor(ET_A, {}, std::vector{1}), - reference_tests::Tensor(ET, {3}, std::vector{ - 1.0f, 2.0f, 3.0f}), + reference_tests::Tensor(ET, {3}, std::vector{1.0f, 2.0f, 3.0f}), "gather_scalar_indices_axis_1_2d_input"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -451,106 +349,79 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, ReferenceGatherTest, - testing::ValuesIn(generateCombinedParams()), ReferenceGatherTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, + ReferenceGatherTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceGatherTest::getTestCaseName); template std::vector generateParamsV7() { using T = typename element_type_traits::value_type; using T_I = typename element_type_traits::value_type; using T_A = typename element_type_traits::value_type; - std::vector params { - GatherParamsV7( - reference_tests::Tensor(ET, {3}, std::vector{ - 1, 2, 3}), - reference_tests::Tensor(ET_I, {2}, std::vector{ - 2, 0}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2}, std::vector{ - 3, 1}), - "gather_v7_1d"), - GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 10, 11, 20, 21, 30, 31}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 10, 11, 20, 21, 20, 21, 30, 31}), - "gather_v7_axis_0"), + std::vector params{ + GatherParamsV7(reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(ET_I, {2}, std::vector{2, 0}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {2}, std::vector{3, 1}), + "gather_v7_1d"), + GatherParamsV7(reference_tests::Tensor(ET, {3, 2}, std::vector{10, 11, 20, 21, 30, 31}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{10, 11, 20, 21, 20, 21, 30, 31}), + "gather_v7_axis_0"), + GatherParamsV7(reference_tests::Tensor(ET, {2, 3}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET_I, + {2, 2, 2}, + std::vector{0, + 1, + 1, + 2, + + 2, + 0, + 1, + 2}), + reference_tests::Tensor(ET_A, {}, std::vector{1}), + 1, + reference_tests::Tensor(ET, + {2, 2, 2}, + std::vector{1, + 2, + 2, + 3, + + 6, + 4, + 5, + 6}), + "gather_v7_data_int32_3d_indices_axis_1_batch_dims_1"), + GatherParamsV7(reference_tests::Tensor(ET, {2, 5}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), + reference_tests::Tensor(ET_I, {2, 3}, std::vector{0, 0, 4, 4, 0, 0}), + reference_tests::Tensor(ET_A, {}, std::vector{1}), + 1, + reference_tests::Tensor(ET, {2, 3}, std::vector{1, 1, 5, 10, 6, 6}), + "gather_v7_data_int32_2d_indices_axis_1_batch_dims_1"), + GatherParamsV7(reference_tests::Tensor(ET, {2, 5}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), + reference_tests::Tensor(ET_I, {2, 3}, std::vector{0, 0, 4, 4, 0, 0}), + reference_tests::Tensor(ET_A, {}, std::vector{1}), + -1, + reference_tests::Tensor(ET, {2, 3}, std::vector{1, 1, 5, 10, 6, 6}), + "gather_v7_data_int32_2d_indices_axis_1_negative_batch_dims"), GatherParamsV7( - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6}), - reference_tests::Tensor(ET_I, {2, 2, 2}, std::vector{ - 0, 1, - 1, 2, - - 2, 0, - 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{1}), - 1, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 1, 2, - 2, 3, + reference_tests::Tensor(ET, {2, 1, 5, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 6, 4, - 5, 6}), - "gather_v7_data_int32_3d_indices_axis_1_batch_dims_1"), - GatherParamsV7( - reference_tests::Tensor(ET, {2, 5}, std::vector{ - 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10}), - reference_tests::Tensor(ET_I, {2, 3}, std::vector{ - 0, 0, 4, - 4, 0, 0}), - reference_tests::Tensor(ET_A, {}, std::vector{1}), - 1, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 1, 1, 5, - 10, 6, 6}), - "gather_v7_data_int32_2d_indices_axis_1_batch_dims_1"), - GatherParamsV7( - reference_tests::Tensor(ET, {2, 5}, std::vector{ - 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10}), - reference_tests::Tensor(ET_I, {2, 3}, std::vector{ - 0, 0, 4, - 4, 0, 0}), - reference_tests::Tensor(ET_A, {}, std::vector{1}), - -1, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 1, 1, 5, - 10, 6, 6}), - "gather_v7_data_int32_2d_indices_axis_1_negative_batch_dims"), - GatherParamsV7( - reference_tests::Tensor(ET, {2, 1, 5, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40}), - reference_tests::Tensor(ET_I, {2, 3}, std::vector{ - 1, 2, 4, - 4, 3, 2}), + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40}), + reference_tests::Tensor(ET_I, {2, 3}, std::vector{1, 2, 4, 4, 3, 2}), reference_tests::Tensor(ET_A, {}, std::vector{2}), 1, - reference_tests::Tensor(ET, {2, 1, 3, 4}, std::vector{ - 5, 6, 7, 8, - 9, 10, 11, 12, - 17, 18, 19, 20, - - 37, 38, 39, 40, - 33, 34, 35, 36, - 29, 30, 31, 32}), + reference_tests::Tensor(ET, {2, 1, 3, 4}, std::vector{5, 6, 7, 8, 9, 10, 11, 12, 17, 18, 19, 20, + + 37, 38, 39, 40, 33, 34, 35, 36, 29, 30, 31, 32}), "gather_v7_4d_data_axis_2_batch_dims_1_int32"), }; return params; @@ -558,17 +429,13 @@ std::vector generateParamsV7() { template <> std::vector generateParamsV7() { - std::vector params { - GatherParamsV7( - reference_tests::Tensor(element::boolean, {3, 2}, std::vector{ - 1, 1, 1, 0, 0, 1}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{ - 0, 1, 1, 2}), - reference_tests::Tensor(element::i64, {}, std::vector{0}), - 0, - reference_tests::Tensor(element::boolean, {2, 2, 2}, std::vector{ - 1, 1, 1, 0, 1, 0, 0, 1}), - "gather_v7_axis_0_bool"), + std::vector params{ + GatherParamsV7(reference_tests::Tensor(element::boolean, {3, 2}, std::vector{1, 1, 1, 0, 0, 1}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 1, 2}), + reference_tests::Tensor(element::i64, {}, std::vector{0}), + 0, + reference_tests::Tensor(element::boolean, {2, 2, 2}, std::vector{1, 1, 1, 0, 1, 0, 0, 1}), + "gather_v7_axis_0_bool"), }; return params; } @@ -578,299 +445,180 @@ std::vector generateParamsFloatValueV7() { using T = typename element_type_traits::value_type; using T_I = typename element_type_traits::value_type; using T_A = typename element_type_traits::value_type; - std::vector params { + std::vector params{ GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{ - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2, 2, 3, 4, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, + {2, 2, 3, 4, 2}, + std::vector{1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f}), "gather_v7_4d_indices_axis_0_2d_input"), GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 3, 4}, std::vector{ - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2, 3, 4, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_v7_3d_indices_axis_0_2d_input"), - GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, + reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 3, 4}, std::vector{0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_v7_2d_indices_axis_0_2d_input"), - GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, -2, 1, 2}), + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), reference_tests::Tensor(ET_A, {}, std::vector{0}), 0, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, + reference_tests::Tensor(ET, {2, 3, 4, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_v7_2d_negative_and_positive_indices_axis_0_2d_input"), - GatherParamsV7( - reference_tests::Tensor(ET, {3}, std::vector{ - 1.0f, 2.0f, 3.0f}), - reference_tests::Tensor(ET_I, {2}, std::vector{ - 1, 0}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2}, std::vector{ - 2.0f, 1.0f}), - "gather_v7_1d_indices_axis_0_1d_input"), - GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {}, std::vector{1}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2}, std::vector{ - 2.0f, 2.1f}), - "gather_v7_scalar_indices_axis_0_2d_input"), + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + "gather_v7_3d_indices_axis_0_2d_input"), + GatherParamsV7(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, + {2, 2, 2}, + std::vector{1.0f, + 1.1f, + 2.0f, + 2.1f, + + 2.0f, + 2.1f, + 3.0f, + 3.1f}), + "gather_v7_2d_indices_axis_0_2d_input"), + GatherParamsV7(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, -2, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, + {2, 2, 2}, + std::vector{1.0f, + 1.1f, + 2.0f, + 2.1f, + + 2.0f, + 2.1f, + 3.0f, + 3.1f}), + "gather_v7_2d_negative_and_positive_indices_axis_0_2d_input"), + GatherParamsV7(reference_tests::Tensor(ET, {3}, std::vector{1.0f, 2.0f, 3.0f}), + reference_tests::Tensor(ET_I, {2}, std::vector{1, 0}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {2}, std::vector{2.0f, 1.0f}), + "gather_v7_1d_indices_axis_0_1d_input"), + GatherParamsV7(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {}, std::vector{1}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {2}, std::vector{2.0f, 2.1f}), + "gather_v7_scalar_indices_axis_0_2d_input"), GatherParamsV7( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 2.0f, 2.1f, 2.2f, - 3.0f, 3.1f, 3.2f}), - reference_tests::Tensor(ET_I, {1, 2}, std::vector{ - 0, 2}), + reference_tests::Tensor(ET, {3, 3}, std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), + reference_tests::Tensor(ET_I, {1, 2}, std::vector{0, 2}), reference_tests::Tensor(ET_A, {}, std::vector{1}), 0, - reference_tests::Tensor(ET, {3, 1, 2}, std::vector{ - 1.0f, 1.2f, - 2.0f, 2.2f, - 3.0f, 3.2f}), + reference_tests::Tensor(ET, {3, 1, 2}, std::vector{1.0f, 1.2f, 2.0f, 2.2f, 3.0f, 3.2f}), "gather_v7_2d_indices_axis_1_2d_input"), GatherParamsV7( - reference_tests::Tensor(ET, {2, 2, 3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 2.0f, 2.1f, 2.2f, - 3.0f, 3.1f, 3.2f, - - 11.0f, 11.1f, 11.2f, - 12.0f, 12.1f, 12.2f, - 13.0f, 13.1f, 13.2f, + reference_tests::Tensor( + ET, + {2, 2, 3, 3}, + std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f, + 11.0f, 11.1f, 11.2f, 12.0f, 12.1f, 12.2f, 13.0f, 13.1f, 13.2f, - 101.0f, 101.1f, 101.2f, - 102.0f, 102.1f, 102.2f, - 103.0f, 103.1f, 103.2f, + 101.0f, 101.1f, 101.2f, 102.0f, 102.1f, 102.2f, 103.0f, 103.1f, 103.2f, - 111.0f, 111.1f, 111.2f, - 112.0f, 112.1f, 112.2f, - 113.0f, 113.1f, 113.2f}), - reference_tests::Tensor(ET_I, {2}, std::vector{ - 0, 2}), + 111.0f, 111.1f, 111.2f, 112.0f, 112.1f, 112.2f, 113.0f, 113.1f, 113.2f}), + reference_tests::Tensor(ET_I, {2}, std::vector{0, 2}), reference_tests::Tensor(ET_A, {}, std::vector{2}), 0, - reference_tests::Tensor(ET, {2, 2, 2, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 3.0f, 3.1f, 3.2f, + reference_tests::Tensor(ET, {2, 2, 2, 3}, std::vector{1.0f, 1.1f, 1.2f, 3.0f, 3.1f, 3.2f, - 11.0f, 11.1f, 11.2f, - 13.0f, 13.1f, 13.2f, + 11.0f, 11.1f, 11.2f, 13.0f, 13.1f, 13.2f, + 101.0f, 101.1f, 101.2f, 103.0f, 103.1f, 103.2f, - 101.0f, 101.1f, 101.2f, - 103.0f, 103.1f, 103.2f, - - 111.0f, 111.1f, 111.2f, - 113.0f, 113.1f, 113.2f}), + 111.0f, 111.1f, 111.2f, 113.0f, 113.1f, 113.2f}), "gather_v7_1d_indices_axis_2_4d_input"), GatherParamsV7( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), + reference_tests::Tensor(ET, {3, 3}, std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), reference_tests::Tensor(ET_I, {}, std::vector{0}), reference_tests::Tensor(ET_A, {}, std::vector{1}), 0, - reference_tests::Tensor(ET, {3}, std::vector{ - 1.0f, 2.0f, 3.0f}), + reference_tests::Tensor(ET, {3}, std::vector{1.0f, 2.0f, 3.0f}), "gather_v7_scalar_indices_axis_1_2d_input"), GatherParamsV7( - reference_tests::Tensor(ET, {2, 5, 2}, std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - 9.0f, 10.0f, - - 11.0f, 12.0f, - 13.0f, 14.0f, - 15.0f, 16.0f, - 17.0f, 18.0f, - 19.0f, 20.0f}), - reference_tests::Tensor(ET_I, {2, 2, 3}, std::vector{ - 0, 0, 4, - 4, 0, 0, - - 1, 2, 4, - 4, 3, 2}), + reference_tests::Tensor(ET, {2, 5, 2}, std::vector{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, + 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, + + 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, + 16.0f, 17.0f, 18.0f, 19.0f, 20.0f}), + reference_tests::Tensor(ET_I, + {2, 2, 3}, + std::vector{0, + 0, + 4, + 4, + 0, + 0, + + 1, + 2, + 4, + 4, + 3, + 2}), reference_tests::Tensor(ET_A, {}, std::vector{1}), 1, - reference_tests::Tensor(ET, {2, 2, 3, 2}, std::vector{ - 1.0f, 2.0f, - 1.0f, 2.0f, - 9.0f, 10.0f, - - 9.0f, 10.0f, - 1.0f, 2.0f, - 1.0f, 2.0f, + reference_tests::Tensor(ET, {2, 2, 3, 2}, std::vector{1.0f, 2.0f, 1.0f, 2.0f, 9.0f, 10.0f, + 9.0f, 10.0f, 1.0f, 2.0f, 1.0f, 2.0f, - 13.0f, 14.0f, - 15.0f, 16.0f, - 19.0f, 20.0f, + 13.0f, 14.0f, 15.0f, 16.0f, 19.0f, 20.0f, - 19.0f, 20.0f, - 17.0f, 18.0f, - 15.0f, 16.0f}), + 19.0f, 20.0f, 17.0f, 18.0f, 15.0f, 16.0f}), "gather_v7_3d_indices_axis_1_batch_dims_1"), }; return params; } std::vector generateCombinedParamsV7() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsV7(), generateParamsV7(), generateParamsV7(), @@ -893,79 +641,55 @@ std::vector generateCombinedParamsV7() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, ReferenceGatherTestV7, - testing::ValuesIn(generateCombinedParamsV7()), ReferenceGatherTestV7::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, + ReferenceGatherTestV7, + testing::ValuesIn(generateCombinedParamsV7()), + ReferenceGatherTestV7::getTestCaseName); template std::vector generateParamsV8() { using T = typename element_type_traits::value_type; using T_I = typename element_type_traits::value_type; using T_A = typename element_type_traits::value_type; - std::vector params { - GatherParamsV7( - reference_tests::Tensor(ET, {5}, std::vector{ - 1, 2, 3, 4, 5}), - reference_tests::Tensor(ET_I, {3}, std::vector{ - 0, -2, -1}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {3}, std::vector{ - 1, 4, 5}), - "gather_v8_1d_negative_indices"), + std::vector params{ + GatherParamsV7(reference_tests::Tensor(ET, {5}, std::vector{1, 2, 3, 4, 5}), + reference_tests::Tensor(ET_I, {3}, std::vector{0, -2, -1}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {3}, std::vector{1, 4, 5}), + "gather_v8_1d_negative_indices"), // zeros are not present in the original data but appear because of the out of bound values + GatherParamsV7(reference_tests::Tensor(ET, {5}, std::vector{1, 2, 3, 4, 5}), + reference_tests::Tensor(ET_I, {3}, std::vector{0, 20, 4}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {3}, std::vector{1, 0, 5}), + "gather_v8_out_of_bound_indices_1"), GatherParamsV7( - reference_tests::Tensor(ET, {5}, std::vector{ - 1, 2, 3, 4, 5}), - reference_tests::Tensor(ET_I, {3}, std::vector{ - 0, 20, 4}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {3}, std::vector{ - 1, 0, 5}), - "gather_v8_out_of_bound_indices_1"), - GatherParamsV7( - reference_tests::Tensor(ET, {2, 1, 5, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40}), - reference_tests::Tensor(ET_I, {2, 3}, std::vector{ - 1, 2, 200, - 4, 200, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{2}), - 1, - reference_tests::Tensor(ET, {2, 1, 3, 4}, std::vector{ - 5, 6, 7, 8, - 9, 10, 11, 12, - 0, 0, 0, 0, - - 37, 38, 39, 40, - 0, 0, 0, 0, - 29, 30, 31, 32}), - "gather_v8_4d_data_axis_2_batch_dims_1_out_of_bound_indices_2"), - GatherParamsV7( - reference_tests::Tensor(ET, {5}, std::vector{ - 1, 2, 3, 4, 5}), - reference_tests::Tensor(ET_I, {3}, std::vector{ - 0, -200, 4}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {3}, std::vector{ - 1, 0, 5}), - "gather_v8_out_of_bound_negative_index"), + reference_tests::Tensor(ET, {2, 1, 5, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40}), + reference_tests::Tensor(ET_I, {2, 3}, std::vector{1, 2, 200, 4, 200, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{2}), + 1, + reference_tests::Tensor(ET, {2, 1, 3, 4}, std::vector{5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, + + 37, 38, 39, 40, 0, 0, 0, 0, 29, 30, 31, 32}), + "gather_v8_4d_data_axis_2_batch_dims_1_out_of_bound_indices_2"), + GatherParamsV7(reference_tests::Tensor(ET, {5}, std::vector{1, 2, 3, 4, 5}), + reference_tests::Tensor(ET_I, {3}, std::vector{0, -200, 4}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {3}, std::vector{1, 0, 5}), + "gather_v8_out_of_bound_negative_index"), }; return params; } std::vector generateCombinedParamsV8() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsV7(), generateParamsV7(), generateParamsV7(), @@ -1001,6 +725,8 @@ std::vector generateCombinedParamsV8() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, ReferenceGatherTestV8, - testing::ValuesIn(generateCombinedParamsV8()), ReferenceGatherTestV8::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, + ReferenceGatherTestV8, + testing::ValuesIn(generateCombinedParamsV8()), + ReferenceGatherTestV8::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gather_elements.cpp b/src/plugins/template/tests/functional/op_reference/gather_elements.cpp index e7cddb376cfd87..303f520d924412 100644 --- a/src/plugins/template/tests/functional/op_reference/gather_elements.cpp +++ b/src/plugins/template/tests/functional/op_reference/gather_elements.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/gather_elements.hpp" + #include -#include "openvino/op/gather_elements.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,11 +13,16 @@ using namespace ov; namespace { struct GatherElementsParams { - GatherElementsParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& indicesTensor, int64_t axis, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), indicesTensor(indicesTensor), axis(axis), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + GatherElementsParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& indicesTensor, + int64_t axis, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + indicesTensor(indicesTensor), + axis(axis), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor indicesTensor; @@ -55,18 +61,17 @@ class ReferenceGatherElementsTest : public testing::TestWithParam CreateFunction(const GatherElementsParams& params) { std::shared_ptr function; - const auto data = std::make_shared(params.dataTensor.type, - PartialShape{params.dataTensor.shape}); - const auto indices = std::make_shared(params.indicesTensor.type, - PartialShape{params.indicesTensor.shape}); + const auto data = + std::make_shared(params.dataTensor.type, PartialShape{params.dataTensor.shape}); + const auto indices = + std::make_shared(params.indicesTensor.type, PartialShape{params.indicesTensor.shape}); const auto gatherElement = std::make_shared(data, indices, params.axis); - function = std::make_shared(NodeVector {gatherElement}, ParameterVector {data, indices}); + function = std::make_shared(NodeVector{gatherElement}, ParameterVector{data, indices}); return function; } }; -class ReferenceGatherElementsTestNegative : public ReferenceGatherElementsTest { -}; +class ReferenceGatherElementsTestNegative : public ReferenceGatherElementsTest {}; TEST_P(ReferenceGatherElementsTest, CompareWithRefs) { Exec(); @@ -85,37 +90,32 @@ TEST_P(ReferenceGatherElementsTestNegative, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - GatherElementsParams( - reference_tests::Tensor(IN_ET, {3}, std::vector{1, 2, 3}), - reference_tests::Tensor(element::i32, {7}, std::vector{1, 2, 0, 2, 0, 0, 2}), - 0, - reference_tests::Tensor(IN_ET, {7}, std::vector{2, 3, 1, 3, 1, 1, 3}), - "evaluate_1D_gather_elements_3_indices_int32"), - GatherElementsParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 4, 1, 2}), - "evaluate_2D_gather_elements_2x2_indices_int32_axis_0"), - GatherElementsParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), - 1, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 3}), - "evaluate_2D_gather_elements_2x2_indices_int32_axis_1"), - GatherElementsParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), - -1, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 3}), - "evaluate_2D_gather_elements_2x2_indices_int32_axis_minus_1"), - GatherElementsParams( - reference_tests::Tensor(IN_ET, {3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}), - reference_tests::Tensor(element::i32, {2, 3}, std::vector{1, 2, 0, 2, 0, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 3}, std::vector{4, 8, 3, 7, 2, 3}), - "evaluate_2D_gather_elements_2x3_indices_int32"), + std::vector params{ + GatherElementsParams(reference_tests::Tensor(IN_ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(element::i32, {7}, std::vector{1, 2, 0, 2, 0, 0, 2}), + 0, + reference_tests::Tensor(IN_ET, {7}, std::vector{2, 3, 1, 3, 1, 1, 3}), + "evaluate_1D_gather_elements_3_indices_int32"), + GatherElementsParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 4, 1, 2}), + "evaluate_2D_gather_elements_2x2_indices_int32_axis_0"), + GatherElementsParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), + 1, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 3}), + "evaluate_2D_gather_elements_2x2_indices_int32_axis_1"), + GatherElementsParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), + -1, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 3}), + "evaluate_2D_gather_elements_2x2_indices_int32_axis_minus_1"), + GatherElementsParams(reference_tests::Tensor(IN_ET, {3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}), + reference_tests::Tensor(element::i32, {2, 3}, std::vector{1, 2, 0, 2, 0, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 3}, std::vector{4, 8, 3, 7, 2, 3}), + "evaluate_2D_gather_elements_2x3_indices_int32"), GatherElementsParams( reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), reference_tests::Tensor(element::i32, {3, 2, 2}, std::vector{1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1}), @@ -124,34 +124,31 @@ std::vector generateParams() { "evaluate_3D_gather_elements_3x2x2_indices_int32"), GatherElementsParams( reference_tests::Tensor(IN_ET, {3, 2, 2, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i32, {3, 2, 2, 4}, std::vector{1, 0, 0, 0, 0, 1, 1, 0, - 1, 1, 1, 1, 1, 0, 0, 1, - 0, 0, 0, 1, 1, 1, 1, 0, - 0, 0, 0, 0, 1, 0, 1, 0, - 1, 1, 1, 1, 1, 0, 1, 0, - 1, 0, 0, 1, 0, 0, 0, 0}), + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor( + element::i32, + {3, 2, 2, 4}, + std::vector{1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0}), -1, - reference_tests::Tensor(IN_ET, {3, 2, 2, 4}, std::vector{2, 1, 1, 1, 3, 4, 4, 3, - 6, 6, 6, 6, 8, 7, 7, 8, - 9, 9, 9, 10, 12, 12, 12, 11, - 13, 13, 13, 13, 16, 15, 16, 15, - 18, 18, 18, 18, 20, 19, 20, 19, - 22, 21, 21, 22, 23, 23, 23, 23}), + reference_tests::Tensor(IN_ET, + {3, 2, 2, 4}, + std::vector{2, 1, 1, 1, 3, 4, 4, 3, 6, 6, 6, 6, 8, 7, 7, 8, + 9, 9, 9, 10, 12, 12, 12, 11, 13, 13, 13, 13, 16, 15, 16, 15, + 18, 18, 18, 18, 20, 19, 20, 19, 22, 21, 21, 22, 23, 23, 23, 23}), "evaluate_4D_gather_elements_3x2x2x2_indices_int64"), GatherElementsParams( - reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), reference_tests::Tensor(element::i32, {3, 2, 2}, std::vector{1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1}), -1, reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{2, 1, 3, 4, 6, 6, 8, 7, 9, 9, 12, 12}), "evaluate_3D_gather_elements_3x2x2_indices_int64"), - GatherElementsParams( - reference_tests::Tensor(IN_ET, {3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}), - reference_tests::Tensor(element::i32, {2, 3}, std::vector{1, 2, 0, 2, 0, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 3}, std::vector{4, 8, 3, 7, 2, 3}), - "evaluate_2D_gather_elements_2x3_data_float32"), + GatherElementsParams(reference_tests::Tensor(IN_ET, {3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}), + reference_tests::Tensor(element::i32, {2, 3}, std::vector{1, 2, 0, 2, 0, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 3}, std::vector{4, 8, 3, 7, 2, 3}), + "evaluate_2D_gather_elements_2x3_data_float32"), GatherElementsParams( reference_tests::Tensor(IN_ET, {2, 2, 1}, std::vector{5, 4, 1, 4}), reference_tests::Tensor(element::i32, {4, 2, 1}, std::vector{0, 0, 1, 1, 1, 1, 0, 1}), @@ -164,7 +161,7 @@ std::vector generateParams() { template <> std::vector generateParams() { - std::vector params { + std::vector params{ GatherElementsParams( reference_tests::Tensor(element::boolean, {3, 2}, std::vector{true, false, true, true, false, false}), reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 2}), @@ -176,13 +173,12 @@ std::vector generateParams() { } std::vector generateParamsNegative() { - std::vector params { - GatherElementsParams( - reference_tests::Tensor(element::i32, {3}, std::vector{1, 2, 3}), - reference_tests::Tensor(element::i32, {7}, std::vector{1, 2, 0, 2, 0, 0, 8}), - 0, - reference_tests::Tensor(element::i32, {7}, std::vector{2, 3, 1, 3, 1, 1, 3}), - "evaluate_1D_gather_elements_negative_test"), + std::vector params{ + GatherElementsParams(reference_tests::Tensor(element::i32, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(element::i32, {7}, std::vector{1, 2, 0, 2, 0, 0, 8}), + 0, + reference_tests::Tensor(element::i32, {7}, std::vector{2, 3, 1, 3, 1, 1, 3}), + "evaluate_1D_gather_elements_negative_test"), GatherElementsParams( reference_tests::Tensor(element::i32, {3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}), reference_tests::Tensor(element::i32, {2, 3}, std::vector{1, 3, 0, 2, 0, 0}), @@ -194,7 +190,7 @@ std::vector generateParamsNegative() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -217,9 +213,13 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GatherElements_With_Hardcoded_Refs, ReferenceGatherElementsTest, - testing::ValuesIn(generateCombinedParams()), ReferenceGatherElementsTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GatherElements_With_Hardcoded_Refs, + ReferenceGatherElementsTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceGatherElementsTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_GatherElements_With_Hardcoded_Refs, ReferenceGatherElementsTestNegative, - testing::ValuesIn(generateParamsNegative()), ReferenceGatherElementsTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_GatherElements_With_Hardcoded_Refs, + ReferenceGatherElementsTestNegative, + testing::ValuesIn(generateParamsNegative()), + ReferenceGatherElementsTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gather_nd.cpp b/src/plugins/template/tests/functional/op_reference/gather_nd.cpp index 9ff1507be4f230..bbb7fb07026a2e 100644 --- a/src/plugins/template/tests/functional/op_reference/gather_nd.cpp +++ b/src/plugins/template/tests/functional/op_reference/gather_nd.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/gather_nd.hpp" + #include -#include "openvino/op/gather_nd.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,11 +13,16 @@ using namespace ov; namespace { struct GatherNDParams { - GatherNDParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& indicesTensor, int64_t batchDims, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), indicesTensor(indicesTensor), batchDims(static_cast(batchDims)), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + GatherNDParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& indicesTensor, + int64_t batchDims, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + indicesTensor(indicesTensor), + batchDims(static_cast(batchDims)), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor indicesTensor; @@ -55,17 +61,17 @@ class ReferenceGatherND5Test : public testing::TestWithParam, pu private: static std::shared_ptr CreateFunction(const GatherNDParams& params) { std::shared_ptr function; - const auto data = std::make_shared(params.dataTensor.type, - PartialShape{params.dataTensor.shape}); - const auto indices = std::make_shared(params.indicesTensor.type, - PartialShape{params.indicesTensor.shape}); + const auto data = + std::make_shared(params.dataTensor.type, PartialShape{params.dataTensor.shape}); + const auto indices = + std::make_shared(params.indicesTensor.type, PartialShape{params.indicesTensor.shape}); std::shared_ptr gatherND; if (params.batchDims == 0) { gatherND = std::make_shared(data, indices); } else { gatherND = std::make_shared(data, indices, params.batchDims); } - function = std::make_shared(NodeVector {gatherND}, ParameterVector {data, indices}); + function = std::make_shared(NodeVector{gatherND}, ParameterVector{data, indices}); return function; } }; @@ -77,101 +83,94 @@ TEST_P(ReferenceGatherND5Test, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - GatherNDParams( - reference_tests::Tensor(IN_ET, {3, 3}, std::vector{10, 11, 12, 13, 14, 15, 16, 17, 18}), - reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), - 0, - reference_tests::Tensor(IN_ET, {}, std::vector{15}), - "gather_nd_single_indices"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2}, std::vector{10, 13}), - "gather_nd_scalar_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 10, 11}), - "gather_nd_1d_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 3}, std::vector{0, 0, 1, 1, 0, 1}), - 0, - reference_tests::Tensor(IN_ET, {2}, std::vector{11, 21}), - "gather_nd_scalar_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 20, 21}), - "gather_nd_1d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {1, 1}, std::vector{1}), - 0, - reference_tests::Tensor(IN_ET, {1, 2, 2}, std::vector{20, 21, 22, 23}), - "gather_nd_2d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1, 2}, std::vector{0, 0, 0, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 1}, std::vector{10, 11}), - "gather_nd_batch_scalar_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 1, 2}, std::vector{12, 13, 10, 11}), - "gather_nd_batch_1d_from_2d"), + std::vector params{ + GatherNDParams(reference_tests::Tensor(IN_ET, {3, 3}, std::vector{10, 11, 12, 13, 14, 15, 16, 17, 18}), + reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), + 0, + reference_tests::Tensor(IN_ET, {}, std::vector{15}), + "gather_nd_single_indices"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2}, std::vector{10, 13}), + "gather_nd_scalar_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 10, 11}), + "gather_nd_1d_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 3}, std::vector{0, 0, 1, 1, 0, 1}), + 0, + reference_tests::Tensor(IN_ET, {2}, std::vector{11, 21}), + "gather_nd_scalar_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 20, 21}), + "gather_nd_1d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {1, 1}, std::vector{1}), + 0, + reference_tests::Tensor(IN_ET, {1, 2, 2}, std::vector{20, 21, 22, 23}), + "gather_nd_2d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1, 2}, std::vector{0, 0, 0, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 1}, std::vector{10, 11}), + "gather_nd_batch_scalar_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 1, 2}, std::vector{12, 13, 10, 11}), + "gather_nd_batch_1d_from_2d"), GatherNDParams( reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), reference_tests::Tensor(element::i32, {2, 2, 3}, std::vector{0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0}), 0, reference_tests::Tensor(IN_ET, {2, 2}, std::vector{11, 21, 13, 22}), "gather_nd_batch_scalar_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, 1, 1, 0, 0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), - "gather_nd_batch_1d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, -1, -1, 0, 0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), - "gather_nd_batch_1d_from_3d_negative"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{20, 21, 22, 23, 10, 11, 12, 13}), - "gather_nd_batch_2d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, 1, 1, 0, 0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), + "gather_nd_batch_1d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, -1, -1, 0, 0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), + "gather_nd_batch_1d_from_3d_negative"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{20, 21, 22, 23, 10, 11, 12, 13}), + "gather_nd_batch_2d_from_3d"), GatherNDParams( reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), 1, reference_tests::Tensor(IN_ET, {2, 4}, std::vector{5, 6, 7, 8, 13, 14, 15, 16}), "gather_nd_batch_dims1"), GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 3, 4, 2}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}), - reference_tests::Tensor(element::i32, {2, 3, 3, 2}, std::vector{ - 1, 0, 3, 1, 2, 1, 0, 1, 1, 1, 2, 0, 3, 0, 3, 1, 2, 1, - 2, 0, 1, 1, 3, 1, 1, 1, 2, 0, 2, 0, 0, 0, 3, 1, 3, 1}), + reference_tests::Tensor(IN_ET, + {2, 3, 4, 2}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}), + reference_tests::Tensor(element::i32, + {2, 3, 3, 2}, + std::vector{1, 0, 3, 1, 2, 1, 0, 1, 1, 1, 2, 0, 3, 0, 3, 1, 2, 1, + 2, 0, 1, 1, 3, 1, 1, 1, 2, 0, 2, 0, 0, 0, 3, 1, 3, 1}), 2, - reference_tests::Tensor(IN_ET, {6, 3}, std::vector{ - 3, 8, 6, 10, 12, 13, 23, 24, 22, 29, 28, 32, 36, 37, 37, 41, 48, 48}), + reference_tests::Tensor( + IN_ET, + {6, 3}, + std::vector{3, 8, 6, 10, 12, 13, 23, 24, 22, 29, 28, 32, 36, 37, 37, 41, 48, 48}), "gather_nd_batch_dims2"), GatherNDParams( reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor(element::i32, {2, 3, 1, 1}, std::vector{1, 0, 2, 0, 2, 2}), 2, reference_tests::Tensor(IN_ET, {6, 1}, std::vector{2, 5, 11, 13, 19, 23}), @@ -181,7 +180,7 @@ std::vector generateParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -203,9 +202,10 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GatherND_With_Hardcoded_Refs, ReferenceGatherND5Test, - testing::ValuesIn(generateCombinedParams()), ReferenceGatherND5Test::getTestCaseName); - +INSTANTIATE_TEST_SUITE_P(smoke_GatherND_With_Hardcoded_Refs, + ReferenceGatherND5Test, + testing::ValuesIn(generateCombinedParams()), + ReferenceGatherND5Test::getTestCaseName); class ReferenceGatherND8Test : public testing::TestWithParam, public CommonReferenceTest { public: @@ -237,17 +237,17 @@ class ReferenceGatherND8Test : public testing::TestWithParam, pu private: static std::shared_ptr CreateFunction(const GatherNDParams& params) { std::shared_ptr function; - const auto data = std::make_shared(params.dataTensor.type, - PartialShape{params.dataTensor.shape}); - const auto indices = std::make_shared(params.indicesTensor.type, - PartialShape{params.indicesTensor.shape}); + const auto data = + std::make_shared(params.dataTensor.type, PartialShape{params.dataTensor.shape}); + const auto indices = + std::make_shared(params.indicesTensor.type, PartialShape{params.indicesTensor.shape}); std::shared_ptr gatherND; if (params.batchDims == 0) { gatherND = std::make_shared(data, indices); } else { gatherND = std::make_shared(data, indices, params.batchDims); } - function = std::make_shared(NodeVector {gatherND}, ParameterVector {data, indices}); + function = std::make_shared(NodeVector{gatherND}, ParameterVector{data, indices}); return function; } }; @@ -259,142 +259,139 @@ TEST_P(ReferenceGatherND8Test, CompareWithRefs) { template std::vector generateParams_v8() { using T = typename element_type_traits::value_type; - std::vector params { - GatherNDParams( - reference_tests::Tensor(IN_ET, {3, 3}, std::vector{10, 11, 12, 13, 14, 15, 16, 17, 18}), - reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), - 0, - reference_tests::Tensor(IN_ET, {}, std::vector{15}), - "gather_nd_8_single_indices"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2}, std::vector{10, 13}), - "gather_nd_8_scalar_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 10, 11}), - "gather_nd_8_1d_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 3}, std::vector{0, 0, 1, 1, 0, 1}), - 0, - reference_tests::Tensor(IN_ET, {2}, std::vector{11, 21}), - "gather_nd_8_scalar_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 20, 21}), - "gather_nd_8_1d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {1, 1}, std::vector{1}), - 0, - reference_tests::Tensor(IN_ET, {1, 2, 2}, std::vector{20, 21, 22, 23}), - "gather_nd_8_2d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1, 2}, std::vector{0, 0, 0, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 1}, std::vector{10, 11}), - "gather_nd_8_batch_scalar_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 1, 2}, std::vector{12, 13, 10, 11}), - "gather_nd_8_batch_1d_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2, 3}, std::vector{0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{11, 21, 13, 22}), - "gather_nd_8_batch_scalar_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, 1, 1, 0, 0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), - "gather_nd_8_batch_1d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, -1, -1, 0, 0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), - "gather_nd_8_batch_1d_from_3d_negative"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{20, 21, 22, 23, 10, 11, 12, 13}), - "gather_nd_8_batch_2d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), - 1, - reference_tests::Tensor(IN_ET, {2, 4}, std::vector{5, 6, 7, 8, 13, 14, 15, 16}), - "gather_nd_8_batch_dims1"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 3, 4, 2}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}), - reference_tests::Tensor(element::i32, {2, 3, 3, 2}, std::vector{ - 1, 0, 3, 1, 2, 1, 0, 1, 1, 1, 2, 0, 3, 0, 3, 1, 2, 1, - 2, 0, 1, 1, 3, 1, 1, 1, 2, 0, 2, 0, 0, 0, 3, 1, 3, 1}), - 2, - reference_tests::Tensor(IN_ET, {2, 3, 3}, std::vector{ - 3, 8, 6, 10, 12, 13, 23, 24, 22, 29, 28, 32, 36, 37, 37, 41, 48, 48}), - "gather_8_nd_batch_dims2"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i32, {2, 3, 1, 1}, std::vector{1, 0, 2, 0, 2, 2}), - 2, - reference_tests::Tensor(IN_ET, {2, 3, 1}, std::vector{2, 5, 11, 13, 19, 23}), - "gather_8_nd_batch_dims2_lead_dims"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 3, 4, 5}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120}), - reference_tests::Tensor(element::i32, {2, 3, 2, 1}, std::vector{ - 1, 0, 2, 0, 2, 0, 1, 0, 2, 0, 2, 0}), - 2, - reference_tests::Tensor(IN_ET, {2, 3, 2, 5}, std::vector{ - 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 31, 32, 33, 34, 35, 21, 22, 23, - 24, 25, 51, 52, 53, 54, 55, 41, 42, 43, 44, 45, 66, 67, 68, 69, - 70, 61, 62, 63, 64, 65, 91, 92, 93, 94, 95, 81, 82, 83, 84, 85, - 111, 112, 113, 114, 115, 101, 102, 103, 104, 105}), - "gather_8_nd_batch_dims2_non_scalar_slices"), + std::vector params{ + GatherNDParams(reference_tests::Tensor(IN_ET, {3, 3}, std::vector{10, 11, 12, 13, 14, 15, 16, 17, 18}), + reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), + 0, + reference_tests::Tensor(IN_ET, {}, std::vector{15}), + "gather_nd_8_single_indices"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2}, std::vector{10, 13}), + "gather_nd_8_scalar_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 10, 11}), + "gather_nd_8_1d_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 3}, std::vector{0, 0, 1, 1, 0, 1}), + 0, + reference_tests::Tensor(IN_ET, {2}, std::vector{11, 21}), + "gather_nd_8_scalar_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 20, 21}), + "gather_nd_8_1d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {1, 1}, std::vector{1}), + 0, + reference_tests::Tensor(IN_ET, {1, 2, 2}, std::vector{20, 21, 22, 23}), + "gather_nd_8_2d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1, 2}, std::vector{0, 0, 0, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 1}, std::vector{10, 11}), + "gather_nd_8_batch_scalar_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 1, 2}, std::vector{12, 13, 10, 11}), + "gather_nd_8_batch_1d_from_2d"), + GatherNDParams( + reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2, 3}, std::vector{0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{11, 21, 13, 22}), + "gather_nd_8_batch_scalar_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, 1, 1, 0, 0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), + "gather_nd_8_batch_1d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, -1, -1, 0, 0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), + "gather_nd_8_batch_1d_from_3d_negative"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{20, 21, 22, 23, 10, 11, 12, 13}), + "gather_nd_8_batch_2d_from_3d"), + GatherNDParams( + reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), + 1, + reference_tests::Tensor(IN_ET, {2, 4}, std::vector{5, 6, 7, 8, 13, 14, 15, 16}), + "gather_nd_8_batch_dims1"), + GatherNDParams( + reference_tests::Tensor(IN_ET, + {2, 3, 4, 2}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}), + reference_tests::Tensor(element::i32, + {2, 3, 3, 2}, + std::vector{1, 0, 3, 1, 2, 1, 0, 1, 1, 1, 2, 0, 3, 0, 3, 1, 2, 1, + 2, 0, 1, 1, 3, 1, 1, 1, 2, 0, 2, 0, 0, 0, 3, 1, 3, 1}), + 2, + reference_tests::Tensor( + IN_ET, + {2, 3, 3}, + std::vector{3, 8, 6, 10, 12, 13, 23, 24, 22, 29, 28, 32, 36, 37, 37, 41, 48, 48}), + "gather_8_nd_batch_dims2"), + GatherNDParams( + reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i32, {2, 3, 1, 1}, std::vector{1, 0, 2, 0, 2, 2}), + 2, + reference_tests::Tensor(IN_ET, {2, 3, 1}, std::vector{2, 5, 11, 13, 19, 23}), + "gather_8_nd_batch_dims2_lead_dims"), + GatherNDParams( + reference_tests::Tensor( + IN_ET, + {2, 3, 4, 5}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120}), + reference_tests::Tensor(element::i32, + {2, 3, 2, 1}, + std::vector{1, 0, 2, 0, 2, 0, 1, 0, 2, 0, 2, 0}), + 2, + reference_tests::Tensor( + IN_ET, + {2, 3, 2, 5}, + std::vector{6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 31, 32, 33, 34, 35, + 21, 22, 23, 24, 25, 51, 52, 53, 54, 55, 41, 42, 43, 44, 45, + 66, 67, 68, 69, 70, 61, 62, 63, 64, 65, 91, 92, 93, 94, 95, + 81, 82, 83, 84, 85, 111, 112, 113, 114, 115, 101, 102, 103, 104, 105}), + "gather_8_nd_batch_dims2_non_scalar_slices"), }; return params; } std::vector generateCombinedParams_v8() { - const std::vector> generatedParams { - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), + const std::vector> generatedParams{ + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), }; std::vector combinedParams; @@ -404,6 +401,8 @@ std::vector generateCombinedParams_v8() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GatherND_With_Hardcoded_Refs, ReferenceGatherND8Test, - testing::ValuesIn(generateCombinedParams_v8()), ReferenceGatherND8Test::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_GatherND_With_Hardcoded_Refs, + ReferenceGatherND8Test, + testing::ValuesIn(generateCombinedParams_v8()), + ReferenceGatherND8Test::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gather_tree.cpp b/src/plugins/template/tests/functional/op_reference/gather_tree.cpp index e79917a1826467..696820760e8fea 100644 --- a/src/plugins/template/tests/functional/op_reference/gather_tree.cpp +++ b/src/plugins/template/tests/functional/op_reference/gather_tree.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; @@ -64,7 +64,8 @@ class ReferenceGatherTreeTest : public testing::TestWithParam, const auto max_seq_len = std::make_shared(params.maxSeqLen.type, params.maxSeqLen.shape); const auto end_token = std::make_shared(params.endToken.type, params.endToken.shape); const auto gather_tree = std::make_shared(step_ids, parent_idx, max_seq_len, end_token); - const auto f = std::make_shared(gather_tree, ParameterVector{step_ids, parent_idx, max_seq_len, end_token}); + const auto f = + std::make_shared(gather_tree, ParameterVector{step_ids, parent_idx, max_seq_len, end_token}); return f; } }; @@ -76,84 +77,72 @@ TEST_P(ReferenceGatherTreeTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .stepIds(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) - .parentIdx(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) - .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) - .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) - .finalIdx(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) - .testcaseName("gather_tree_1"), + std::vector params{ + Builder{} + .stepIds(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) + .parentIdx(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) + .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) + .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) + .finalIdx(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) + .testcaseName("gather_tree_1"), - Builder {} - .stepIds(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 2, - 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, - 8, 4, 3, 7, 5, 2, 4, 8, 3, 1, - 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, - 8, 8, 7, 9, 8, 3, 1, 7, 5, 9})) - .parentIdx(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 2, - 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, - 8, 4, 3, 7, 5, 2, 4, 8, 3, 1, - 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, - 8, 8, 7, 9, 8, 3, 1, 7, 5, 9})) - .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) - .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) - .finalIdx(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{ - 4, 4, 9, 9, 4, 9, 2, 9, 9, 9, - 1, 1, 9, 9, 1, 9, 9, 9, 9, 9, - 1, 1, 9, 9, 1, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9})) - .testcaseName("gather_tree_5"), + Builder{} + .stepIds(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, + 2, 4, 4, 7, 4, 9, 5, 8, 4, 3, 7, 5, 2, + 4, 8, 3, 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, + 2, 8, 8, 7, 9, 8, 3, 1, 7, 5, 9})) + .parentIdx(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, + 2, 4, 4, 7, 4, 9, 5, 8, 4, 3, 7, 5, 2, + 4, 8, 3, 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, + 2, 8, 8, 7, 9, 8, 3, 1, 7, 5, 9})) + .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) + .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) + .finalIdx(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{4, 4, 9, 9, 4, 9, 2, 9, 9, 9, 1, 1, 9, + 9, 1, 9, 9, 9, 9, 9, 1, 1, 9, 9, 1, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9})) + .testcaseName("gather_tree_5"), - Builder {} - .stepIds(reference_tests::Tensor(ET, {20, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, - 8, 4, 3, 7, 5, 2, 4, 8, 3, 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, - 8, 8, 7, 9, 8, 3, 1, 7, 5, 8, 8, 9, 8, 1, 8, 1, 3, 2, 1, 8, - 7, 1, 6, 4, 7, 9, 4, 5, 2, 7, 3, 3, 2, 7, 8, 8, 4, 1, 1, 7, - 6, 9, 6, 7, 3, 3, 5, 8, 2, 1, 1, 5, 5, 9, 1, 3, 9, 3, 2, 2, - 5, 1, 1, 7, 9, 2, 9, 3, 3, 5, 6, 1, 6, 6, 6, 2, 9, 6, 3, 7, - 3, 1, 5, 4, 9, 7, 5, 4, 5, 1, 7, 5, 1, 6, 2, 5, 8, 9, 1, 6, - 8, 9, 5, 2, 5, 2, 9, 8, 4, 4, 5, 2, 6, 9, 4, 4, 6, 7, 6, 7, - 2, 8, 7, 6, 6, 7, 4, 4, 7, 3, 4, 9, 7, 4, 8, 9, 1, 6, 5, 6, - 1, 2, 8, 9, 1, 5, 4, 6, 9, 4, 4, 3, 7, 9, 7, 6, 3, 1, 7, 9})) - .parentIdx(reference_tests::Tensor(ET, {20, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, - 8, 4, 3, 7, 5, 2, 4, 8, 3, 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, - 8, 8, 7, 9, 8, 3, 1, 7, 5, 8, 8, 9, 8, 1, 8, 1, 3, 2, 1, 8, - 7, 1, 6, 4, 7, 9, 4, 5, 2, 7, 3, 3, 2, 7, 8, 8, 4, 1, 1, 7, - 6, 9, 6, 7, 3, 3, 5, 8, 2, 1, 1, 5, 5, 9, 1, 3, 9, 3, 2, 2, - 5, 1, 1, 7, 9, 2, 9, 3, 3, 5, 6, 1, 6, 6, 6, 2, 9, 6, 3, 7, - 3, 1, 5, 4, 9, 7, 5, 4, 5, 1, 7, 5, 1, 6, 2, 5, 8, 9, 1, 6, - 8, 9, 5, 2, 5, 2, 9, 8, 4, 4, 5, 2, 6, 9, 4, 4, 6, 7, 6, 7, - 2, 8, 7, 6, 6, 7, 4, 4, 7, 3, 4, 9, 7, 4, 8, 9, 1, 6, 5, 6, - 1, 2, 8, 9, 1, 5, 4, 6, 9, 4, 4, 3, 7, 9, 7, 6, 3, 1, 7, 9})) - .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) - .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) - .finalIdx(reference_tests::Tensor(ET, {20, 1, 10}, std::vector{ - 9, 4, 9, 4, 4, 4, 9, 4, 9, 9, 9, 1, 9, 1, 1, 1, 9, 1, 9, 9, - 9, 1, 9, 1, 1, 1, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9})) - .testcaseName("gather_tree_10"), + Builder{} + .stepIds(reference_tests::Tensor( + ET, + {20, 1, 10}, + std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, 8, 4, 3, 7, 5, 2, 4, 8, 3, + 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, 8, 8, 7, 9, 8, 3, 1, 7, 5, 8, 8, 9, 8, 1, 8, 1, 3, 2, + 1, 8, 7, 1, 6, 4, 7, 9, 4, 5, 2, 7, 3, 3, 2, 7, 8, 8, 4, 1, 1, 7, 6, 9, 6, 7, 3, 3, 5, + 8, 2, 1, 1, 5, 5, 9, 1, 3, 9, 3, 2, 2, 5, 1, 1, 7, 9, 2, 9, 3, 3, 5, 6, 1, 6, 6, 6, 2, + 9, 6, 3, 7, 3, 1, 5, 4, 9, 7, 5, 4, 5, 1, 7, 5, 1, 6, 2, 5, 8, 9, 1, 6, 8, 9, 5, 2, 5, + 2, 9, 8, 4, 4, 5, 2, 6, 9, 4, 4, 6, 7, 6, 7, 2, 8, 7, 6, 6, 7, 4, 4, 7, 3, 4, 9, 7, 4, + 8, 9, 1, 6, 5, 6, 1, 2, 8, 9, 1, 5, 4, 6, 9, 4, 4, 3, 7, 9, 7, 6, 3, 1, 7, 9})) + .parentIdx(reference_tests::Tensor( + ET, + {20, 1, 10}, + std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, 8, 4, 3, 7, 5, 2, 4, 8, 3, + 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, 8, 8, 7, 9, 8, 3, 1, 7, 5, 8, 8, 9, 8, 1, 8, 1, 3, 2, + 1, 8, 7, 1, 6, 4, 7, 9, 4, 5, 2, 7, 3, 3, 2, 7, 8, 8, 4, 1, 1, 7, 6, 9, 6, 7, 3, 3, 5, + 8, 2, 1, 1, 5, 5, 9, 1, 3, 9, 3, 2, 2, 5, 1, 1, 7, 9, 2, 9, 3, 3, 5, 6, 1, 6, 6, 6, 2, + 9, 6, 3, 7, 3, 1, 5, 4, 9, 7, 5, 4, 5, 1, 7, 5, 1, 6, 2, 5, 8, 9, 1, 6, 8, 9, 5, 2, 5, + 2, 9, 8, 4, 4, 5, 2, 6, 9, 4, 4, 6, 7, 6, 7, 2, 8, 7, 6, 6, 7, 4, 4, 7, 3, 4, 9, 7, 4, + 8, 9, 1, 6, 5, 6, 1, 2, 8, 9, 1, 5, 4, 6, 9, 4, 4, 3, 7, 9, 7, 6, 3, 1, 7, 9})) + .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) + .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) + .finalIdx(reference_tests::Tensor( + ET, + {20, 1, 10}, + std::vector{9, 4, 9, 4, 4, 4, 9, 4, 9, 9, 9, 1, 9, 1, 1, 1, 9, 1, 9, 9, 9, 1, 9, 1, 1, 1, 9, 1, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9})) + .testcaseName("gather_tree_10"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), }; @@ -165,6 +154,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GatherTree_With_Hardcoded_Refs, ReferenceGatherTreeTest, - testing::ValuesIn(generateCombinedParams()), ReferenceGatherTreeTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_GatherTree_With_Hardcoded_Refs, + ReferenceGatherTreeTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceGatherTreeTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gelu.cpp b/src/plugins/template/tests/functional/op_reference/gelu.cpp index 49593aa8b9a108..08624796c06658 100644 --- a/src/plugins/template/tests/functional/op_reference/gelu.cpp +++ b/src/plugins/template/tests/functional/op_reference/gelu.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/gelu.hpp" + #include -#include "openvino/op/gelu.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,8 +15,11 @@ using namespace InferenceEngine; namespace { struct GeluParams { template - GeluParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const ov::op::GeluApproximationMode mode) + GeluParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const ov::op::GeluApproximationMode mode) : mode(mode), pshape(shape), inType(iType), @@ -49,11 +53,13 @@ class ReferenceGeluV0LayerTest : public testing::TestWithParam, publ } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const op::GeluApproximationMode mode) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const op::GeluApproximationMode mode) { const auto in = std::make_shared(input_type, input_shape); const auto Gelu = std::make_shared(in); - return std::make_shared(NodeVector {Gelu}, ParameterVector {in}); + return std::make_shared(NodeVector{Gelu}, ParameterVector{in}); } }; @@ -76,11 +82,13 @@ class ReferenceGeluV7LayerTest : public testing::TestWithParam, publ } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const op::GeluApproximationMode mode) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const op::GeluApproximationMode mode) { const auto in = std::make_shared(input_type, input_shape); const auto Gelu = std::make_shared(in, mode); - return std::make_shared(NodeVector {Gelu}, ParameterVector {in}); + return std::make_shared(NodeVector{Gelu}, ParameterVector{in}); } }; @@ -95,18 +103,19 @@ template std::vector generateGeluV0FloatParams() { using T = typename element_type_traits::value_type; - std::vector geluParams { - GeluParams(ov::PartialShape {8}, - IN_ET, - std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, - std::vector{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, - op::GeluApproximationMode::ERF), - GeluParams(ov::PartialShape {3}, - IN_ET, - std::vector{-0.5, 0.1, 0.4}, - std::vector{-0.15426877, 0.05398279, 0.2621686}, - op::GeluApproximationMode::ERF) - }; + std::vector geluParams{ + GeluParams( + ov::PartialShape{8}, + IN_ET, + std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, + std::vector< + T>{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, + op::GeluApproximationMode::ERF), + GeluParams(ov::PartialShape{3}, + IN_ET, + std::vector{-0.5, 0.1, 0.4}, + std::vector{-0.15426877, 0.05398279, 0.2621686}, + op::GeluApproximationMode::ERF)}; return geluParams; } @@ -114,36 +123,37 @@ template std::vector generateGeluV7FloatParams() { using T = typename element_type_traits::value_type; - std::vector geluParams { - GeluParams(ov::PartialShape {8}, - IN_ET, - std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, - std::vector{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, - op::GeluApproximationMode::ERF), - GeluParams(ov::PartialShape {8}, - IN_ET, - std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, - std::vector{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, - op::GeluApproximationMode::TANH), - GeluParams(ov::PartialShape {3}, - IN_ET, - std::vector{-0.5, 0.1, 0.4}, - std::vector{-0.15426877, 0.05398279, 0.2621686}, - op::GeluApproximationMode::ERF), - GeluParams(ov::PartialShape {3}, - IN_ET, - std::vector{-0.5, 0.1, 0.4}, - std::vector{-0.15428599, 0.053982753, 0.262161165}, - op::GeluApproximationMode::TANH) - }; + std::vector geluParams{ + GeluParams( + ov::PartialShape{8}, + IN_ET, + std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, + std::vector< + T>{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, + op::GeluApproximationMode::ERF), + GeluParams( + ov::PartialShape{8}, + IN_ET, + std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, + std::vector< + T>{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, + op::GeluApproximationMode::TANH), + GeluParams(ov::PartialShape{3}, + IN_ET, + std::vector{-0.5, 0.1, 0.4}, + std::vector{-0.15426877, 0.05398279, 0.2621686}, + op::GeluApproximationMode::ERF), + GeluParams(ov::PartialShape{3}, + IN_ET, + std::vector{-0.5, 0.1, 0.4}, + std::vector{-0.15428599, 0.053982753, 0.262161165}, + op::GeluApproximationMode::TANH)}; return geluParams; } std::vector generateGeluV0CombinedParams() { - const std::vector> geluTypeParams { - generateGeluV0FloatParams(), - generateGeluV0FloatParams() - }; + const std::vector> geluTypeParams{generateGeluV0FloatParams(), + generateGeluV0FloatParams()}; std::vector combinedParams; for (const auto& params : geluTypeParams) { @@ -153,10 +163,8 @@ std::vector generateGeluV0CombinedParams() { } std::vector generateGeluV7CombinedParams() { - const std::vector> geluTypeParams { - generateGeluV7FloatParams(), - generateGeluV7FloatParams() - }; + const std::vector> geluTypeParams{generateGeluV7FloatParams(), + generateGeluV7FloatParams()}; std::vector combinedParams; for (const auto& params : geluTypeParams) { @@ -165,10 +173,14 @@ std::vector generateGeluV7CombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Gelu_v2_With_Hardcoded_Refs, ReferenceGeluV0LayerTest, - testing::ValuesIn(generateGeluV0CombinedParams()), ReferenceGeluV0LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Gelu_v2_With_Hardcoded_Refs, + ReferenceGeluV0LayerTest, + testing::ValuesIn(generateGeluV0CombinedParams()), + ReferenceGeluV0LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Gelu_v7_With_Hardcoded_Refs, ReferenceGeluV7LayerTest, - testing::ValuesIn(generateGeluV7CombinedParams()), ReferenceGeluV7LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Gelu_v7_With_Hardcoded_Refs, + ReferenceGeluV7LayerTest, + testing::ValuesIn(generateGeluV7CombinedParams()), + ReferenceGeluV7LayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/generate_proposals.cpp b/src/plugins/template/tests/functional/op_reference/generate_proposals.cpp index 6c51d76b94e5d8..e53b0cc78b55cf 100644 --- a/src/plugins/template/tests/functional/op_reference/generate_proposals.cpp +++ b/src/plugins/template/tests/functional/op_reference/generate_proposals.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/generate_proposals.hpp" + #include -#include "openvino/op/generate_proposals.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -16,13 +17,20 @@ namespace { struct GPParams { template GPParams(const Attrs& attrs, - const size_t batch, const size_t number_of_channels, const size_t height, const size_t width, - const element::Type& iType, const element::Type& roiNumType, - const std::vector& imageSizeInfoValues, const std::vector& anchorsValues, - const std::vector& deltasValues, const std::vector& scoresValues, - const std::vector& refRoisValues, const std::vector& refScoresValues, - const std::vector& refRoiNumValues, - const std::string& testcaseName = "") + const size_t batch, + const size_t number_of_channels, + const size_t height, + const size_t width, + const element::Type& iType, + const element::Type& roiNumType, + const std::vector& imageSizeInfoValues, + const std::vector& anchorsValues, + const std::vector& deltasValues, + const std::vector& scoresValues, + const std::vector& refRoisValues, + const std::vector& refScoresValues, + const std::vector& refRoiNumValues, + const std::string& testcaseName = "") : attrs(attrs), inType(iType), outType(iType), @@ -35,11 +43,11 @@ struct GPParams { refScoresData(CreateTensor(iType, refScoresValues)), refRoiNumData(CreateTensor(roiNumType, refRoiNumValues)), testcaseName(testcaseName) { - imageSizeInfoShape = Shape{batch, 3}; - anchorsShape = Shape{height, width, number_of_channels, 4}; - deltasShape = Shape{batch, number_of_channels * 4, height, width}; - scoresShape = Shape{batch, number_of_channels, height, width}; - } + imageSizeInfoShape = Shape{batch, 3}; + anchorsShape = Shape{height, width, number_of_channels, 4}; + deltasShape = Shape{batch, number_of_channels * 4, height, width}; + scoresShape = Shape{batch, number_of_channels, height, width}; + } Attrs attrs; PartialShape imageSizeInfoShape; @@ -88,13 +96,11 @@ class ReferenceGPLayerTest : public testing::TestWithParam, public Com const auto anchors = std::make_shared(params.inType, params.anchorsShape); const auto deltas = std::make_shared(params.inType, params.deltasShape); const auto scores = std::make_shared(params.inType, params.scoresShape); - const auto GenerateProposal = std::make_shared(im_info, - anchors, - deltas, - scores, - params.attrs); + const auto GenerateProposal = + std::make_shared(im_info, anchors, deltas, scores, params.attrs); GenerateProposal->set_roi_num_type(params.roiNumType); - return std::make_shared(GenerateProposal->outputs(), ParameterVector {im_info, anchors, deltas, scores}); + return std::make_shared(GenerateProposal->outputs(), + ParameterVector{im_info, anchors, deltas, scores}); } }; @@ -115,185 +121,194 @@ std::vector generateGPFloatParams() { attrs.nms_eta = 1.0; attrs.normalized = true; - std::vector generateProposalParams { + std::vector generateProposalParams{ GPParams(attrs, - 1, - 3, // A - 2, // H - 6, // W - IN_ET, - OUT_RT, - std::vector{1.0f, 1.0f, 0.0f}, - std::vector(144, 1.0f), // anchors [H, W, A, 4] - std::vector(144, 1.0f), // deltas [N, A * 4, H, W] - std::vector{5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 8.0f, 1.0f}, // scores [N, A, H, W] - std::vector(24, 1.0f), // ref rois - std::vector{8.0f, 5.0f, 4.0f, 1.0f, 1.0f, 1.0f}, // ref scores - std::vector{6}, // ref roiNum - "eval"), + 1, + 3, // A + 2, // H + 6, // W + IN_ET, + OUT_RT, + std::vector{1.0f, 1.0f, 0.0f}, + std::vector(144, 1.0f), // anchors [H, W, A, 4] + std::vector(144, 1.0f), // deltas [N, A * 4, H, W] + std::vector{5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 8.0f, 1.0f}, // scores [N, A, H, W] + std::vector(24, 1.0f), // ref rois + std::vector{8.0f, 5.0f, 4.0f, 1.0f, 1.0f, 1.0f}, // ref scores + std::vector{6}, // ref roiNum + "eval"), + GPParams( + attrs, + 2, + 3, + 2, + 6, + IN_ET, + OUT_RT, + std::vector{150.0, 150.0, 0.0, 150.0, 150.0, 0.0}, + std::vector{ + 12.0, 68.0, 102.0, 123.0, 46.0, 80.0, 79.0, 128.0, 33.0, 71.0, 127.0, 86.0, 33.0, 56.0, 150.0, + 73.0, 5.0, 41.0, 93.0, 150.0, 74.0, 66.0, 106.0, 115.0, 17.0, 37.0, 87.0, 150.0, 31.0, 27.0, + 150.0, 39.0, 29.0, 23.0, 112.0, 123.0, 41.0, 37.0, 103.0, 150.0, 8.0, 46.0, 98.0, 111.0, 7.0, + 69.0, 114.0, 150.0, 70.0, 21.0, 150.0, 125.0, 54.0, 19.0, 132.0, 68.0, 62.0, 8.0, 150.0, 101.0, + 57.0, 81.0, 150.0, 97.0, 79.0, 29.0, 109.0, 130.0, 12.0, 63.0, 100.0, 150.0, 17.0, 33.0, 113.0, + 150.0, 90.0, 78.0, 150.0, 111.0, 47.0, 68.0, 150.0, 71.0, 66.0, 103.0, 111.0, 150.0, 4.0, 17.0, + 112.0, 94.0, 12.0, 8.0, 119.0, 98.0, 54.0, 56.0, 120.0, 150.0, 56.0, 29.0, 150.0, 31.0, 42.0, + 3.0, 139.0, 92.0, 41.0, 65.0, 150.0, 130.0, 49.0, 13.0, 143.0, 30.0, 40.0, 60.0, 150.0, 150.0, + 23.0, 73.0, 24.0, 115.0, 56.0, 84.0, 107.0, 108.0, 63.0, 8.0, 142.0, 125.0, 78.0, 37.0, 93.0, + 144.0, 40.0, 34.0, 150.0, 46.0, 30.0, 21.0, 150.0, 120.0}, + std::vector{ + 9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, + 1.4206103, 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, + 4.771589, 2.5131326, 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, + 1.0207708, 1.1352817, 1.5785321, 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, + 1.8534478, 1.2593061, 1.7394226, 1.7686696, 1.647999, 1.7611449, 1.3119122, 0.03007332, + 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, 2.0407224, 1.7211134, 1.8565536, + 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, 10.139171, 8.002429, + 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, 11.628928, + 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, + 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, + 1.9828427, 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, + 1.7512476, 1.9363779, 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, + 14.146055, 3.4043705, 15.292292, 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, + 9.427372, 12.384038, 9.583308, 8.427233, 15.293704, 3.288159, 11.64898, 9.350885, + 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, 8.248259, 11.815807, 15.713364, + 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, 1.4412547, 1.4862992, + 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, 0.09934269, + 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712, + 9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, + 1.4206103, 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, + 4.771589, 2.5131326, 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, + 1.0207708, 1.1352817, 1.5785321, 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, + 1.8534478, 1.2593061, 1.7394226, 1.7686696, 1.647999, 1.7611449, 1.3119122, 0.03007332, + 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, 2.0407224, 1.7211134, 1.8565536, + 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, 10.139171, 8.002429, + 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, 11.628928, + 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, + 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, + 1.9828427, 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, + 1.7512476, 1.9363779, 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, + 14.146055, 3.4043705, 15.292292, 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, + 9.427372, 12.384038, 9.583308, 8.427233, 15.293704, 3.288159, 11.64898, 9.350885, + 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, 8.248259, 11.815807, 15.713364, + 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, 1.4412547, 1.4862992, + 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, 0.09934269, + 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712}, + std::vector{ + 0.7719922, 0.35906568, 0.29054508, 0.18124384, 0.5604661, 0.84750974, 0.98948747, 0.009793862, + 0.7184191, 0.5560748, 0.6952493, 0.6732593, 0.3306898, 0.6790913, 0.41128764, 0.34593266, + 0.94296855, 0.7348507, 0.24478768, 0.94024557, 0.05405676, 0.06466125, 0.36244348, 0.07942984, + 0.10619422, 0.09412837, 0.9053611, 0.22870538, 0.9237487, 0.20986171, 0.5067282, 0.29709867, + 0.53138554, 0.189101, 0.4786443, 0.88421875, 0.7719922, 0.35906568, 0.29054508, 0.18124384, + 0.5604661, 0.84750974, 0.98948747, 0.009793862, 0.7184191, 0.5560748, 0.6952493, 0.6732593, + 0.3306898, 0.6790913, 0.41128764, 0.34593266, 0.94296855, 0.7348507, 0.24478768, 0.94024557, + 0.05405676, 0.06466125, 0.36244348, 0.07942984, 0.10619422, 0.09412837, 0.9053611, 0.22870538, + 0.9237487, 0.20986171, 0.5067282, 0.29709867, 0.53138554, 0.189101, 0.4786443, 0.88421875}, + std::vector{149, 149, + 149, 149, + 149, 0, + 149, 149, + 149, 60.87443542480469, + 149, 149, + 149, 61.89498901367188, + 149, 149, + 149, 149, + 149, 149, + 149, 149, + 149, 149, + 149, 149, + 149, 149, + 149, 0, + 149, 149, + 149, 60.87443542480469, + 149, 149, + 149, 61.89498901367188, + 149, 149, + 149, 149, + 149, 149, + 149, 149, + 149, 149}, + std::vector{0.9894874691963196, + 0.9429685473442078, + 0.9402455687522888, + 0.9237486720085144, + 0.9053611159324646, + 0.8842187523841858, + 0.9894874691963196, + 0.9429685473442078, + 0.9402455687522888, + 0.9237486720085144, + 0.9053611159324646, + 0.8842187523841858}, + std::vector{6, 6}, + "batch_2"), GPParams(attrs, - 2, - 3, - 2, - 6, - IN_ET, - OUT_RT, - std::vector{150.0, 150.0, 0.0, 150.0, 150.0, 0.0}, - std::vector{12.0, 68.0, 102.0, 123.0, 46.0, 80.0, 79.0, 128.0, 33.0, 71.0, 127.0, 86.0, 33.0, 56.0, 150.0, 73.0, - 5.0, 41.0, 93.0, 150.0, 74.0, 66.0, 106.0, 115.0, 17.0, 37.0, 87.0, 150.0, 31.0, 27.0, 150.0, 39.0, - 29.0, 23.0, 112.0, 123.0, 41.0, 37.0, 103.0, 150.0, 8.0, 46.0, 98.0, 111.0, 7.0, 69.0, 114.0, 150.0, - 70.0, 21.0, 150.0, 125.0, 54.0, 19.0, 132.0, 68.0, 62.0, 8.0, 150.0, 101.0, 57.0, 81.0, 150.0, 97.0, - 79.0, 29.0, 109.0, 130.0, 12.0, 63.0, 100.0, 150.0, 17.0, 33.0, 113.0, 150.0, 90.0, 78.0, 150.0, 111.0, - 47.0, 68.0, 150.0, 71.0, 66.0, 103.0, 111.0, 150.0, 4.0, 17.0, 112.0, 94.0, 12.0, 8.0, 119.0, 98.0, - 54.0, 56.0, 120.0, 150.0, 56.0, 29.0, 150.0, 31.0, 42.0, 3.0, 139.0, 92.0, 41.0, 65.0, 150.0, 130.0, - 49.0, 13.0, 143.0, 30.0, 40.0, 60.0, 150.0, 150.0, 23.0, 73.0, 24.0, 115.0, 56.0, 84.0, 107.0, 108.0, - 63.0, 8.0, 142.0, 125.0, 78.0, 37.0, 93.0, 144.0, 40.0, 34.0, 150.0, 46.0, 30.0, 21.0, 150.0, 120.0}, - std::vector{9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, 1.4206103, - 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, 4.771589, 2.5131326, - 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, 1.0207708, 1.1352817, 1.5785321, - 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, 1.8534478, 1.2593061, 1.7394226, 1.7686696, - 1.647999, 1.7611449, 1.3119122, 0.03007332, 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, - 2.0407224, 1.7211134, 1.8565536, 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, - 10.139171, 8.002429, 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, - 11.628928, 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, - 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, 1.9828427, - 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, 1.7512476, 1.9363779, - 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, 14.146055, 3.4043705, 15.292292, - 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, 9.427372, 12.384038, 9.583308, 8.427233, - 15.293704, 3.288159, 11.64898, 9.350885, 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, - 8.248259, 11.815807, 15.713364, 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, - 1.4412547, 1.4862992, 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, - 0.09934269, 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712, - 9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, 1.4206103, - 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, 4.771589, 2.5131326, - 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, 1.0207708, 1.1352817, 1.5785321, - 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, 1.8534478, 1.2593061, 1.7394226, 1.7686696, - 1.647999, 1.7611449, 1.3119122, 0.03007332, 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, - 2.0407224, 1.7211134, 1.8565536, 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, - 10.139171, 8.002429, 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, - 11.628928, 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, - 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, 1.9828427, - 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, 1.7512476, 1.9363779, - 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, 14.146055, 3.4043705, 15.292292, - 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, 9.427372, 12.384038, 9.583308, 8.427233, - 15.293704, 3.288159, 11.64898, 9.350885, 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, - 8.248259, 11.815807, 15.713364, 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, - 1.4412547, 1.4862992, 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, - 0.09934269, 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712}, - std::vector{0.7719922, 0.35906568, 0.29054508, 0.18124384, 0.5604661, 0.84750974, 0.98948747, 0.009793862, 0.7184191, - 0.5560748, 0.6952493, 0.6732593, 0.3306898, 0.6790913, 0.41128764, 0.34593266, 0.94296855, 0.7348507, - 0.24478768, 0.94024557, 0.05405676, 0.06466125, 0.36244348, 0.07942984, 0.10619422, 0.09412837, 0.9053611, - 0.22870538, 0.9237487, 0.20986171, 0.5067282, 0.29709867, 0.53138554, 0.189101, 0.4786443, 0.88421875, - 0.7719922, 0.35906568, 0.29054508, 0.18124384, 0.5604661, 0.84750974, 0.98948747, 0.009793862, 0.7184191, - 0.5560748, 0.6952493, 0.6732593, 0.3306898, 0.6790913, 0.41128764, 0.34593266, 0.94296855, 0.7348507, - 0.24478768, 0.94024557, 0.05405676, 0.06466125, 0.36244348, 0.07942984, 0.10619422, 0.09412837, 0.9053611, - 0.22870538, 0.9237487, 0.20986171, 0.5067282, 0.29709867, 0.53138554, 0.189101, 0.4786443, 0.88421875}, - std::vector{149, 149, 149, 149, 149, 0, 149, 149, 149, 60.87443542480469, 149, 149, 149, 61.89498901367188, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 0, 149, 149, 149, 60.87443542480469, - 149, 149, 149, 61.89498901367188, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149}, - std::vector{0.9894874691963196, 0.9429685473442078, - 0.9402455687522888, 0.9237486720085144, - 0.9053611159324646, 0.8842187523841858, - 0.9894874691963196, 0.9429685473442078, - 0.9402455687522888, 0.9237486720085144, - 0.9053611159324646, 0.8842187523841858}, - std::vector{6, 6}, - "batch_2"), - GPParams(attrs, - 1, - 3, // A - 2, // H - 6, // W - IN_ET, - OUT_RT, - std::vector{200.0f, 200.0f, 4.0f}, - std::vector{0.0f, 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, 7.0f, - 8.0f, 9.0f, 10.0f, 11.0f, - 12.0f, 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, 19.0f, - 20.0f, 21.0f, 22.0f, 23.0f, - 24.0f, 25.0f, 26.0f, 27.0f, - 28.0f, 29.0f, 30.0f, 31.0f, - 32.0f, 33.0f, 34.0f, 35.0f, - 36.0f, 37.0f, 38.0f, 39.0f, - 40.0f, 41.0f, 42.0f, 43.0f, - 44.0f, 45.0f, 46.0f, 47.0f, - 48.0f, 49.0f, 50.0f, 51.0f, - 52.0f, 53.0f, 54.0f, 55.0f, - 56.0f, 57.0f, 58.0f, 59.0f, - 60.0f, 61.0f, 62.0f, 63.0f, - 64.0f, 65.0f, 66.0f, 67.0f, - 68.0f, 69.0f, 70.0f, 71.0f, - 72.0f, 73.0f, 74.0f, 75.0f, - 76.0f, 77.0f, 78.0f, 79.0f, - 80.0f, 81.0f, 82.0f, 83.0f, - 84.0f, 85.0f, 86.0f, 87.0f, - 88.0f, 89.0f, 90.0f, 91.0f, - 92.0f, 93.0f, 94.0f, 95.0f, - 96.0f, 97.0f, 98.0f, 99.0f, - 100.0f, 101.0f, 102.0f, 103.0f, - 104.0f, 105.0f, 106.0f, 107.0f, - 108.0f, 109.0f, 110.0f, 111.0f, - 112.0f, 113.0f, 114.0f, 115.0f, - 116.0f, 117.0f, 118.0f, 119.0f, - 120.0f, 121.0f, 122.0f, 123.0f, - 124.0f, 125.0f, 126.0f, 127.0f, - 128.0f, 129.0f, 130.0f, 131.0f, - 132.0f, 133.0f, 134.0f, 135.0f, - 136.0f, 137.0f, 138.0f, 139.0f, - 140.0f, 141.0f, 142.0f, 143.0f}, // anchors H, W, A, 4 - std::vector{0.5337073 ,0.86607957,0.55151343,0.21626699,0.4462629, 0.03985678, - 0.5157072 ,0.9932138 ,0.7565954 ,0.43803605,0.802818 ,0.14834064, - 0.53932905,0.14314 ,0.3817048 ,0.95075196,0.05516243,0.2567484, - 0.25508744,0.77438325,0.43561 ,0.2094628 ,0.8299043 ,0.44982538, - 0.95615596,0.5651084 ,0.11801951,0.05352486,0.9774733 ,0.14439464, - 0.62644225,0.14370479,0.54161614,0.557915 ,0.53102225,0.0840179, - 0.7249888 ,0.9843559 ,0.5490522 ,0.53788143,0.822474 ,0.3278008, - 0.39688024,0.3286012 ,0.5117038 ,0.04743988,0.9408995 ,0.29885054, - 0.81039643,0.85277915,0.06807619,0.86430097,0.36225632,0.16606331, - 0.5401001 ,0.7541649 ,0.11998601,0.5131829 ,0.40606487,0.327888 , - 0.27721855,0.6378373 ,0.22795396,0.4961256 ,0.3215895 ,0.15607187, - 0.14782153,0.8908137 ,0.8835288 ,0.834191 ,0.29907143,0.7983525 , - 0.755875 ,0.30837986,0.0839176 ,0.26624718,0.04371626,0.09472824, - 0.20689541,0.37622106,0.1083321 ,0.1342548 ,0.05815459,0.7676379 , - 0.8105144 ,0.92348766,0.26761323,0.7183306 ,0.8947588 ,0.19020908, - 0.42731014,0.7473663 ,0.85775334,0.9340091 ,0.3278848 ,0.755993 , - 0.05307213,0.39705503,0.21003333,0.5625373 ,0.66188884,0.80521655, - 0.6125863 ,0.44678232,0.97802377,0.0204936 ,0.02686367,0.7390654 , - 0.74631 ,0.58399844,0.5988792 ,0.37413648,0.5946692 ,0.6955776 , - 0.36377597,0.7891322 ,0.40900692,0.99139464,0.50169915,0.41435778, - 0.17142445,0.26761186,0.31591868,0.14249913,0.12919712,0.5418711 , - 0.6523203 ,0.50259084,0.7379765 ,0.01171071,0.94423133,0.00841132, - 0.97486794,0.2921785 ,0.7633071 ,0.88477814,0.03563205,0.50833166, - 0.01354555,0.535081 ,0.41366324,0.0694767 ,0.9944055 ,0.9981207}, // deltas N, A * 4, H, W - std::vector{0.56637216,0.90457034,0.69827306,0.4353543, 0.47985056,0.42658508, - 0.14516132,0.08081771,0.1799732 ,0.9229515 ,0.42420176,0.50857586, - 0.82664067,0.4972319 ,0.3752427 ,0.56731623,0.18241242,0.33252355, - 0.30608943,0.6572437 ,0.69185436,0.88646156,0.36985755,0.5590753 , - 0.5256446 ,0.03342898,0.1344396 ,0.68642473,0.37953874,0.32575172, - 0.21108444,0.5661886 ,0.45378175,0.62126315,0.26799858,0.37272978}, // scores N, A, H, W - std::vector{4.49132, 4.30537, 8.75027, 8.8035, - 0, 1.01395, 4.66909, 5.14337, - 135.501, 137.467, 139.81, 141.726, - 47.2348, 47.8342, 52.5503, 52.3864, - 126.483, 128.3, 131.625, 133.707}, // ref rois - std::vector{0.826641, 0.566372, 0.559075, 0.479851, 0.267999}, // ref scores - std::vector{5}, // ref roiNum - "eval_2") - }; + 1, + 3, // A + 2, // H + 6, // W + IN_ET, + OUT_RT, + std::vector{200.0f, 200.0f, 4.0f}, + std::vector{0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, + 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, + 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, + 33.0f, 34.0f, 35.0f, 36.0f, 37.0f, 38.0f, 39.0f, 40.0f, 41.0f, 42.0f, 43.0f, + 44.0f, 45.0f, 46.0f, 47.0f, 48.0f, 49.0f, 50.0f, 51.0f, 52.0f, 53.0f, 54.0f, + 55.0f, 56.0f, 57.0f, 58.0f, 59.0f, 60.0f, 61.0f, 62.0f, 63.0f, 64.0f, 65.0f, + 66.0f, 67.0f, 68.0f, 69.0f, 70.0f, 71.0f, 72.0f, 73.0f, 74.0f, 75.0f, 76.0f, + 77.0f, 78.0f, 79.0f, 80.0f, 81.0f, 82.0f, 83.0f, 84.0f, 85.0f, 86.0f, 87.0f, + 88.0f, 89.0f, 90.0f, 91.0f, 92.0f, 93.0f, 94.0f, 95.0f, 96.0f, 97.0f, 98.0f, + 99.0f, 100.0f, 101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, + 110.0f, 111.0f, 112.0f, 113.0f, 114.0f, 115.0f, 116.0f, 117.0f, 118.0f, 119.0f, 120.0f, + 121.0f, 122.0f, 123.0f, 124.0f, 125.0f, 126.0f, 127.0f, 128.0f, 129.0f, 130.0f, 131.0f, + 132.0f, 133.0f, 134.0f, 135.0f, 136.0f, 137.0f, 138.0f, 139.0f, 140.0f, 141.0f, 142.0f, + 143.0f}, // anchors H, W, A, 4 + std::vector{0.5337073, 0.86607957, 0.55151343, 0.21626699, 0.4462629, 0.03985678, 0.5157072, + 0.9932138, 0.7565954, 0.43803605, 0.802818, 0.14834064, 0.53932905, 0.14314, + 0.3817048, 0.95075196, 0.05516243, 0.2567484, 0.25508744, 0.77438325, 0.43561, + 0.2094628, 0.8299043, 0.44982538, 0.95615596, 0.5651084, 0.11801951, 0.05352486, + 0.9774733, 0.14439464, 0.62644225, 0.14370479, 0.54161614, 0.557915, 0.53102225, + 0.0840179, 0.7249888, 0.9843559, 0.5490522, 0.53788143, 0.822474, 0.3278008, + 0.39688024, 0.3286012, 0.5117038, 0.04743988, 0.9408995, 0.29885054, 0.81039643, + 0.85277915, 0.06807619, 0.86430097, 0.36225632, 0.16606331, 0.5401001, 0.7541649, + 0.11998601, 0.5131829, 0.40606487, 0.327888, 0.27721855, 0.6378373, 0.22795396, + 0.4961256, 0.3215895, 0.15607187, 0.14782153, 0.8908137, 0.8835288, 0.834191, + 0.29907143, 0.7983525, 0.755875, 0.30837986, 0.0839176, 0.26624718, 0.04371626, + 0.09472824, 0.20689541, 0.37622106, 0.1083321, 0.1342548, 0.05815459, 0.7676379, + 0.8105144, 0.92348766, 0.26761323, 0.7183306, 0.8947588, 0.19020908, 0.42731014, + 0.7473663, 0.85775334, 0.9340091, 0.3278848, 0.755993, 0.05307213, 0.39705503, + 0.21003333, 0.5625373, 0.66188884, 0.80521655, 0.6125863, 0.44678232, 0.97802377, + 0.0204936, 0.02686367, 0.7390654, 0.74631, 0.58399844, 0.5988792, 0.37413648, + 0.5946692, 0.6955776, 0.36377597, 0.7891322, 0.40900692, 0.99139464, 0.50169915, + 0.41435778, 0.17142445, 0.26761186, 0.31591868, 0.14249913, 0.12919712, 0.5418711, + 0.6523203, 0.50259084, 0.7379765, 0.01171071, 0.94423133, 0.00841132, 0.97486794, + 0.2921785, 0.7633071, 0.88477814, 0.03563205, 0.50833166, 0.01354555, 0.535081, + 0.41366324, 0.0694767, 0.9944055, 0.9981207}, // deltas N, A * 4, H, W + std::vector{0.56637216, 0.90457034, 0.69827306, 0.4353543, 0.47985056, 0.42658508, 0.14516132, + 0.08081771, 0.1799732, 0.9229515, 0.42420176, 0.50857586, 0.82664067, 0.4972319, + 0.3752427, 0.56731623, 0.18241242, 0.33252355, 0.30608943, 0.6572437, 0.69185436, + 0.88646156, 0.36985755, 0.5590753, 0.5256446, 0.03342898, 0.1344396, 0.68642473, + 0.37953874, 0.32575172, 0.21108444, 0.5661886, 0.45378175, 0.62126315, 0.26799858, + 0.37272978}, // scores N, A, H, W + std::vector{4.49132, 4.30537, 8.75027, 8.8035, 0, 1.01395, 4.66909, + 5.14337, 135.501, 137.467, 139.81, 141.726, 47.2348, 47.8342, + 52.5503, 52.3864, 126.483, 128.3, 131.625, 133.707}, // ref rois + std::vector{0.826641, 0.566372, 0.559075, 0.479851, 0.267999}, // ref scores + std::vector{5}, // ref roiNum + "eval_2")}; return generateProposalParams; } std::vector generateGPCombinedParams() { - const std::vector> GPTypeParams { + const std::vector> GPTypeParams{ generateGPFloatParams(), generateGPFloatParams(), generateGPFloatParams(), generateGPFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : GPTypeParams) { @@ -302,6 +317,8 @@ std::vector generateGPCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GenerateProposals_With_Hardcoded_Refs, ReferenceGPLayerTest, - testing::ValuesIn(generateGPCombinedParams()), ReferenceGPLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_GenerateProposals_With_Hardcoded_Refs, + ReferenceGPLayerTest, + testing::ValuesIn(generateGPCombinedParams()), + ReferenceGPLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/greater.cpp b/src/plugins/template/tests/functional/op_reference/greater.cpp index 7070005244a899..e74992932193ea 100644 --- a/src/plugins/template/tests/functional/op_reference/greater.cpp +++ b/src/plugins/template/tests/functional/op_reference/greater.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/greater.hpp" + #include -#include "openvino/op/greater.hpp" #include "comparison.hpp" using namespace ov; @@ -19,43 +20,43 @@ TEST_P(ReferenceComparisonLayerTest, GreaterCompareWithHardcodedRefs) { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .input2({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .expected({{2, 2}, element::boolean, std::vector {0, 0, 0, 0}}), - Builder {} + .input1({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .input2({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .expected({{2, 2}, element::boolean, std::vector{0, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{2, 3}, type, std::vector {0, 6, 45, 1, 21, 21}}) - .input2({{2, 3}, type, std::vector {1, 18, 23, 1, 19, 21}}) - .expected({{2, 3}, element::boolean, std::vector {0, 0, 1, 0, 1, 0}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 6, 45, 1, 21, 21}}) + .input2({{2, 3}, type, std::vector{1, 18, 23, 1, 19, 21}}) + .expected({{2, 3}, element::boolean, std::vector{0, 0, 1, 0, 1, 0}}), + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{1}, type, std::vector {53}}) - .input2({{1}, type, std::vector {53}}) - .expected({{1}, element::boolean, std::vector {0}}), - Builder {} + .input1({{1}, type, std::vector{53}}) + .input2({{1}, type, std::vector{53}}) + .expected({{1}, element::boolean, std::vector{0}}), + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 12, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {0, 0, 0, 0, 0, 0, 1, 0}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 12, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{0, 0, 0, 0, 0, 0, 1, 0}}), + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{3, 1, 2}, type, std::vector {2, 1, 4, 1, 3, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{3, 2, 2}, element::boolean, std::vector {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}}), - Builder {} + .input1({{3, 1, 2}, type, std::vector{2, 1, 4, 1, 3, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{3, 2, 2}, element::boolean, std::vector{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}}), + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{2, 1, 2, 1}, type, std::vector {2, 1, 4, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {1, 0, 1, 0}})}; + .input1({{2, 1, 2, 1}, type, std::vector{2, 1, 4, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{1, 0, 1, 0}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i32), @@ -71,8 +72,10 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/greater_equal.cpp b/src/plugins/template/tests/functional/op_reference/greater_equal.cpp index c8f18a3b21c7ce..cbf8781b657b61 100644 --- a/src/plugins/template/tests/functional/op_reference/greater_equal.cpp +++ b/src/plugins/template/tests/functional/op_reference/greater_equal.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/greater_eq.hpp" #include "comparison.hpp" +#include "openvino/op/greater_eq.hpp" using namespace ov; @@ -16,43 +16,43 @@ namespace { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .input2({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .expected({{2, 2}, element::boolean, std::vector {1, 1, 1, 1}}), - Builder {} + .input1({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .input2({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .expected({{2, 2}, element::boolean, std::vector{1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{2, 3}, type, std::vector {0, 6, 45, 1, 21, 21}}) - .input2({{2, 3}, type, std::vector {1, 18, 23, 1, 19, 21}}) - .expected({{2, 3}, element::boolean, std::vector {0, 0, 1, 1, 1, 1}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 6, 45, 1, 21, 21}}) + .input2({{2, 3}, type, std::vector{1, 18, 23, 1, 19, 21}}) + .expected({{2, 3}, element::boolean, std::vector{0, 0, 1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{1}, type, std::vector {53}}) - .input2({{1}, type, std::vector {53}}) - .expected({{1}, element::boolean, std::vector {1}}), - Builder {} + .input1({{1}, type, std::vector{53}}) + .input2({{1}, type, std::vector{53}}) + .expected({{1}, element::boolean, std::vector{1}}), + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 12, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {1, 1, 1, 1, 0, 1, 1, 1}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 12, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{1, 1, 1, 1, 0, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{3, 1, 2}, type, std::vector {2, 1, 4, 1, 3, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{3, 2, 2}, element::boolean, std::vector {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}), - Builder {} + .input1({{3, 1, 2}, type, std::vector{2, 1, 4, 1, 3, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{3, 2, 2}, element::boolean, std::vector{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{2, 1, 2, 1}, type, std::vector {2, 1, 4, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {1, 1, 1, 1}})}; + .input1({{2, 1, 2, 1}, type, std::vector{2, 1, 4, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{1, 1, 1, 1}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i64), @@ -68,8 +68,10 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/grn.cpp b/src/plugins/template/tests/functional/op_reference/grn.cpp index 4322da7cd3c921..c936f4d222aa83 100644 --- a/src/plugins/template/tests/functional/op_reference/grn.cpp +++ b/src/plugins/template/tests/functional/op_reference/grn.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/grn.hpp" + #include -#include "openvino/op/grn.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,9 +14,17 @@ using namespace ov; namespace { struct GrnParams { template - GrnParams(const float bias, const PartialShape& shape, const element::Type& iType, const std::vector& iValues, + GrnParams(const float bias, + const PartialShape& shape, + const element::Type& iType, + const std::vector& iValues, const std::vector& oValues) - : bias(bias), pshape(shape), inType(iType), outType(iType), inputData(CreateTensor(iType, iValues)), refData(CreateTensor(iType, oValues)) {} + : bias(bias), + pshape(shape), + inType(iType), + outType(iType), + inputData(CreateTensor(iType, iValues)), + refData(CreateTensor(iType, oValues)) {} float bias; PartialShape pshape; element::Type inType; @@ -43,10 +52,12 @@ class ReferenceGrnLayerTest : public testing::TestWithParam, public C } private: - static std::shared_ptr CreateFunction(float bias, const PartialShape& input_shape, const element::Type& input_type) { + static std::shared_ptr CreateFunction(float bias, + const PartialShape& input_shape, + const element::Type& input_type) { const auto in = std::make_shared(input_type, input_shape); const auto grn = std::make_shared(in, bias); - return std::make_shared(NodeVector {grn}, ParameterVector {in}); + return std::make_shared(NodeVector{grn}, ParameterVector{in}); } }; @@ -57,50 +68,100 @@ TEST_P(ReferenceGrnLayerTest, CompareWithHardcodedRefs) { template std::vector generateGrnParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector grnParams { + std::vector grnParams{ // bias 1e-6 // 2D // 3D // 4D - GrnParams(1e-6f, PartialShape {3, 4}, type, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, - std::vector {0.182574, 0.365148, 0.547723, 0.730297, 0.379049, 0.454859, 0.530669, 0.606478, 0.426162, 0.473514, 0.520865, 0.568217}), - GrnParams(1e-6f, PartialShape {2, 3, 4}, type, - std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, - std::vector {0.0966737, 0.169031, 0.224231, 0.267261, 0.483368, 0.507093, 0.523205, 0.534522, 0.870063, 0.845154, 0.822179, 0.801784, - 0.433574, 0.441836, 0.449215, 0.455842, 0.566982, 0.568075, 0.569005, 0.569803, 0.700389, 0.694314, 0.688796, 0.683763}), - GrnParams(1e-6f, PartialShape {1, 2, 3, 4}, type, - std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, - std::vector {0.0766965, 0.141421, 0.196116, 0.242536, 0.282166, 0.316228, 0.345705, 0.371391, 0.393919, 0.413803, 0.431455, 0.447214, - 0.997055, 0.989949, 0.980581, 0.970143, 0.959365, 0.948683, 0.938343, 0.928477, 0.919145, 0.910366, 0.902134, 0.894427}), - GrnParams(1e-6f, PartialShape {2, 2, 3, 4}, type, - std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}, - std::vector {0.0766965, 0.141421, 0.196116, 0.242536, 0.282166, 0.316228, 0.345705, 0.371391, 0.393919, 0.413803, 0.431455, 0.447214, - 0.997055, 0.989949, 0.980581, 0.970143, 0.959365, 0.948683, 0.938343, 0.928477, 0.919145, 0.910366, 0.902134, 0.894427, - 0.559857, 0.564684, 0.56921, 0.573462, 0.577465, 0.581238, 0.584802, 0.588172, 0.591364, 0.594391, 0.597266, 0.6, - 0.828589, 0.825307, 0.822192, 0.819232, 0.816416, 0.813733, 0.811176, 0.808736, 0.806405, 0.804176, 0.802043, 0.8}), + GrnParams(1e-6f, + PartialShape{3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, + std::vector{0.182574, + 0.365148, + 0.547723, + 0.730297, + 0.379049, + 0.454859, + 0.530669, + 0.606478, + 0.426162, + 0.473514, + 0.520865, + 0.568217}), + GrnParams(1e-6f, + PartialShape{2, 3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, + std::vector{0.0966737, 0.169031, 0.224231, 0.267261, 0.483368, 0.507093, 0.523205, 0.534522, + 0.870063, 0.845154, 0.822179, 0.801784, 0.433574, 0.441836, 0.449215, 0.455842, + 0.566982, 0.568075, 0.569005, 0.569803, 0.700389, 0.694314, 0.688796, 0.683763}), + GrnParams(1e-6f, + PartialShape{1, 2, 3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, + std::vector{0.0766965, 0.141421, 0.196116, 0.242536, 0.282166, 0.316228, 0.345705, 0.371391, + 0.393919, 0.413803, 0.431455, 0.447214, 0.997055, 0.989949, 0.980581, 0.970143, + 0.959365, 0.948683, 0.938343, 0.928477, 0.919145, 0.910366, 0.902134, 0.894427}), + GrnParams(1e-6f, + PartialShape{2, 2, 3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}, + std::vector{0.0766965, 0.141421, 0.196116, 0.242536, 0.282166, 0.316228, 0.345705, 0.371391, + 0.393919, 0.413803, 0.431455, 0.447214, 0.997055, 0.989949, 0.980581, 0.970143, + 0.959365, 0.948683, 0.938343, 0.928477, 0.919145, 0.910366, 0.902134, 0.894427, + 0.559857, 0.564684, 0.56921, 0.573462, 0.577465, 0.581238, 0.584802, 0.588172, + 0.591364, 0.594391, 0.597266, 0.6, 0.828589, 0.825307, 0.822192, 0.819232, + 0.816416, 0.813733, 0.811176, 0.808736, 0.806405, 0.804176, 0.802043, 0.8}), // bias 100.25 // 2D // 3D // 4D - GrnParams(100.25f, PartialShape {3, 4}, type, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, - std::vector {0.0876216, 0.175243, 0.262865, 0.350486, 0.301923, 0.362308, 0.422693, 0.483077, 0.385076, 0.427863, 0.470649, 0.513435}), - GrnParams(100.25f, PartialShape {2, 3, 4}, type, - std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, - std::vector {0.0694629, 0.129032, 0.179525, 0.222137, 0.347314, 0.387097, 0.418891, 0.444273, 0.625166, 0.645161, 0.658258, 0.66641, - 0.41125, 0.421303, 0.430287, 0.438356, 0.537789, 0.541675, 0.54503, 0.547945, 0.664327, 0.662047, 0.659774, 0.657534}), - GrnParams(100.25f, PartialShape {1, 2, 3, 4}, type, - std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, - std::vector {0.0608299, 0.115422, 0.164091, 0.207321, 0.245662, 0.279675, 0.309889, 0.336786, 0.360795, 0.38229, 0.401596, 0.418994, - 0.790789, 0.807954, 0.820457, 0.829283, 0.835252, 0.839026, 0.841128, 0.841965, 0.841854, 0.841037, 0.839701, 0.837989f}), - GrnParams(100.25f, PartialShape {2, 2, 3, 4}, type, - std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}, - std::vector {0.0608299, 0.115422, 0.164091, 0.207321, 0.245662, 0.279675, 0.309889, 0.336786, 0.360795, 0.38229, 0.401596, 0.418994, - 0.790789, 0.807954, 0.820457, 0.829283, 0.835252, 0.839026, 0.841128, 0.841965, 0.841854, 0.841037, 0.839701, 0.837989, - 0.546293, 0.551788, 0.556938, 0.561772, 0.566319, 0.570601, 0.574641, 0.578458, 0.582069, 0.585489, 0.588734, 0.591816, - 0.808514, 0.80646, 0.804466, 0.802532, 0.800658, 0.798842, 0.797083, 0.795379, 0.79373, 0.792133, 0.790586, 0.789088})}; + GrnParams(100.25f, + PartialShape{3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, + std::vector{0.0876216, + 0.175243, + 0.262865, + 0.350486, + 0.301923, + 0.362308, + 0.422693, + 0.483077, + 0.385076, + 0.427863, + 0.470649, + 0.513435}), + GrnParams(100.25f, + PartialShape{2, 3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, + std::vector{0.0694629, 0.129032, 0.179525, 0.222137, 0.347314, 0.387097, 0.418891, 0.444273, + 0.625166, 0.645161, 0.658258, 0.66641, 0.41125, 0.421303, 0.430287, 0.438356, + 0.537789, 0.541675, 0.54503, 0.547945, 0.664327, 0.662047, 0.659774, 0.657534}), + GrnParams(100.25f, + PartialShape{1, 2, 3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, + std::vector{0.0608299, 0.115422, 0.164091, 0.207321, 0.245662, 0.279675, 0.309889, 0.336786, + 0.360795, 0.38229, 0.401596, 0.418994, 0.790789, 0.807954, 0.820457, 0.829283, + 0.835252, 0.839026, 0.841128, 0.841965, 0.841854, 0.841037, 0.839701, 0.837989f}), + GrnParams(100.25f, + PartialShape{2, 2, 3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}, + std::vector{0.0608299, 0.115422, 0.164091, 0.207321, 0.245662, 0.279675, 0.309889, 0.336786, + 0.360795, 0.38229, 0.401596, 0.418994, 0.790789, 0.807954, 0.820457, 0.829283, + 0.835252, 0.839026, 0.841128, 0.841965, 0.841854, 0.841037, 0.839701, 0.837989, + 0.546293, 0.551788, 0.556938, 0.561772, 0.566319, 0.570601, 0.574641, 0.578458, + 0.582069, 0.585489, 0.588734, 0.591816, 0.808514, 0.80646, 0.804466, 0.802532, + 0.800658, 0.798842, 0.797083, 0.795379, 0.79373, 0.792133, 0.790586, 0.789088})}; return grnParams; } std::vector generateGrnCombinedParams() { - const std::vector> grnTypeParams {generateGrnParams(element::bf16), - generateGrnParams(element::f16), - generateGrnParams(element::f32)}; + const std::vector> grnTypeParams{generateGrnParams(element::bf16), + generateGrnParams(element::f16), + generateGrnParams(element::f32)}; std::vector combinedParams; std::for_each(grnTypeParams.begin(), grnTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); @@ -108,6 +169,8 @@ std::vector generateGrnCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GRN_With_Hardcoded_Refs, ReferenceGrnLayerTest, ::testing::ValuesIn(generateGrnCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_GRN_With_Hardcoded_Refs, + ReferenceGrnLayerTest, + ::testing::ValuesIn(generateGrnCombinedParams()), ReferenceGrnLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/group_convolution.cpp b/src/plugins/template/tests/functional/op_reference/group_convolution.cpp index b49258f8e5a4a5..45c50624338307 100644 --- a/src/plugins/template/tests/functional/op_reference/group_convolution.cpp +++ b/src/plugins/template/tests/functional/op_reference/group_convolution.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/group_conv.hpp" #include "base_reference_test.hpp" +#include "openvino/op/group_conv.hpp" using namespace reference_tests; using namespace ov; @@ -13,10 +13,17 @@ using namespace ov; namespace { struct GroupConvolutionParams { template - GroupConvolutionParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations) + GroupConvolutionParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -46,7 +53,8 @@ struct GroupConvolutionParams { ov::Strides dialations; }; -class ReferenceGroupConvolutionLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceGroupConvolutionLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -76,13 +84,13 @@ class ReferenceGroupConvolutionLayerTest : public testing::TestWithParam(params.inType, params.inputShape); const auto filter = std::make_shared(params.inType, params.filterShape); const auto GroupConvolution = std::make_shared(in, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad); - return std::make_shared(NodeVector {GroupConvolution}, ParameterVector {in, filter}); + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad); + return std::make_shared(NodeVector{GroupConvolution}, ParameterVector{in, filter}); } }; @@ -94,74 +102,77 @@ template std::vector generateGroupConvolutionParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionParams { -// --------------------- 1D GroupConvolution ------------------------------------------ - GroupConvolutionParams(PartialShape {1, 1, 6}, - PartialShape {1, 1, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{1, 3, 3, 0, 1, 2}, - std::vector{2, 0, 1}, - std::vector{5, 6, 7, 2}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionParams(PartialShape {1, 2, 6}, - PartialShape {2, 1, 1, 3}, - PartialShape {1, 2, 4}, - IN_ET, - std::vector{1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{10, 3, 6, 6, - 6, 9, 10, 2}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionParams(PartialShape {1, 2, 6}, - PartialShape {2, 2, 1, 3}, - PartialShape {1, 4, 4}, - IN_ET, - std::vector{1, 3, 3, 0, 1, 2, - -1, -3, -3, 0, 1, 2}, - std::vector{1, 0, 3, - 3, 0, 1, - -3, 0, 1, - 3, 2, -1}, - std::vector{ - 10, 3, 6, 6, - 6, 9, 10, 2, - 0, 9, 10, 2, - -6, -15, -10, 0}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionParams(PartialShape {2, 2, 6}, - PartialShape {2, 1, 1, 3}, - PartialShape {2, 2, 4}, - IN_ET, - std::vector{ - // -- batch 1 -- - 1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2, - // -- batch 2 -- - 1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{ - 10, 3, 6, 6, - 6, 9, 10, 2, - 10, 3, 6, 6, - 6, 9, 10, 2}, - {1}, - {0}, - {0}, - {1}), + std::vector groupConvolutionParams{ + // --------------------- 1D GroupConvolution ------------------------------------------ + GroupConvolutionParams(PartialShape{1, 1, 6}, + PartialShape{1, 1, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2}, + std::vector{2, 0, 1}, + std::vector{5, 6, 7, 2}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionParams(PartialShape{1, 2, 6}, + PartialShape{2, 1, 1, 3}, + PartialShape{1, 2, 4}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, 1, 3, 3, 0, 1, 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{10, 3, 6, 6, 6, 9, 10, 2}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionParams(PartialShape{1, 2, 6}, + PartialShape{2, 2, 1, 3}, + PartialShape{1, 4, 4}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, -1, -3, -3, 0, 1, 2}, + std::vector{1, 0, 3, 3, 0, 1, -3, 0, 1, 3, 2, -1}, + std::vector{10, 3, 6, 6, 6, 9, 10, 2, 0, 9, 10, 2, -6, -15, -10, 0}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionParams(PartialShape{2, 2, 6}, + PartialShape{2, 1, 1, 3}, + PartialShape{2, 2, 4}, + IN_ET, + std::vector{// -- batch 1 -- + 1, + 3, + 3, + 0, + 1, + 2, + 1, + 3, + 3, + 0, + 1, + 2, + // -- batch 2 -- + 1, + 3, + 3, + 0, + 1, + 2, + 1, + 3, + 3, + 0, + 1, + 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{10, 3, 6, 6, 6, 9, 10, 2, 10, 3, 6, 6, 6, 9, 10, 2}, + {1}, + {0}, + {0}, + {1}), }; return groupConvolutionParams; } @@ -170,61 +181,72 @@ template std::vector generateGroupConvolutionUintParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionParams { -// --------------------- 1D GroupConvolution ------------------------------------------ - GroupConvolutionParams(PartialShape {1, 1, 6}, - PartialShape {1, 1, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{1, 3, 3, 0, 1, 2}, - std::vector{2, 0, 1}, - std::vector{5, 6, 7, 2}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionParams(PartialShape {1, 2, 6}, - PartialShape {2, 1, 1, 3}, - PartialShape {1, 2, 4}, - IN_ET, - std::vector{1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{10, 3, 6, 6, - 6, 9, 10, 2}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionParams(PartialShape {2, 2, 6}, - PartialShape {2, 1, 1, 3}, - PartialShape {2, 2, 4}, - IN_ET, - std::vector{ - // -- batch 1 -- - 1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2, - // -- batch 2 -- - 1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{ - 10, 3, 6, 6, - 6, 9, 10, 2, - 10, 3, 6, 6, - 6, 9, 10, 2}, - {1}, - {0}, - {0}, - {1}), + std::vector groupConvolutionParams{ + // --------------------- 1D GroupConvolution ------------------------------------------ + GroupConvolutionParams(PartialShape{1, 1, 6}, + PartialShape{1, 1, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2}, + std::vector{2, 0, 1}, + std::vector{5, 6, 7, 2}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionParams(PartialShape{1, 2, 6}, + PartialShape{2, 1, 1, 3}, + PartialShape{1, 2, 4}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, 1, 3, 3, 0, 1, 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{10, 3, 6, 6, 6, 9, 10, 2}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionParams(PartialShape{2, 2, 6}, + PartialShape{2, 1, 1, 3}, + PartialShape{2, 2, 4}, + IN_ET, + std::vector{// -- batch 1 -- + 1, + 3, + 3, + 0, + 1, + 2, + 1, + 3, + 3, + 0, + 1, + 2, + // -- batch 2 -- + 1, + 3, + 3, + 0, + 1, + 2, + 1, + 3, + 3, + 0, + 1, + 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{10, 3, 6, 6, 6, 9, 10, 2, 10, 3, 6, 6, 6, 9, 10, 2}, + {1}, + {0}, + {0}, + {1}), }; return groupConvolutionParams; } std::vector generateGroupConvolutionCombinedParams() { - const std::vector> groupConvolutionTypeParams { + const std::vector> groupConvolutionTypeParams{ generateGroupConvolutionParams(), generateGroupConvolutionParams(), generateGroupConvolutionParams(), @@ -236,8 +258,7 @@ std::vector generateGroupConvolutionCombinedParams() { generateGroupConvolutionUintParams(), generateGroupConvolutionUintParams(), generateGroupConvolutionUintParams(), - generateGroupConvolutionUintParams() - }; + generateGroupConvolutionUintParams()}; std::vector combinedParams; for (const auto& params : groupConvolutionTypeParams) { @@ -246,7 +267,9 @@ std::vector generateGroupConvolutionCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolution_With_Hardcoded_Refs, ReferenceGroupConvolutionLayerTest, - testing::ValuesIn(generateGroupConvolutionCombinedParams()), ReferenceGroupConvolutionLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolution_With_Hardcoded_Refs, + ReferenceGroupConvolutionLayerTest, + testing::ValuesIn(generateGroupConvolutionCombinedParams()), + ReferenceGroupConvolutionLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/group_convolution_backprop.cpp b/src/plugins/template/tests/functional/op_reference/group_convolution_backprop.cpp index 5570c06369030f..6cc21eb9cb4f04 100644 --- a/src/plugins/template/tests/functional/op_reference/group_convolution_backprop.cpp +++ b/src/plugins/template/tests/functional/op_reference/group_convolution_backprop.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/group_conv.hpp" #include "base_reference_test.hpp" +#include "openvino/op/group_conv.hpp" #include "openvino/opsets/opset8.hpp" using namespace reference_tests; @@ -14,11 +14,18 @@ using namespace ov; namespace { struct GroupConvolutionBackpropDataParams { template - GroupConvolutionBackpropDataParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations, - const CoordinateDiff& outPadding = {}) + GroupConvolutionBackpropDataParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations, + const CoordinateDiff& outPadding = {}) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -52,11 +59,17 @@ struct GroupConvolutionBackpropDataParams { struct GroupConvolutionBackpropDataOutShapeParams { template - GroupConvolutionBackpropDataOutShapeParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const Strides& dialations, - const Shape& constantOutputShape, const std::vector& constantOutputShapeData) + GroupConvolutionBackpropDataOutShapeParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const Strides& dialations, + const Shape& constantOutputShape, + const std::vector& constantOutputShapeData) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -86,7 +99,9 @@ struct GroupConvolutionBackpropDataOutShapeParams { std::vector constantOutputShapeData; }; -class ReferenceGroupConvolutionBackpropDataLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceGroupConvolutionBackpropDataLayerTest + : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -118,30 +133,33 @@ class ReferenceGroupConvolutionBackpropDataLayerTest : public testing::TestWithP const auto in = std::make_shared(params.inType, params.inputShape); const auto filter = std::make_shared(params.inType, params.filterShape); if (params.outPadding.size() != 0) { - const auto GroupConvolutionBackpropData = std::make_shared(in, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad, - params.outPadding); - return std::make_shared(NodeVector {GroupConvolutionBackpropData}, ParameterVector {in, filter}); + const auto GroupConvolutionBackpropData = + std::make_shared(in, + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad, + params.outPadding); + return std::make_shared(NodeVector{GroupConvolutionBackpropData}, ParameterVector{in, filter}); } else { - const auto GroupConvolutionBackpropData = std::make_shared(in, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad); - return std::make_shared(NodeVector {GroupConvolutionBackpropData}, ParameterVector {in, filter}); + const auto GroupConvolutionBackpropData = + std::make_shared(in, + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad); + return std::make_shared(NodeVector{GroupConvolutionBackpropData}, ParameterVector{in, filter}); } } }; class ReferenceGroupConvolutionBackpropDataLayerOutShapeTest - : public testing::TestWithParam, public CommonReferenceTest { + : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -169,14 +187,17 @@ class ReferenceGroupConvolutionBackpropDataLayerOutShapeTest const auto in = std::make_shared(params.inType, params.inputShape); const auto filter = std::make_shared(params.inType, params.filterShape); - auto output_shape = std::make_shared(element::i64, params.constantOutputShape, params.constantOutputShapeData); - const auto GroupConvolutionBackpropData = std::make_shared(in, - filter, - output_shape, - params.strides, - params.dialations, - auto_pad); - return std::make_shared(NodeVector {GroupConvolutionBackpropData}, ParameterVector {in, filter}); + auto output_shape = std::make_shared(element::i64, + params.constantOutputShape, + params.constantOutputShapeData); + const auto GroupConvolutionBackpropData = + std::make_shared(in, + filter, + output_shape, + params.strides, + params.dialations, + auto_pad); + return std::make_shared(NodeVector{GroupConvolutionBackpropData}, ParameterVector{in, filter}); } }; @@ -192,104 +213,104 @@ template std::vector generateGroupConvolutionBackpropDataFloatParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionBackpropDataParams { -// --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ - GroupConvolutionBackpropDataParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 1, 3}, - PartialShape {1, 1, 6}, - IN_ET, - std::vector{1, 3, 3, 0}, - std::vector{2, 0, 1}, - std::vector{2, 6, 7, 3, 3, 0}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {1, 2, 6}, - IN_ET, - std::vector{1, 3, 3, 0, - 1, 2, 1, 3}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 6, 9, 9, 0, - 3, 6, 4, 11, 1, 3}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 4, 4}, - PartialShape {2, 2, 1, 3}, - PartialShape {1, 2, 6}, - IN_ET, - std::vector{1, 3, 3, 0, - 1, 2, -1, -3, - -3, 0, 1, 2, - 0, -2, 3, -1}, - std::vector{1, 0, 3, - 3, 0, 1, - -3, 0, 1, - 3, 2, -1}, - std::vector{4, 9, 4, 2, 8, -3, - 9, -6, -1, -1, -4, 3}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {2, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {2, 2, 6}, - IN_ET, - std::vector{// -- batch 1 -- - 1, 3, 0, 1, - 1, 3, 0, 2, - // -- batch 2 -- - 1, 3, 0, 1, - 1, 3, 0, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2, - 1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 1, 3, 3}, - PartialShape {1, 1, 6, 6}, - IN_ET, - std::vector{0.16857791f, - -0.15161794f, - 0.08540368f, - 0.1820628f, - -0.21746576f, - 0.08245695f, - 0.1431433f, - -0.43156421f, - 0.30591947f}, - std::vector{-0.06230065f, - 0.37932432f, - -0.25388849f, - 0.33878803f, - 0.43709868f, - -0.22477469f, - 0.04118127f, - -0.44696793f, - 0.06373066f}, - std::vector{0.07368518f, -0.08925839f, -0.06627201f, 0.06301362f, 0.03732984f, -0.01919658f, - -0.00628807f, -0.02817563f, -0.01472169f, 0.04392925f, -0.00689478f, -0.01549204f, - 0.07957941f, -0.11459791f, -0.09505399f, 0.07681622f, 0.03604182f, -0.01853423f, - -0.0270785f, -0.00680824f, -0.06650258f, 0.08004665f, 0.07918708f, -0.0724144f, - 0.06256775f, -0.17838378f, -0.18863615f, 0.20064656f, 0.133717f, -0.06876295f, - -0.06398046f, -0.00864975f, 0.19289537f, -0.01490572f, -0.13673618f, 0.01949645f}, - {2, 2}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), + std::vector groupConvolutionBackpropDataParams{ + // --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ + GroupConvolutionBackpropDataParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 1, 3}, + PartialShape{1, 1, 6}, + IN_ET, + std::vector{1, 3, 3, 0}, + std::vector{2, 0, 1}, + std::vector{2, 6, 7, 3, 3, 0}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams(PartialShape{1, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{1, 2, 6}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, 1, 3}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 6, 9, 9, 0, 3, 6, 4, 11, 1, 3}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams(PartialShape{1, 4, 4}, + PartialShape{2, 2, 1, 3}, + PartialShape{1, 2, 6}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, -1, -3, -3, 0, 1, 2, 0, -2, 3, -1}, + std::vector{1, 0, 3, 3, 0, 1, -3, 0, 1, 3, 2, -1}, + std::vector{4, 9, 4, 2, 8, -3, 9, -6, -1, -1, -4, 3}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams( + PartialShape{2, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{2, 2, 6}, + IN_ET, + std::vector{// -- batch 1 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2, + // -- batch 2 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2, 1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 1, 3, 3}, + PartialShape{1, 1, 6, 6}, + IN_ET, + std::vector{0.16857791f, + -0.15161794f, + 0.08540368f, + 0.1820628f, + -0.21746576f, + 0.08245695f, + 0.1431433f, + -0.43156421f, + 0.30591947f}, + std::vector{-0.06230065f, + 0.37932432f, + -0.25388849f, + 0.33878803f, + 0.43709868f, + -0.22477469f, + 0.04118127f, + -0.44696793f, + 0.06373066f}, + std::vector{0.07368518f, -0.08925839f, -0.06627201f, 0.06301362f, 0.03732984f, -0.01919658f, + -0.00628807f, -0.02817563f, -0.01472169f, 0.04392925f, -0.00689478f, -0.01549204f, + 0.07957941f, -0.11459791f, -0.09505399f, 0.07681622f, 0.03604182f, -0.01853423f, + -0.0270785f, -0.00680824f, -0.06650258f, 0.08004665f, 0.07918708f, -0.0724144f, + 0.06256775f, -0.17838378f, -0.18863615f, 0.20064656f, 0.133717f, -0.06876295f, + -0.06398046f, -0.00864975f, 0.19289537f, -0.01490572f, -0.13673618f, 0.01949645f}, + {2, 2}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), }; return groupConvolutionBackpropDataParams; } @@ -298,71 +319,70 @@ template std::vector generateGroupConvolutionBackpropDataIntParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionBackpropDataParams { -// --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ - GroupConvolutionBackpropDataParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 1, 3}, - PartialShape {1, 1, 6}, - IN_ET, - std::vector{1, 3, 3, 0}, - std::vector{2, 0, 1}, - std::vector{2, 6, 7, 3, 3, 0}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {1, 2, 6}, - IN_ET, - std::vector{1, 3, 3, 0, - 1, 2, 1, 3}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 6, 9, 9, 0, - 3, 6, 4, 11, 1, 3}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 4, 4}, - PartialShape {2, 2, 1, 3}, - PartialShape {1, 2, 6}, - IN_ET, - std::vector{1, 3, 3, 0, - 1, 2, -1, -3, - -3, 0, 1, 2, - 0, -2, 3, -1}, - std::vector{1, 0, 3, - 3, 0, 1, - -3, 0, 1, - 3, 2, -1}, - std::vector{4, 9, 4, 2, 8, -3, - 9, -6, -1, -1, -4, 3}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {2, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {2, 2, 6}, - IN_ET, - std::vector{// -- batch 1 -- - 1, 3, 0, 1, - 1, 3, 0, 2, - // -- batch 2 -- - 1, 3, 0, 1, - 1, 3, 0, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2, - 1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2}, - {1}, - {0}, - {0}, - {1}), + std::vector groupConvolutionBackpropDataParams{ + // --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ + GroupConvolutionBackpropDataParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 1, 3}, + PartialShape{1, 1, 6}, + IN_ET, + std::vector{1, 3, 3, 0}, + std::vector{2, 0, 1}, + std::vector{2, 6, 7, 3, 3, 0}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams(PartialShape{1, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{1, 2, 6}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, 1, 3}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 6, 9, 9, 0, 3, 6, 4, 11, 1, 3}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams(PartialShape{1, 4, 4}, + PartialShape{2, 2, 1, 3}, + PartialShape{1, 2, 6}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, -1, -3, -3, 0, 1, 2, 0, -2, 3, -1}, + std::vector{1, 0, 3, 3, 0, 1, -3, 0, 1, 3, 2, -1}, + std::vector{4, 9, 4, 2, 8, -3, 9, -6, -1, -1, -4, 3}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams( + PartialShape{2, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{2, 2, 6}, + IN_ET, + std::vector{// -- batch 1 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2, + // -- batch 2 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2, 1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2}, + {1}, + {0}, + {0}, + {1}), }; return groupConvolutionBackpropDataParams; } @@ -371,59 +391,65 @@ template std::vector generateGroupConvolutionBackpropDataUintParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionBackpropDataParams { -// --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ - GroupConvolutionBackpropDataParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 1, 3}, - PartialShape {1, 1, 6}, - IN_ET, - std::vector{1, 3, 3, 0}, - std::vector{2, 0, 1}, - std::vector{2, 6, 7, 3, 3, 0}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {1, 2, 6}, - IN_ET, - std::vector{1, 3, 3, 0, - 1, 2, 1, 3}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 6, 9, 9, 0, - 3, 6, 4, 11, 1, 3}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {2, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {2, 2, 6}, - IN_ET, - std::vector{// -- batch 1 -- - 1, 3, 0, 1, - 1, 3, 0, 2, - // -- batch 2 -- - 1, 3, 0, 1, - 1, 3, 0, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2, - 1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2}, - {1}, - {0}, - {0}, - {1}), + std::vector groupConvolutionBackpropDataParams{ + // --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ + GroupConvolutionBackpropDataParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 1, 3}, + PartialShape{1, 1, 6}, + IN_ET, + std::vector{1, 3, 3, 0}, + std::vector{2, 0, 1}, + std::vector{2, 6, 7, 3, 3, 0}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams(PartialShape{1, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{1, 2, 6}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, 1, 3}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 6, 9, 9, 0, 3, 6, 4, 11, 1, 3}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams( + PartialShape{2, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{2, 2, 6}, + IN_ET, + std::vector{// -- batch 1 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2, + // -- batch 2 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2, 1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2}, + {1}, + {0}, + {0}, + {1}), }; return groupConvolutionBackpropDataParams; } std::vector generateGroupConvolutionBackpropDataCombinedParams() { - const std::vector> groupConvolutionBackpropDataTypeParams { + const std::vector> groupConvolutionBackpropDataTypeParams{ generateGroupConvolutionBackpropDataFloatParams(), generateGroupConvolutionBackpropDataFloatParams(), generateGroupConvolutionBackpropDataFloatParams(), @@ -435,8 +461,7 @@ std::vector generateGroupConvolutionBackprop generateGroupConvolutionBackpropDataUintParams(), generateGroupConvolutionBackpropDataUintParams(), generateGroupConvolutionBackpropDataUintParams(), - generateGroupConvolutionBackpropDataUintParams() - }; + generateGroupConvolutionBackpropDataUintParams()}; std::vector combinedParams; for (const auto& params : groupConvolutionBackpropDataTypeParams) { @@ -449,38 +474,38 @@ template std::vector generateGroupConvolutionBackpropDataOutShapeParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionBackpropDataOutShapeParams { -// --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ - GroupConvolutionBackpropDataOutShapeParams(PartialShape {1, 1, 1, 10}, - PartialShape {1, 1, 1, 1, 5}, - PartialShape {1, 1, 1, 14}, - IN_ET, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, - std::vector{1, 2, 3, 2, 1}, - std::vector{0, 1, 4, 10, 18, 27, 36, 45, 54, 63, 62, 50, 26, 9}, - {1, 1}, - {1, 1}, - {2}, - {1, 14}), + std::vector groupConvolutionBackpropDataOutShapeParams{ + // --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ + GroupConvolutionBackpropDataOutShapeParams(PartialShape{1, 1, 1, 10}, + PartialShape{1, 1, 1, 1, 5}, + PartialShape{1, 1, 1, 14}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, + std::vector{1, 2, 3, 2, 1}, + std::vector{0, 1, 4, 10, 18, 27, 36, 45, 54, 63, 62, 50, 26, 9}, + {1, 1}, + {1, 1}, + {2}, + {1, 14}), }; return groupConvolutionBackpropDataOutShapeParams; } std::vector generateGroupConvolutionBackpropDataOutShapeCombinedParams() { - const std::vector> groupConvolutionBackpropDataOutShapeTypeParams { - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams() - }; + const std::vector> + groupConvolutionBackpropDataOutShapeTypeParams{ + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams()}; std::vector combinedParams; for (const auto& params : groupConvolutionBackpropDataOutShapeTypeParams) { @@ -489,10 +514,14 @@ std::vector generateGroupConvolution return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolutionBackpropData_With_Hardcoded_Refs, ReferenceGroupConvolutionBackpropDataLayerTest, - testing::ValuesIn(generateGroupConvolutionBackpropDataCombinedParams()), ReferenceGroupConvolutionBackpropDataLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolutionBackpropData_With_Hardcoded_Refs, + ReferenceGroupConvolutionBackpropDataLayerTest, + testing::ValuesIn(generateGroupConvolutionBackpropDataCombinedParams()), + ReferenceGroupConvolutionBackpropDataLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolutionBackpropDataOutShape_With_Hardcoded_Refs, ReferenceGroupConvolutionBackpropDataLayerOutShapeTest, - testing::ValuesIn(generateGroupConvolutionBackpropDataOutShapeCombinedParams()), ReferenceGroupConvolutionBackpropDataLayerOutShapeTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolutionBackpropDataOutShape_With_Hardcoded_Refs, + ReferenceGroupConvolutionBackpropDataLayerOutShapeTest, + testing::ValuesIn(generateGroupConvolutionBackpropDataOutShapeCombinedParams()), + ReferenceGroupConvolutionBackpropDataLayerOutShapeTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gru_cell.cpp b/src/plugins/template/tests/functional/op_reference/gru_cell.cpp index bf0a8373e83cda..8811e0e29dfedf 100644 --- a/src/plugins/template/tests/functional/op_reference/gru_cell.cpp +++ b/src/plugins/template/tests/functional/op_reference/gru_cell.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/gru_cell.hpp" + #include -#include "openvino/op/gru_cell.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,12 +13,30 @@ using namespace ov; namespace { struct GRUCellParams { - GRUCellParams( - const int32_t batchSize, const int32_t inputSize, const int32_t hiddenSize, const int32_t gatesCount, const bool linearBeforeReset, - const reference_tests::Tensor& X, const reference_tests::Tensor& H_t, const reference_tests::Tensor& W, const reference_tests::Tensor& R, const reference_tests::Tensor& B, - const reference_tests::Tensor& Ho, const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), gatesCount(gatesCount), linearBeforeReset(linearBeforeReset), - X(X), H_t(H_t), W(W), R(R), B(B), Ho(Ho), testcaseName(testcaseName) {} + GRUCellParams(const int32_t batchSize, + const int32_t inputSize, + const int32_t hiddenSize, + const int32_t gatesCount, + const bool linearBeforeReset, + const reference_tests::Tensor& X, + const reference_tests::Tensor& H_t, + const reference_tests::Tensor& W, + const reference_tests::Tensor& R, + const reference_tests::Tensor& B, + const reference_tests::Tensor& Ho, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + gatesCount(gatesCount), + linearBeforeReset(linearBeforeReset), + X(X), + H_t(H_t), + W(W), + R(R), + B(B), + Ho(Ho), + testcaseName(testcaseName) {} int32_t batchSize; int32_t inputSize; @@ -144,78 +163,104 @@ TEST_P(ReferenceGRUCellTestHardsigmoidActivationFunction, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ GRUCellParams( - 2, 3, 3, 3, false, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, - 0.8295078f, 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, - 0.3096991f, 0.5638341f, 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, - 0.8049057f, 0.43966424f, 0.46294412f, 0.9833361f, 0.31369713f, 0.1719934f, - 0.4937093f, 0.6353004f, 0.77982515f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, 0.1623331f, 0.01389796f, - 0.99669236f, 0.53901845f, 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, - 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, 0.65131867f, 0.78163475f, - 0.12058706f, 0.45591718f, 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, - 0.51267904f, 0.49030215f, 0.08498167f}), - reference_tests::Tensor(ET, {3 * 3}, std::vector{ - 0.8286678f + 0.9175602f, - 0.9153158f + 0.14958014f, - 0.9581612f + 0.49230585f, - 0.6639213f + 0.63162816f, - 0.84239805f + 0.4161903f, - 0.5282445f + 0.22148274f, - 0.14153397f + 0.50496656f, - 0.22404431f + 0.34798595f, - 0.6549655f + 0.6699164f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.48588726f, 0.99670005f, 0.83759373f, 0.5023099f, 0.89410484f, 0.60011315f}), + 2, + 3, + 3, + 3, + false, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), + reference_tests::Tensor( + ET, + {3 * 3, 3}, + std::vector{0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, 0.8295078f, + 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, 0.3096991f, 0.5638341f, + 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, 0.8049057f, 0.43966424f, 0.46294412f, + 0.9833361f, 0.31369713f, 0.1719934f, 0.4937093f, 0.6353004f, 0.77982515f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, + 0.1623331f, 0.01389796f, 0.99669236f, 0.53901845f, + 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, + 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, + 0.65131867f, 0.78163475f, 0.12058706f, 0.45591718f, + 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, + 0.51267904f, 0.49030215f, 0.08498167f}), + reference_tests::Tensor(ET, + {3 * 3}, + std::vector{0.8286678f + 0.9175602f, + 0.9153158f + 0.14958014f, + 0.9581612f + 0.49230585f, + 0.6639213f + 0.63162816f, + 0.84239805f + 0.4161903f, + 0.5282445f + 0.22148274f, + 0.14153397f + 0.50496656f, + 0.22404431f + 0.34798595f, + 0.6549655f + 0.6699164f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.48588726f, 0.99670005f, 0.83759373f, 0.5023099f, 0.89410484f, 0.60011315f}), "gru_cell_bias_clip"), GRUCellParams( - 2, 3, 3, 3, true, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, 0.6964006f, 0.33459795f, - 0.5468904f, 0.85646594f, 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, - 0.56943774f, 0.7475505f, 0.2490578f, 0.86977345f, 0.85542053f, 0.29660386f, - 0.49717373f, 0.7473479f, 0.53454477f, 0.15974349f, 0.5804805f, 0.14303213f, - 0.07514781f, 0.5865731f, 0.76409274f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, 0.04471736f, 0.03888785f, - 0.06308217f, 0.44844428f, 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, - 0.63143945f, 0.00277612f, 0.37198433f, 0.06966069f, 0.4613444f, 0.10999731f, - 0.78273284f, 0.21453214f, 0.10751773f, 0.18332677f, 0.1326976f, 0.9998985f, - 0.19263928f, 0.10979804f, 0.52575564f}), - reference_tests::Tensor(ET, {(3 + 1) * 3}, std::vector{ - 0.61395123f, // 0.09875853f + 0.5151927f, - 1.08667738f, // 0.37801138f + 0.708666f, - 1.32600244f, // 0.7729636f + 0.55303884f, - 0.81917698f, // 0.78493553f + 0.03424145f, - 1.37736335f, // 0.5662702f + 0.81109315f, - 0.42931147f, // 0.12406381f + 0.30524766f, - 0.66729516f, - 0.7752771f, - 0.78819966f, - 0.6606634f, - 0.99040645f, - 0.21112025f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8709214f, 0.48411977f, 0.74495184f, 0.6074972f, 0.44572943f, 0.1467715f}), + 2, + 3, + 3, + 3, + true, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, + 0.6964006f, 0.33459795f, 0.5468904f, 0.85646594f, + 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, + 0.56943774f, 0.7475505f, 0.2490578f, 0.86977345f, + 0.85542053f, 0.29660386f, 0.49717373f, 0.7473479f, + 0.53454477f, 0.15974349f, 0.5804805f, 0.14303213f, + 0.07514781f, 0.5865731f, 0.76409274f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, + 0.04471736f, 0.03888785f, 0.06308217f, 0.44844428f, + 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, + 0.63143945f, 0.00277612f, 0.37198433f, 0.06966069f, + 0.4613444f, 0.10999731f, 0.78273284f, 0.21453214f, + 0.10751773f, 0.18332677f, 0.1326976f, 0.9998985f, + 0.19263928f, 0.10979804f, 0.52575564f}), + reference_tests::Tensor(ET, + {(3 + 1) * 3}, + std::vector{0.61395123f, // 0.09875853f + 0.5151927f, + 1.08667738f, // 0.37801138f + 0.708666f, + 1.32600244f, // 0.7729636f + 0.55303884f, + 0.81917698f, // 0.78493553f + 0.03424145f, + 1.37736335f, // 0.5662702f + 0.81109315f, + 0.42931147f, // 0.12406381f + 0.30524766f, + 0.66729516f, + 0.7752771f, + 0.78819966f, + 0.6606634f, + 0.99040645f, + 0.21112025f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8709214f, 0.48411977f, 0.74495184f, 0.6074972f, 0.44572943f, 0.1467715f}), "gru_cell_linear_before_reset"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -232,47 +277,60 @@ std::vector generateCombinedParams() { template std::vector generateParamsHardsigmoidActivationFunction() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ GRUCellParams( - 2, 3, 3, 3, true, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, 0.6964006f, 0.33459795f, - 0.5468904f, 0.85646594f, 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, - 0.56943774f, 0.7475505f, 0.2490578f, 0.86977345f, 0.85542053f, 0.29660386f, - 0.49717373f, 0.7473479f, 0.53454477f, 0.15974349f, 0.5804805f, 0.14303213f, - 0.07514781f, 0.5865731f, 0.76409274f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, 0.04471736f, 0.03888785f, - 0.06308217f, 0.44844428f, 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, - 0.63143945f, 0.00277612f, 0.37198433f, 0.06966069f, 0.4613444f, 0.10999731f, - 0.78273284f, 0.21453214f, 0.10751773f, 0.18332677f, 0.1326976f, 0.9998985f, - 0.19263928f, 0.10979804f, 0.52575564f}), - reference_tests::Tensor(ET, {(3 + 1) * 3}, std::vector{ - 0.09875853f + 0.5151927f, - 0.37801138f + 0.708666f, - 0.7729636f + 0.55303884f, - 0.78493553f + 0.03424145f, - 0.5662702f + 0.81109315f, - 0.12406381f + 0.30524766f, - 0.66729516f, - 0.7752771f, - 0.78819966f, - 0.6606634f, - 0.99040645f, - 0.21112025f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), + 2, + 3, + 3, + 3, + true, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, + 0.6964006f, 0.33459795f, 0.5468904f, 0.85646594f, + 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, + 0.56943774f, 0.7475505f, 0.2490578f, 0.86977345f, + 0.85542053f, 0.29660386f, 0.49717373f, 0.7473479f, + 0.53454477f, 0.15974349f, 0.5804805f, 0.14303213f, + 0.07514781f, 0.5865731f, 0.76409274f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, + 0.04471736f, 0.03888785f, 0.06308217f, 0.44844428f, + 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, + 0.63143945f, 0.00277612f, 0.37198433f, 0.06966069f, + 0.4613444f, 0.10999731f, 0.78273284f, 0.21453214f, + 0.10751773f, 0.18332677f, 0.1326976f, 0.9998985f, + 0.19263928f, 0.10979804f, 0.52575564f}), + reference_tests::Tensor(ET, + {(3 + 1) * 3}, + std::vector{0.09875853f + 0.5151927f, + 0.37801138f + 0.708666f, + 0.7729636f + 0.55303884f, + 0.78493553f + 0.03424145f, + 0.5662702f + 0.81109315f, + 0.12406381f + 0.30524766f, + 0.66729516f, + 0.7752771f, + 0.78819966f, + 0.6606634f, + 0.99040645f, + 0.21112025f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), "gru_cell_hardsigmoid_activation_function"), }; return params; } std::vector generateCombinedParamsHardsigmoidActivationFunction() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsHardsigmoidActivationFunction(), generateParamsHardsigmoidActivationFunction(), generateParamsHardsigmoidActivationFunction(), @@ -286,9 +344,13 @@ std::vector generateCombinedParamsHardsigmoidActivationFunction() return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GRUCell_With_Hardcoded_Refs, ReferenceGRUCellTest, - testing::ValuesIn(generateCombinedParams()), ReferenceGRUCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GRUCell_With_Hardcoded_Refs, + ReferenceGRUCellTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceGRUCellTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_GRUCell_With_Hardcoded_Refs, ReferenceGRUCellTestHardsigmoidActivationFunction, - testing::ValuesIn(generateCombinedParamsHardsigmoidActivationFunction()), ReferenceGRUCellTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_GRUCell_With_Hardcoded_Refs, + ReferenceGRUCellTestHardsigmoidActivationFunction, + testing::ValuesIn(generateCombinedParamsHardsigmoidActivationFunction()), + ReferenceGRUCellTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gru_sequence.cpp b/src/plugins/template/tests/functional/op_reference/gru_sequence.cpp index 246a3e3100e03a..d964cc8e4e6e32 100644 --- a/src/plugins/template/tests/functional/op_reference/gru_sequence.cpp +++ b/src/plugins/template/tests/functional/op_reference/gru_sequence.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/gru_sequence.hpp" + #include -#include "openvino/op/gru_sequence.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,43 +14,59 @@ using namespace ov; namespace { struct GRUSequenceParams { template - GRUSequenceParams( - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const float clip, const bool linear_before_reset, const op::RecurrentSequenceDirection& gru_direction, - const element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& seqLengthsValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, - const std::vector& YValues, const std::vector& HoValues, - const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - clip(clip), linear_before_reset(linear_before_reset), gru_direction(gru_direction), iType(iType), oType(iType), - testcaseName(testcaseName) { - numDirections = (gru_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; + GRUSequenceParams(const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const float clip, + const bool linear_before_reset, + const op::RecurrentSequenceDirection& gru_direction, + const element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& seqLengthsValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + clip(clip), + linear_before_reset(linear_before_reset), + gru_direction(gru_direction), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + numDirections = (gru_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; - Shape XShape = Shape{batchSize, seqLength, inputSize}; - Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape seqLengthsShape = Shape{batchSize}; - Shape WShape = Shape{numDirections, 3 * hiddenSize, inputSize}; - Shape RShape = Shape{numDirections, 3 * hiddenSize, hiddenSize}; - Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; - Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape XShape = Shape{batchSize, seqLength, inputSize}; + Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape seqLengthsShape = Shape{batchSize}; + Shape WShape = Shape{numDirections, 3 * hiddenSize, inputSize}; + Shape RShape = Shape{numDirections, 3 * hiddenSize, hiddenSize}; + Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; + Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); - if (linear_before_reset == true) { - Shape BShape = Shape{numDirections, 4 * hiddenSize}; - B = reference_tests::Tensor(BShape, iType, BValues); - } else { - Shape BShape = Shape{numDirections, 3 * hiddenSize}; - B = reference_tests::Tensor(BShape, iType, BValues); - } + if (linear_before_reset == true) { + Shape BShape = Shape{numDirections, 4 * hiddenSize}; + B = reference_tests::Tensor(BShape, iType, BValues); + } else { + Shape BShape = Shape{numDirections, 3 * hiddenSize}; + B = reference_tests::Tensor(BShape, iType, BValues); } + } size_t batchSize; size_t inputSize; @@ -78,7 +95,8 @@ class ReferenceGRUSequenceTest : public testing::TestWithParam CreateFunction(const GRUSequenceParams& params) { const auto X = std::make_shared(params.X.type, params.X.shape); const auto H_t = std::make_shared(params.H_t.type, params.H_t.shape); - const auto sequence_lengths = std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); + const auto sequence_lengths = + std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); const auto W = std::make_shared(params.W.type, params.W.shape); const auto R = std::make_shared(params.R.type, params.R.shape); const auto B = std::make_shared(params.B.type, params.B.shape); - const auto gru_sequence = - std::make_shared(X, - H_t, - sequence_lengths, - W, - R, - B, - params.hiddenSize, - params.gru_direction, - std::vector{"sigmoid", "tanh"}, - std::vector{}, - std::vector{}, - params.clip, - params.linear_before_reset); + const auto gru_sequence = std::make_shared(X, + H_t, + sequence_lengths, + W, + R, + B, + params.hiddenSize, + params.gru_direction, + std::vector{"sigmoid", "tanh"}, + std::vector{}, + std::vector{}, + params.clip, + params.linear_before_reset); - auto function = std::make_shared(gru_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B}); + auto function = + std::make_shared(gru_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B}); return function; } }; @@ -140,612 +159,588 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ GRUSequenceParams( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, std::vector{ - 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, - 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, - 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, - 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, - 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, - 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, - 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, - 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, - 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, - 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, - 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, - 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, - 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, - 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, - 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, - 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, + 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, + 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, + 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, + 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, + 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, + 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, + 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, + 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, + 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, + 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, + 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, + 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, + 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, + 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, + 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, + 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, + 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, + 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, 0.817109, 0.689733, 0.740219, 0.720841, 0.669733, 0.742577, 0.833275, 0.724127, 0.717793, 0.839288, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, - 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, - 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, - 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, - 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, - 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, - 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, + 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, + 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, + 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, + 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, + 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, + 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, + 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, + 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, 0.898462, 0.876139, 0.907177, 0.653277, 0.805394, 0.929444, 0.916614, 0.916777, 0.717739, 0.641276, 0.800878, 0.785962, 0.806701, 0.637048, 0.738691, 0.821579, 0.813007, 0.813116, 0.680121, 0.629029, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, - 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, - 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, - 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, - 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, - 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, - 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, - 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, + 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, + 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, + 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, + 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, + 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, + 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, + 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, + 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, 0.775103, 0.756592, 0.775372, 0.713274, 0.662079, 0.684083, 0.648834, 0.802055, 0.713453, 0.623038, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241, - 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, - 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, - 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, - 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, - 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, - 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, - 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, + 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, + 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241, + 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, + 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, + 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, + 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, + 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, + 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, + 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, 0.763992, 0.772739, 0.686201, 0.721482, 0.667952, 0.632404, 0.727003, 0.637854, 0.830743, 0.853834, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, - std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}), + std::vector{0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, + 0.760766, 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, + 0.680157, 0.761339, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, + 0.743851, 0.654985, 0.620846, 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, + 0.634079, 0.73646, 0.677257, 0.616843, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, + 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}), GRUSequenceParams( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, - 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, - 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, - 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, - 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, - 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, - 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, - 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, - 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, + 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, + 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, + 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, + 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, + 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, + 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, + 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, + 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, + 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, + 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, + 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, 0.817109, 0.689733, 0.740219, 0.720841, 0.669733, 0.742577, 0.833275, 0.724127, 0.717793, 0.839288, - 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, - 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, - 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, - 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, - 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, - 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, - 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, - 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, + 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, + 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, + 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, + 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, + 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, + 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, + 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, + 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, 0.800878, 0.785962, 0.806701, 0.637048, 0.738691, 0.821579, 0.813007, 0.813116, 0.680121, 0.629029, 0.898462, 0.876139, 0.907177, 0.653277, 0.805394, 0.929444, 0.916614, 0.916777, 0.717739, 0.641276, - 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, - 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, - 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, - 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, - 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, - 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, - 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, + 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, + 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, + 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, + 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, + 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, + 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, + 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, + 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, 0.775103, 0.756592, 0.775372, 0.713274, 0.662079, 0.684083, 0.648834, 0.802055, 0.713453, 0.623038, - 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, - 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, - 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, - 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, - 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, - 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, - 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, - 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, + 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, + 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, + 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, + 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, + 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, + 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, + 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, + 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058, 0.763992, 0.772739, 0.686201, 0.721482, 0.667952, 0.632404, 0.727003, 0.637854, 0.830743, 0.853834, - 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, - 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, - 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, - 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, - 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, - 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, - 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, - 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241}, - std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}), + 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, + 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, + 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, + 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, + 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, + 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, + 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, + 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241}, + std::vector{0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, + 0.760766, 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, + 0.680157, 0.761339, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, + 0.743851, 0.654985, 0.620846, 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, + 0.634079, 0.73646, 0.677257, 0.616843, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, + 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}), GRUSequenceParams( - 5, 10, 10, 5, - 0.f, true, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.f, + true, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, + 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, + 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, + 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, + 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, + 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10}, std::vector{5, 5, 5, 5, 5}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 6.76815, - 2.15026, 4.66033, 4.20769, 2.3604, 8.70826, 1.91807, 9.57809, 2.50132, 4.95464, 2.44375, - 8.91345, 5.30605, 4.59238, 3.47923, 1.46477, 2.24843, 8.00775, 2.60248, 6.25095, 9.35311, - 1.96897, 5.0738, 2.40393, 3.7379, 7.87712, 6.6423, 7.39986, 2.74115, 1.61588, 8.9169, - 3.87864, 6.44032, 9.59689, 4.74213, 2.76302, 2.49426, 6.62326, 1.50664, 3.95698, 9.82371, - 7.94438, 2.88399, 6.26754, 4.95809, 6.52199, 3.87974, 2.0071, 3.81713, 9.94544, 2.49197, - 5.16628, 6.71965, 1.33379, 3.27947, 8.83191, 2.25668, 1.16264, 7.20743, 8.8397, 4.19957, - 4.57119, 8.76621, 9.39031, 5.05683, 9.77492, 7.28143, 7.78249, 6.19997, 2.21146, 8.26929, - 1.94202, 4.0196, 6.07928, 6.6033, 5.12291, 8.3157, 3.23435, 4.80489, 8.2505, 5.93311, - 3.22774, 1.09695, 3.22228, 3.24883, 6.54187, 3.3574, 5.71848, 4.4223, 1.32481, 8.59246, - 5.0497, 9.78833, 1.51703, 2.4678, 2.64335, 5.87163, 3.45429, 5.43941, 7.60549, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 6.76815, 2.15026, 4.66033, 4.20769, 2.3604, 8.70826, 1.91807, + 9.57809, 2.50132, 4.95464, 2.44375, 8.91345, 5.30605, 4.59238, 3.47923, 1.46477, 2.24843, 8.00775, + 2.60248, 6.25095, 9.35311, 1.96897, 5.0738, 2.40393, 3.7379, 7.87712, 6.6423, 7.39986, 2.74115, + 1.61588, 8.9169, 3.87864, 6.44032, 9.59689, 4.74213, 2.76302, 2.49426, 6.62326, 1.50664, 3.95698, + 9.82371, 7.94438, 2.88399, 6.26754, 4.95809, 6.52199, 3.87974, 2.0071, 3.81713, 9.94544, 2.49197, + 5.16628, 6.71965, 1.33379, 3.27947, 8.83191, 2.25668, 1.16264, 7.20743, 8.8397, 4.19957, 4.57119, + 8.76621, 9.39031, 5.05683, 9.77492, 7.28143, 7.78249, 6.19997, 2.21146, 8.26929, 1.94202, 4.0196, + 6.07928, 6.6033, 5.12291, 8.3157, 3.23435, 4.80489, 8.2505, 5.93311, 3.22774, 1.09695, 3.22228, + 3.24883, 6.54187, 3.3574, 5.71848, 4.4223, 1.32481, 8.59246, 5.0497, 9.78833, 1.51703, 2.4678, + 2.64335, 5.87163, 3.45429, 5.43941, 7.60549, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 6.76815, - 2.15026, 4.66033, 4.20769, 2.3604, 8.70826, 1.91807, 9.57809, 2.50132, 4.95464, 2.44375, - 8.91345, 5.30605, 4.59238, 3.47923, 1.46477, 2.24843, 8.00775, 2.60248, 6.25095, 9.35311, - 1.96897, 5.0738, 2.40393, 3.7379, 7.87712, 6.6423, 7.39986, 2.74115, 1.61588, 8.9169, - 3.87864, 6.44032, 9.59689, 4.74213, 2.76302, 2.49426, 6.62326, 1.50664, 3.95698, 9.82371, - 7.94438, 2.88399, 6.26754, 4.95809, 6.52199, 3.87974, 2.0071, 3.81713, 9.94544, 2.49197, - 5.16628, 6.71965, 1.33379, 3.27947, 8.83191, 2.25668, 1.16264, 7.20743, 8.8397, 4.19957, - 4.57119, 8.76621, 9.39031, 5.05683, 9.77492, 7.28143, 7.78249, 6.19997, 2.21146, 8.26929, - 1.94202, 4.0196, 6.07928, 6.6033, 5.12291, 8.3157, 3.23435, 4.80489, 8.2505, 5.93311, - 3.22774, 1.09695, 3.22228, 3.24883, 6.54187, 3.3574, 5.71848, 4.4223, 1.32481, 8.59246, - 5.0497, 9.78833, 1.51703, 2.4678, 2.64335, 5.87163, 3.45429, 5.43941, 7.60549, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 6.76815, 2.15026, 4.66033, 4.20769, 2.3604, 8.70826, 1.91807, + 9.57809, 2.50132, 4.95464, 2.44375, 8.91345, 5.30605, 4.59238, 3.47923, 1.46477, 2.24843, 8.00775, + 2.60248, 6.25095, 9.35311, 1.96897, 5.0738, 2.40393, 3.7379, 7.87712, 6.6423, 7.39986, 2.74115, + 1.61588, 8.9169, 3.87864, 6.44032, 9.59689, 4.74213, 2.76302, 2.49426, 6.62326, 1.50664, 3.95698, + 9.82371, 7.94438, 2.88399, 6.26754, 4.95809, 6.52199, 3.87974, 2.0071, 3.81713, 9.94544, 2.49197, + 5.16628, 6.71965, 1.33379, 3.27947, 8.83191, 2.25668, 1.16264, 7.20743, 8.8397, 4.19957, 4.57119, + 8.76621, 9.39031, 5.05683, 9.77492, 7.28143, 7.78249, 6.19997, 2.21146, 8.26929, 1.94202, 4.0196, + 6.07928, 6.6033, 5.12291, 8.3157, 3.23435, 4.80489, 8.2505, 5.93311, 3.22774, 1.09695, 3.22228, + 3.24883, 6.54187, 3.3574, 5.71848, 4.4223, 1.32481, 8.59246, 5.0497, 9.78833, 1.51703, 2.4678, + 2.64335, 5.87163, 3.45429, 5.43941, 7.60549, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, + 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, + 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, + 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10}), + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, + 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, + 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, + 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, + 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, + 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, + 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, + 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, + 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, + 9.45215, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, + 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, + 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, 4.70609, + 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, + 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, + 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, + 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, + 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, + 2.07541, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 6.61627, + 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 6.61627, 6.94572, + 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, + 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 5.72319, 1.75261, 9.25175, 9.19404, + 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, + 6.09321, 6.52544, 9.60882, 3.34881, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, + 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, + 8.13163, 1.26821, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, + 1.26821, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, + 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, 3.07914, + 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, + 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, 8.94813, 5.86709, 5.03182, + 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, 8.94813, 5.86709, 5.03182, 9.02922, + 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, + 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, + 6.87069, 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, + 8.93208, 1.10502, 5.48298, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, + 5.48298, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, + 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, 1.66413, + 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, 1.66413, 8.08256, + 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, 1.66413, 8.08256, 1.57661, + 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, 1.66413, 8.08256, 1.57661, 4.19779, + 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, + 4.41823, 7.86628, 7.94436, 3.71224, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, + 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, + 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, + 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, + 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, + 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10}), }; return params; } @@ -754,618 +749,594 @@ template std::vector generateParamsBF16() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ GRUSequenceParams( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, std::vector{ - 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, - 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, - 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, - 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, - 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, - 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, - 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, + 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, + 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, + 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, + 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, + 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, + 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, + 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, 0.613281, 0.761719, 0.964844, 0.867188, 0.945312, 0.613281, 0.660156, 0.722656, 0.964844, 0.664062, 0.609375, 0.707031, 0.839844, 0.777344, 0.832031, 0.609375, 0.640625, 0.679688, 0.839844, 0.640625, - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, - 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, - 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, - 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, - 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, - 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, - 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, + 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, + 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, + 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, + 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, + 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, + 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, + 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, + 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, 0.695312, 0.648438, 0.753906, 0.679688, 0.753906, 0.738281, 0.847656, 0.753906, 0.945312, 0.808594, 0.664062, 0.632812, 0.699219, 0.652344, 0.699219, 0.691406, 0.761719, 0.699219, 0.832031, 0.738281, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, - 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, - 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, - 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, - 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, - 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, - 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, - 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, - 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, - 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, - 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, - 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, - 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, - 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, - 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, + 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, + 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, + 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, + 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, + 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, + 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, + 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, + 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, + 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, + 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, + 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, + 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, + 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, + 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, + 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, + 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, + 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, 0.800781, 0.847656, 0.929688, 0.761719, 0.777344, 0.808594, 0.761719, 0.664062, 0.945312, 0.6875, 0.730469, 0.761719, 0.816406, 0.707031, 0.714844, 0.738281, 0.707031, 0.640625, 0.832031, 0.65625, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875, - 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, - 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, - 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, - 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, - 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, - 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, + 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, + 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875, + 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, + 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, + 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, + 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, + 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, + 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, 0.886719, 0.898438, 0.867188, 0.949219, 0.902344, 0.722656, 0.648438, 0.855469, 0.800781, 0.964844, 0.792969, 0.800781, 0.777344, 0.832031, 0.800781, 0.679688, 0.632812, 0.769531, 0.730469, 0.839844, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}), + 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, + std::vector{0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, + 0.625, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, + 0.753906, 0.691406, 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, + 0.746094, 0.640625, 0.609375, 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, + 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, + 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}), GRUSequenceParams( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, + 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, 0.609375, 0.707031, 0.839844, 0.777344, 0.832031, 0.609375, 0.640625, 0.679688, 0.839844, 0.640625, 0.613281, 0.761719, 0.964844, 0.867188, 0.945312, 0.613281, 0.660156, 0.722656, 0.964844, 0.664062, - 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, - 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, - 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, - 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, - 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, - 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, - 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, + 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, + 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, + 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, + 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, + 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, + 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, + 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, 0.664062, 0.632812, 0.699219, 0.652344, 0.699219, 0.691406, 0.761719, 0.699219, 0.832031, 0.738281, 0.695312, 0.648438, 0.753906, 0.679688, 0.753906, 0.738281, 0.847656, 0.753906, 0.945312, 0.808594, - 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, - 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, - 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, - 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, - 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, - 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, - 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, - 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, - 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, - 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, - 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, - 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, - 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, - 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, - 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, + 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, + 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, + 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, + 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, + 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, + 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, + 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, + 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, + 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, + 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, + 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, + 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, + 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, + 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, + 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, + 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, + 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, + 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.761719, 0.816406, 0.707031, 0.714844, 0.738281, 0.707031, 0.640625, 0.832031, 0.65625, 0.800781, 0.847656, 0.929688, 0.761719, 0.777344, 0.808594, 0.761719, 0.664062, 0.945312, 0.6875, - 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, - 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, - 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, - 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, - 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, - 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, - 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719, + 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, + 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, + 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, + 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, + 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, + 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, + 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, + 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719, 0.792969, 0.800781, 0.777344, 0.832031, 0.800781, 0.679688, 0.632812, 0.769531, 0.730469, 0.839844, 0.886719, 0.898438, 0.867188, 0.949219, 0.902344, 0.722656, 0.648438, 0.855469, 0.800781, 0.964844, - 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, - 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, - 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, - 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, - 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, - 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, - 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}), + 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, + 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, + 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, + 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, + 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, + 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, + 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875}, + std::vector{0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, + 0.625, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, + 0.753906, 0.691406, 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, + 0.746094, 0.640625, 0.609375, 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, + 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, + 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}), GRUSequenceParams( - 5, 10, 10, 5, - 0.f, true, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.f, + true, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, + 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, + 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, + 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, + 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, + 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10}, std::vector{5, 5, 5, 5, 5}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 9.25, - 6.1875, 1, 8.75, 9.75, 8.0625, 4.375, 3.28125, 9.75, 1.73438, 6.4375, - 2.40625, 8.4375, 2.875, 6.1875, 4.75, 6.625, 4.125, 3.5625, 7.3125, 6.28125, - 7.25, 7.75, 1.67188, 8.75, 1.32812, 7.78125, 8.125, 7.28125, 9.125, 8.75, - 1.03906, 3.90625, 3.375, 7.03125, 5.1875, 5.0625, 4.25, 4.4375, 3.15625, 4.6875, - 1.20312, 4.625, 5.78125, 3.84375, 2.15625, 6.59375, 6.0625, 4.875, 2.5, 9.75, - 4.78125, 7.09375, 7.15625, 2.78125, 3.46875, 4.8125, 1.09375, 4.0625, 2.96875, 8.125, - 1.28125, 8.875, 9.375, 9.125, 8, 6.9375, 5.65625, 3.4375, 1.14062, 3.26562, - 3.6875, 8.6875, 5.875, 5.75, 8.75, 8.25, 2.65625, 6.125, 1.75, 7.59375, - 1.39844, 5.65625, 5, 7.9375, 1.17188, 6.125, 1.60156, 5.1875, 8.25, 4.0625, - 6.71875, 1.60938, 7.9375, 4.375, 7.34375, 1.71875, 3.14062, 9.875, 1.39844, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 9.25, - 6.1875, 1, 8.75, 9.75, 8.0625, 4.375, 3.28125, 9.75, 1.73438, 6.4375, - 2.40625, 8.4375, 2.875, 6.1875, 4.75, 6.625, 4.125, 3.5625, 7.3125, 6.28125, - 7.25, 7.75, 1.67188, 8.75, 1.32812, 7.78125, 8.125, 7.28125, 9.125, 8.75, - 1.03906, 3.90625, 3.375, 7.03125, 5.1875, 5.0625, 4.25, 4.4375, 3.15625, 4.6875, - 1.20312, 4.625, 5.78125, 3.84375, 2.15625, 6.59375, 6.0625, 4.875, 2.5, 9.75, - 4.78125, 7.09375, 7.15625, 2.78125, 3.46875, 4.8125, 1.09375, 4.0625, 2.96875, 8.125, - 1.28125, 8.875, 9.375, 9.125, 8, 6.9375, 5.65625, 3.4375, 1.14062, 3.26562, - 3.6875, 8.6875, 5.875, 5.75, 8.75, 8.25, 2.65625, 6.125, 1.75, 7.59375, - 1.39844, 5.65625, 5, 7.9375, 1.17188, 6.125, 1.60156, 5.1875, 8.25, 4.0625, - 6.71875, 1.60938, 7.9375, 4.375, 7.34375, 1.71875, 3.14062, 9.875, 1.39844, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 9.25, 6.1875, 1, 8.75, 9.75, 8.0625, 4.375, + 3.28125, 9.75, 1.73438, 6.4375, 2.40625, 8.4375, 2.875, 6.1875, 4.75, 6.625, 4.125, + 3.5625, 7.3125, 6.28125, 7.25, 7.75, 1.67188, 8.75, 1.32812, 7.78125, 8.125, 7.28125, + 9.125, 8.75, 1.03906, 3.90625, 3.375, 7.03125, 5.1875, 5.0625, 4.25, 4.4375, 3.15625, + 4.6875, 1.20312, 4.625, 5.78125, 3.84375, 2.15625, 6.59375, 6.0625, 4.875, 2.5, 9.75, + 4.78125, 7.09375, 7.15625, 2.78125, 3.46875, 4.8125, 1.09375, 4.0625, 2.96875, 8.125, 1.28125, + 8.875, 9.375, 9.125, 8, 6.9375, 5.65625, 3.4375, 1.14062, 3.26562, 3.6875, 8.6875, + 5.875, 5.75, 8.75, 8.25, 2.65625, 6.125, 1.75, 7.59375, 1.39844, 5.65625, 5, + 7.9375, 1.17188, 6.125, 1.60156, 5.1875, 8.25, 4.0625, 6.71875, 1.60938, 7.9375, 4.375, + 7.34375, 1.71875, 3.14062, 9.875, 1.39844, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 9.25, 6.1875, 1, 8.75, 9.75, 8.0625, 4.375, + 3.28125, 9.75, 1.73438, 6.4375, 2.40625, 8.4375, 2.875, 6.1875, 4.75, 6.625, 4.125, + 3.5625, 7.3125, 6.28125, 7.25, 7.75, 1.67188, 8.75, 1.32812, 7.78125, 8.125, 7.28125, + 9.125, 8.75, 1.03906, 3.90625, 3.375, 7.03125, 5.1875, 5.0625, 4.25, 4.4375, 3.15625, + 4.6875, 1.20312, 4.625, 5.78125, 3.84375, 2.15625, 6.59375, 6.0625, 4.875, 2.5, 9.75, + 4.78125, 7.09375, 7.15625, 2.78125, 3.46875, 4.8125, 1.09375, 4.0625, 2.96875, 8.125, 1.28125, + 8.875, 9.375, 9.125, 8, 6.9375, 5.65625, 3.4375, 1.14062, 3.26562, 3.6875, 8.6875, + 5.875, 5.75, 8.75, 8.25, 2.65625, 6.125, 1.75, 7.59375, 1.39844, 5.65625, 5, + 7.9375, 1.17188, 6.125, 1.60156, 5.1875, 8.25, 4.0625, 6.71875, 1.60938, 7.9375, 4.375, + 7.34375, 1.71875, 3.14062, 9.875, 1.39844, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, + 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, + 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, + 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10}), + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 1, + 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 1, 4.75, + 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 1, 4.75, 10, + 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 1, 4.75, 10, 7.46875, + 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, 1.82812, 4.5625, 2.67188, 4.5, + 4.125, 7, 4.5625, 9.375, 5.84375, 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, + 7, 4.5625, 9.375, 5.84375, 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, + 4.5625, 9.375, 5.84375, 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, + 9.375, 5.84375, 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, + 5.84375, 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 8.625, + 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 8.625, 4.75, 3.8125, + 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, 4.75, + 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 5.8125, 7.03125, 9.25, 4.75, 5.125, + 6, 4.875, 2.25, 9.4375, 2.78125, 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, + 4.875, 2.25, 9.4375, 2.78125, 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, + 2.25, 9.4375, 2.78125, 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, + 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, + 8.875, 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8, + 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8, 8.1875, + 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, + 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 8.75, 9, 8.4375, 1.76562, + 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, + 3.45312, 2.53125, 1.53125, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, + 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, + 2.78125, 7.21875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, + 7.21875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, + 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, 7.03125, + 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, + 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, 3.59375, 3.84375, 2.28125, + 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, 3.59375, 3.84375, 2.28125, 7.1875, + 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, 3.59375, 3.84375, 2.28125, 7.1875, 8, + 8.5, 4.6875, 1.16406, 1.30469, 7.75, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, + 4.6875, 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, + 8.125, 3, 1.92188, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, + 1.92188, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, + 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, 1.65625, + 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, 1.65625, 5, + 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, 1.65625, 5, 5.21875, + 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, 1.65625, 5, 5.21875, 9.125, + 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, 1.65625, 5, 5.21875, 9.125, 1.85938, + 3.64062, 9.125, 3.59375, 2.0625, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, + 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, + 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, + 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, + 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, + 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10}), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -1379,7 +1350,9 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GRUSequence_With_Hardcoded_Refs, ReferenceGRUSequenceTest, - testing::ValuesIn(generateCombinedParams()), ReferenceGRUSequenceTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GRUSequence_With_Hardcoded_Refs, + ReferenceGRUSequenceTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceGRUSequenceTest::getTestCaseName); -} // namespace \ No newline at end of file +} // namespace \ No newline at end of file diff --git a/src/plugins/template/tests/functional/op_reference/hard_sigmoid.cpp b/src/plugins/template/tests/functional/op_reference/hard_sigmoid.cpp index d6142cf83d74ea..a39d927bd50875 100644 --- a/src/plugins/template/tests/functional/op_reference/hard_sigmoid.cpp +++ b/src/plugins/template/tests/functional/op_reference/hard_sigmoid.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/hard_sigmoid.hpp" + #include -#include "openvino/op/hard_sigmoid.hpp" #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" @@ -14,8 +15,12 @@ using namespace ov; namespace { struct HardSigmoidParams { template - HardSigmoidParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const float alpha, const float beta) + HardSigmoidParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const float alpha, + const float beta) : pshape(shape), inType(iType), outType(iType), @@ -53,8 +58,11 @@ class ReferenceHardSigmoidLayerTest : public testing::TestWithParam CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const float alphaData, const float betaData) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const float alphaData, + const float betaData) { std::vector alphaArray; std::vector betaArray; alphaArray.push_back(alphaData); @@ -63,7 +71,7 @@ class ReferenceHardSigmoidLayerTest : public testing::TestWithParam(in, alpha, beta); - return std::make_shared(NodeVector {HardSigmoid}, ParameterVector {in}); + return std::make_shared(NodeVector{HardSigmoid}, ParameterVector{in}); } }; @@ -75,28 +83,26 @@ template std::vector generateHardSigmoidFloatParams() { using T = typename element_type_traits::value_type; - std::vector hardSigmoidParams { - HardSigmoidParams(ov::PartialShape {3}, - IN_ET, - std::vector{-1.0f, 0.0f, 1.0f}, - std::vector{0.1f, 0.6f, 1.f}, - 0.5, - 0.6), - HardSigmoidParams(ov::PartialShape {2, 5}, - IN_ET, - std::vector{-3.0f, -1.0f, 0.0f, 1.0f, 3.0f, 0.5f, -0.2f, 6.0f, 8.0f, 0.1f}, - std::vector{0.0f, 0.3f, 0.5f, 0.7f, 1.0f, 0.6f, 0.46f, 1.0f, 1.0f, 0.52f}, - 0.2, - 0.5) - }; + std::vector hardSigmoidParams{ + HardSigmoidParams(ov::PartialShape{3}, + IN_ET, + std::vector{-1.0f, 0.0f, 1.0f}, + std::vector{0.1f, 0.6f, 1.f}, + 0.5, + 0.6), + HardSigmoidParams(ov::PartialShape{2, 5}, + IN_ET, + std::vector{-3.0f, -1.0f, 0.0f, 1.0f, 3.0f, 0.5f, -0.2f, 6.0f, 8.0f, 0.1f}, + std::vector{0.0f, 0.3f, 0.5f, 0.7f, 1.0f, 0.6f, 0.46f, 1.0f, 1.0f, 0.52f}, + 0.2, + 0.5)}; return hardSigmoidParams; } std::vector generateHardSigmoidCombinedParams() { - const std::vector> hardSigmoidTypeParams { + const std::vector> hardSigmoidTypeParams{ generateHardSigmoidFloatParams(), - generateHardSigmoidFloatParams() - }; + generateHardSigmoidFloatParams()}; std::vector combinedParams; for (const auto& params : hardSigmoidTypeParams) { @@ -105,7 +111,9 @@ std::vector generateHardSigmoidCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_HardSigmoid_With_Hardcoded_Refs, ReferenceHardSigmoidLayerTest, - testing::ValuesIn(generateHardSigmoidCombinedParams()), ReferenceHardSigmoidLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_HardSigmoid_With_Hardcoded_Refs, + ReferenceHardSigmoidLayerTest, + testing::ValuesIn(generateHardSigmoidCombinedParams()), + ReferenceHardSigmoidLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/hsigmoid.cpp b/src/plugins/template/tests/functional/op_reference/hsigmoid.cpp index 3b5509578b9e5b..3382e7419f8511 100644 --- a/src/plugins/template/tests/functional/op_reference/hsigmoid.cpp +++ b/src/plugins/template/tests/functional/op_reference/hsigmoid.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/hsigmoid.hpp" + #include -#include "openvino/op/hsigmoid.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,7 +14,10 @@ using namespace ov; namespace { struct HSigmoidParams { template - HSigmoidParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + HSigmoidParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -45,11 +49,12 @@ class ReferenceHSigmoidLayerTest : public testing::TestWithParam } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& HSigmoidected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& HSigmoidected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto HSigmoid = std::make_shared(in); - return std::make_shared(NodeVector {HSigmoid}, ParameterVector {in}); + return std::make_shared(NodeVector{HSigmoid}, ParameterVector{in}); } }; @@ -57,25 +62,23 @@ TEST_P(ReferenceHSigmoidLayerTest, CompareWithRefs) { Exec(); } - template std::vector generateHSigmoidFloatParams() { using T = typename element_type_traits::value_type; - std::vector hSigmoidParams { - HSigmoidParams(ov::PartialShape {13}, - IN_ET, - std::vector{-10.f, -5.f, -4.f, -3.f, -2.f, -1.f, 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 10.f}, - std::vector{0.f, 0.f, 0.f, 0.f, 0.16666667f, 0.33333333f, 0.5f, 0.66666667f, 0.83333333f, 1.f, 1.f, 1.f, 1.f}) - }; + std::vector hSigmoidParams{HSigmoidParams( + ov::PartialShape{13}, + IN_ET, + std::vector{-10.f, -5.f, -4.f, -3.f, -2.f, -1.f, 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 10.f}, + std::vector< + T>{0.f, 0.f, 0.f, 0.f, 0.16666667f, 0.33333333f, 0.5f, 0.66666667f, 0.83333333f, 1.f, 1.f, 1.f, 1.f})}; return hSigmoidParams; } std::vector generateHSigmoidCombinedParams() { - const std::vector> hSigmoidTypeParams { + const std::vector> hSigmoidTypeParams{ generateHSigmoidFloatParams(), - generateHSigmoidFloatParams() - }; + generateHSigmoidFloatParams()}; std::vector combinedParams; for (const auto& params : hSigmoidTypeParams) { @@ -84,7 +87,9 @@ std::vector generateHSigmoidCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_HSigmoid_With_Hardcoded_Refs, ReferenceHSigmoidLayerTest, - testing::ValuesIn(generateHSigmoidCombinedParams()), ReferenceHSigmoidLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_HSigmoid_With_Hardcoded_Refs, + ReferenceHSigmoidLayerTest, + testing::ValuesIn(generateHSigmoidCombinedParams()), + ReferenceHSigmoidLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/hswish.cpp b/src/plugins/template/tests/functional/op_reference/hswish.cpp index fc6e6109c48d8d..0da8582df0bb3b 100644 --- a/src/plugins/template/tests/functional/op_reference/hswish.cpp +++ b/src/plugins/template/tests/functional/op_reference/hswish.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/hswish.hpp" + #include -#include "openvino/op/hswish.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,7 +15,10 @@ using namespace InferenceEngine; namespace { struct HSwishParams { template - HSwishParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + HSwishParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -46,11 +50,12 @@ class ReferenceHSwishLayerTest : public testing::TestWithParam, pu } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& HSwishected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& HSwishected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto HSwish = std::make_shared(in); - return std::make_shared(NodeVector {HSwish}, ParameterVector {in}); + return std::make_shared(NodeVector{HSwish}, ParameterVector{in}); } }; @@ -58,29 +63,25 @@ TEST_P(ReferenceHSwishLayerTest, CompareWithRefs) { Exec(); } - template std::vector generateHSwishFloatParams() { using T = typename element_type_traits::value_type; - std::vector hSwishParams { - HSwishParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{1.f, 8.f, -8.f, 17.f, -0.5f, -1.f}, - std::vector{0.66666667f, 8.f, 0.f, 17.f, -0.20833333f, -0.33333333f}), - HSwishParams(ov::PartialShape {2, 2, 1, 2}, - IN_ET, - std::vector{0.1f, 0.6f, 20.f, -7.f, -5.3f, 3.5f, -9.f, 11.f}, - std::vector{0.05166667f, 0.36f, 20.f, 0.f, 0.f, 3.5f, 0.f, 11.f}) - }; + std::vector hSwishParams{ + HSwishParams(ov::PartialShape{2, 3}, + IN_ET, + std::vector{1.f, 8.f, -8.f, 17.f, -0.5f, -1.f}, + std::vector{0.66666667f, 8.f, 0.f, 17.f, -0.20833333f, -0.33333333f}), + HSwishParams(ov::PartialShape{2, 2, 1, 2}, + IN_ET, + std::vector{0.1f, 0.6f, 20.f, -7.f, -5.3f, 3.5f, -9.f, 11.f}, + std::vector{0.05166667f, 0.36f, 20.f, 0.f, 0.f, 3.5f, 0.f, 11.f})}; return hSwishParams; } std::vector generateHSwishCombinedParams() { - const std::vector> hSwishTypeParams { - generateHSwishFloatParams(), - generateHSwishFloatParams() - }; + const std::vector> hSwishTypeParams{generateHSwishFloatParams(), + generateHSwishFloatParams()}; std::vector combinedParams; for (const auto& params : hSwishTypeParams) { @@ -89,7 +90,9 @@ std::vector generateHSwishCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_HSwish_With_Hardcoded_Refs, ReferenceHSwishLayerTest, - testing::ValuesIn(generateHSwishCombinedParams()), ReferenceHSwishLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_HSwish_With_Hardcoded_Refs, + ReferenceHSwishLayerTest, + testing::ValuesIn(generateHSwishCombinedParams()), + ReferenceHSwishLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/idft.cpp b/src/plugins/template/tests/functional/op_reference/idft.cpp index 7969dcc0d416a4..dc3507f4edc912 100644 --- a/src/plugins/template/tests/functional/op_reference/idft.cpp +++ b/src/plugins/template/tests/functional/op_reference/idft.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/idft.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/idft.hpp" using namespace reference_tests; using namespace ov; @@ -16,13 +17,13 @@ namespace { struct IDFTParams { template IDFTParams(const Shape& input_shape, - const Shape& expected_shape, - const element::Type_t& input_type, - const element::Type_t& expected_type, - const std::vector& input_value, - const std::vector& expected_value, - const std::shared_ptr& axes, - const std::shared_ptr& signal) { + const Shape& expected_shape, + const element::Type_t& input_type, + const element::Type_t& expected_type, + const std::vector& input_value, + const std::vector& expected_value, + const std::shared_ptr& axes, + const std::shared_ptr& signal) { m_input_shape = input_shape; m_expected_shape = expected_shape; m_input_type = input_type; @@ -1157,12 +1158,12 @@ std::vector generateParamsForIDFT() { // idft1d_eval_1 IDFTParams(Shape{4, 6, 8, 2}, Shape{4, 6, 8, 2}, - ET, - ET, - idft1d_input_data_1, - data_1, - op::v0::Constant::create(element::Type_t::i64, Shape{1}, {2}), - NULL), + ET, + ET, + idft1d_input_data_1, + data_1, + op::v0::Constant::create(element::Type_t::i64, Shape{1}, {2}), + NULL), // idft1d_eval IDFTParams(Shape{2, 10, 10, 2}, Shape{2, 10, 10, 2}, @@ -1393,10 +1394,9 @@ std::vector generateCombinedParamsForIDFT() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_IDFT_With_Hardcoded_Refs, - ReferenceIDFTLayerTest, - ::testing::ValuesIn(generateCombinedParamsForIDFT()), - ReferenceIDFTLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_IDFT_With_Hardcoded_Refs, + ReferenceIDFTLayerTest, + ::testing::ValuesIn(generateCombinedParamsForIDFT()), + ReferenceIDFTLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/if.cpp b/src/plugins/template/tests/functional/op_reference/if.cpp index 64a3b0d99a0308..81b454c01484cf 100644 --- a/src/plugins/template/tests/functional/op_reference/if.cpp +++ b/src/plugins/template/tests/functional/op_reference/if.cpp @@ -17,13 +17,13 @@ using namespace InferenceEngine; struct IfFunctionalBase { virtual std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) = 0; + const std::vector& results) = 0; IfFunctionalBase() {} }; struct IfCondConst : public IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 2, "Incorrect test case! Number of inputs is not 2."); OPENVINO_ASSERT(results.size() == 1, "Incorrect test case! Number of outputs is not 1."); @@ -55,7 +55,7 @@ struct IfCondConst : public IfFunctionalBase { struct IfCondIsNonConst : public IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 3, "Incorrect test case! Number of inputs is not 3."); OPENVINO_ASSERT(results.size() == 1, "Incorrect test case! Number of outputs is not 1."); @@ -89,7 +89,7 @@ struct IfCondIsNonConst : public IfFunctionalBase { struct IfWithoutAdditionalInputs : IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 1, "Incorrect test case! Number of inputs is not 1."); OPENVINO_ASSERT(results.size() == 1, "Incorrect test case! Number of outputs is not 1."); @@ -111,7 +111,7 @@ struct IfWithoutAdditionalInputs : IfFunctionalBase { struct IfDynamismCaseWithStaticInputs : public IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 4, "Incorrect test case! Number of inputs is not 4."); OPENVINO_ASSERT(results.size() == 2, "Incorrect test case! Number of outputs is not 2."); @@ -153,7 +153,7 @@ struct IfDynamismCaseWithStaticInputs : public IfFunctionalBase { struct IfConditionIsScalar : public IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 3, "Incorrect test case! Number of inputs is not 3."); OPENVINO_ASSERT(results.size() == 1, "Incorrect test case! Number of outputs is not 1."); @@ -189,7 +189,7 @@ struct IfConditionIsScalar : public IfFunctionalBase { struct IfConditionIsDynamic : public IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 3, "Incorrect test case! Number of inputs is not 3."); OPENVINO_ASSERT(results.size() == 1, "Incorrect test case! Number of outputs is not 1."); @@ -318,97 +318,117 @@ INSTANTIATE_TEST_SUITE_P( smoke_If_With_Hardcoded_Refs, ReferenceIfLayerTest, ::testing::Values( - IfParams( - std::make_shared(true), - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, - "if_condition_const_is_true"), - IfParams( - std::make_shared(false), - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0})}, - "if_condition_const_is_false"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{1}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 6.0, 12.0})}, - "if_condition_si_non_const_true"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, - "if_condition_is_non_const_false"), + IfParams(std::make_shared(true), + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, + "if_condition_const_is_true"), + IfParams(std::make_shared(false), + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0})}, + "if_condition_const_is_false"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{1}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{reference_tests::Tensor(Shape{1, 2, 2}, + ov::element::f32, + std::vector{2.0, 2.0, 6.0, 12.0})}, + "if_condition_si_non_const_true"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, + "if_condition_is_non_const_false"), IfParams(std::make_shared(), - std::vector{reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{1})}, - std::vector{reference_tests::Tensor(Shape{1}, ov::element::f32, std::vector{8.0})}, + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{1})}, + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::f32, std::vector{8.0})}, "if_without_addition_inputs_condition_is_true"), IfParams(std::make_shared(), - std::vector{reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{0})}, - std::vector{reference_tests::Tensor(Shape{1}, ov::element::f32, std::vector{2.0})}, + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{0})}, + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::f32, std::vector{2.0})}, "if_without_addition_inputs_condition_is_false"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 6.0, 12.0})}, - "if_condition_is_scalar_cond_true"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, - "if_condition_is_scalar_cond_false"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen()), - reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 4.0, 9.0, 16.0}), - reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen())}, - "If_dynamism_case_with_static_inputs_condition_true"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen()), - reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 4.0, 6.0, 8.0}), - reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, - "If_dynamism_case_with_static_inputs_condition_false"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 6.0, 12.0})}, - "if_condition_is_dynamic_cond_true"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, - "if_condition_is_dynamic_cond_false"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 6.0, 12.0})}, - "if_dynamic_inputs_cond_true"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, - "if_dynamic_inputs_cond_false"))); + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{reference_tests::Tensor(Shape{1, 2, 2}, + ov::element::f32, + std::vector{2.0, 2.0, 6.0, 12.0})}, + "if_condition_is_scalar_cond_true"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, + "if_condition_is_scalar_cond_false"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen()), + reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 4.0, 9.0, 16.0}), + reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen())}, + "If_dynamism_case_with_static_inputs_condition_true"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen()), + reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 4.0, 6.0, 8.0}), + reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, + "If_dynamism_case_with_static_inputs_condition_false"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{reference_tests::Tensor(Shape{1, 2, 2}, + ov::element::f32, + std::vector{2.0, 2.0, 6.0, 12.0})}, + "if_condition_is_dynamic_cond_true"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, + "if_condition_is_dynamic_cond_false"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{reference_tests::Tensor(Shape{1, 2, 2}, + ov::element::f32, + std::vector{2.0, 2.0, 6.0, 12.0})}, + "if_dynamic_inputs_cond_true"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, + "if_dynamic_inputs_cond_false"))); diff --git a/src/plugins/template/tests/functional/op_reference/irdft.cpp b/src/plugins/template/tests/functional/op_reference/irdft.cpp index 006deb031aca9b..e10224b785ec56 100644 --- a/src/plugins/template/tests/functional/op_reference/irdft.cpp +++ b/src/plugins/template/tests/functional/op_reference/irdft.cpp @@ -2,12 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/irdft.hpp" + #include + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/irdft.hpp" using namespace reference_tests; using namespace ov; @@ -91,439 +93,371 @@ TEST_P(ReferenceIRDFTLayerTest, CompareWithHardcodedRefs) { } static const std::vector input_data_1 = { - 4.6657147, -1.1622906e-06, 0.21456887, -0.14946258, -0.20476034, -0.37063062, - -0.31414136, 0.5099413, -1.1779613, 0.07057127, -0.64047664, -1.0058284e-07, - 4.982774, -1.1771917e-06, 0.6607505, 0.18829148, -0.9772357, 1.4243596, - 0.8640026, 0.34923682, 0.33401352, 0.25859502, -0.7548928, 8.940697e-08, - 5.9711604, -1.4901161e-06, 0.5638976, 1.5429841, -0.52065414, 0.24638398, - -0.27140495, 0.5040715, 0.5360231, 0.3234269, -0.36054826, 1.7508864e-07, - 4.7464237, -1.2218952e-06, -0.29650804, 0.80609477, -0.161426, 1.0022418, - -0.50812817, 0.7967348, 0.4394225, -0.1588624, -1.3835809, -7.4505806e-08, - 5.53836, -1.7136335e-06, -0.38635445, 0.8284859, -0.23278837, -0.63777345, - -0.93614054, 0.3215857, -0.14075133, -0.67071164, -1.4772836, 2.0861626e-07, - 5.0798974, -1.5944242e-06, 0.056767445, 0.03468219, -0.1497254, -0.9672509, - 0.2603209, 0.69644475, -0.9208536, 0.006730467, -1.7552528, 2.682209e-07, - 4.893558, -1.6242266e-06, 0.6719861, -0.13982919, 0.064845346, -0.39896214, - 0.21785057, -0.5099982, -0.65526295, 1.4383471, -0.52023906, 2.5331974e-07, - 6.687699, -1.5497208e-06, -0.7423769, 0.09968524, 1.052381, -0.21306956, - 0.5875206, -0.3038844, 0.3991575, -1.1895186, 0.17579001, 3.874302e-07, - 5.2818384, -1.1026859e-06, 0.5087582, 0.106959194, 1.1816688, -0.87592727, - 0.03740315, 0.5197907, -1.3198637, 0.6398836, 0.22712436, 2.2351742e-08, - 5.0190897, -1.5646219e-06, -0.087282926, 0.50819266, -0.28002462, 0.29240948, - -0.32303664, 0.38377762, -0.0051696897, -0.99301195, -2.189299, 2.0861626e-07, - 5.0545654, -1.5795231e-06, 0.9146397, 0.83839166, 0.870533, 0.17405808, - -0.56308234, -0.7806684, 0.26397777, 0.6880482, -1.4183462, 2.682209e-07, - 5.479953, -1.2665987e-06, 0.49444157, 0.7534672, -0.76784146, -0.4507342, - 0.88815784, 0.6985409, -0.2727425, -0.25027415, -0.7328796, 2.682209e-07, - 4.1296124, -5.662441e-07, -0.46133032, 0.30635798, -0.18225375, 0.42515472, - -0.5484285, 0.9704039, -0.35255045, 0.17549685, 0.8870368, -3.1292439e-07, - 4.8632016, -1.8924475e-06, -0.6926452, 0.025076404, -0.039108217, -1.7492937, - -0.8120377, -0.85315156, -0.0022608787, 0.45002514, -1.1024668, 3.501773e-07, - 5.4715447, -1.4901161e-06, 1.1176248, -0.2109062, -0.27492502, 0.08983741, - 1.1903813, -1.007312, -0.20150042, -0.83919466, -0.23939973, 4.917383e-07, - 5.1267176, -9.983778e-07, -0.44803134, -0.8066604, -0.3435102, -0.41692197, - -0.22457689, -0.1076939, -0.29129186, -1.1880502, 0.9255183, -1.6391277e-07, - 3.8495903, -5.5134296e-07, 0.09505272, -0.12751618, -1.1264827, 0.5068884, - -1.055237, -0.19516481, -0.34035242, -0.15379356, 1.2655814, -2.6077032e-07, - 4.4372616, -9.23872e-07, -0.72962606, -0.23475963, -0.04278487, 1.1032158, - -0.558924, -0.5300043, 1.0578637, -0.2466627, 0.44617313, -7.8231096e-08, - 5.5374002, -1.4156103e-06, 0.016273111, -0.5989829, -0.19913958, 0.013256833, - 1.8512837, 0.14526272, -0.39700353, -0.07573915, 0.23181, 2.9429793e-07, - 4.989425, -1.4901161e-06, 1.0391837, 0.16554561, -0.22647032, -1.0689808, - -0.84556, -0.82779336, 0.9430445, 0.37618563, 0.4684292, -9.685755e-08}; + 4.6657147, -1.1622906e-06, 0.21456887, -0.14946258, -0.20476034, -0.37063062, -0.31414136, + 0.5099413, -1.1779613, 0.07057127, -0.64047664, -1.0058284e-07, 4.982774, -1.1771917e-06, + 0.6607505, 0.18829148, -0.9772357, 1.4243596, 0.8640026, 0.34923682, 0.33401352, + 0.25859502, -0.7548928, 8.940697e-08, 5.9711604, -1.4901161e-06, 0.5638976, 1.5429841, + -0.52065414, 0.24638398, -0.27140495, 0.5040715, 0.5360231, 0.3234269, -0.36054826, + 1.7508864e-07, 4.7464237, -1.2218952e-06, -0.29650804, 0.80609477, -0.161426, 1.0022418, + -0.50812817, 0.7967348, 0.4394225, -0.1588624, -1.3835809, -7.4505806e-08, 5.53836, + -1.7136335e-06, -0.38635445, 0.8284859, -0.23278837, -0.63777345, -0.93614054, 0.3215857, + -0.14075133, -0.67071164, -1.4772836, 2.0861626e-07, 5.0798974, -1.5944242e-06, 0.056767445, + 0.03468219, -0.1497254, -0.9672509, 0.2603209, 0.69644475, -0.9208536, 0.006730467, + -1.7552528, 2.682209e-07, 4.893558, -1.6242266e-06, 0.6719861, -0.13982919, 0.064845346, + -0.39896214, 0.21785057, -0.5099982, -0.65526295, 1.4383471, -0.52023906, 2.5331974e-07, + 6.687699, -1.5497208e-06, -0.7423769, 0.09968524, 1.052381, -0.21306956, 0.5875206, + -0.3038844, 0.3991575, -1.1895186, 0.17579001, 3.874302e-07, 5.2818384, -1.1026859e-06, + 0.5087582, 0.106959194, 1.1816688, -0.87592727, 0.03740315, 0.5197907, -1.3198637, + 0.6398836, 0.22712436, 2.2351742e-08, 5.0190897, -1.5646219e-06, -0.087282926, 0.50819266, + -0.28002462, 0.29240948, -0.32303664, 0.38377762, -0.0051696897, -0.99301195, -2.189299, + 2.0861626e-07, 5.0545654, -1.5795231e-06, 0.9146397, 0.83839166, 0.870533, 0.17405808, + -0.56308234, -0.7806684, 0.26397777, 0.6880482, -1.4183462, 2.682209e-07, 5.479953, + -1.2665987e-06, 0.49444157, 0.7534672, -0.76784146, -0.4507342, 0.88815784, 0.6985409, + -0.2727425, -0.25027415, -0.7328796, 2.682209e-07, 4.1296124, -5.662441e-07, -0.46133032, + 0.30635798, -0.18225375, 0.42515472, -0.5484285, 0.9704039, -0.35255045, 0.17549685, + 0.8870368, -3.1292439e-07, 4.8632016, -1.8924475e-06, -0.6926452, 0.025076404, -0.039108217, + -1.7492937, -0.8120377, -0.85315156, -0.0022608787, 0.45002514, -1.1024668, 3.501773e-07, + 5.4715447, -1.4901161e-06, 1.1176248, -0.2109062, -0.27492502, 0.08983741, 1.1903813, + -1.007312, -0.20150042, -0.83919466, -0.23939973, 4.917383e-07, 5.1267176, -9.983778e-07, + -0.44803134, -0.8066604, -0.3435102, -0.41692197, -0.22457689, -0.1076939, -0.29129186, + -1.1880502, 0.9255183, -1.6391277e-07, 3.8495903, -5.5134296e-07, 0.09505272, -0.12751618, + -1.1264827, 0.5068884, -1.055237, -0.19516481, -0.34035242, -0.15379356, 1.2655814, + -2.6077032e-07, 4.4372616, -9.23872e-07, -0.72962606, -0.23475963, -0.04278487, 1.1032158, + -0.558924, -0.5300043, 1.0578637, -0.2466627, 0.44617313, -7.8231096e-08, 5.5374002, + -1.4156103e-06, 0.016273111, -0.5989829, -0.19913958, 0.013256833, 1.8512837, 0.14526272, + -0.39700353, -0.07573915, 0.23181, 2.9429793e-07, 4.989425, -1.4901161e-06, 1.0391837, + 0.16554561, -0.22647032, -1.0689808, -0.84556, -0.82779336, 0.9430445, 0.37618563, + 0.4684292, -9.685755e-08}; static const std::vector expected_irdft1d_results_1 = { - 0.10606491, 0.7454715, 0.57231355, 0.4582412, 0.3847059, 0.27398932, 0.66796243, 0.395475, - 0.2815729, 0.7799197, 0.59909415, 0.12294636, 0.38957402, 0.97498834, 0.46759892, 0.14017141, - 0.04206858, 0.7279963, 0.61560553, 0.9027321, 0.6226334, 0.2601217, 0.5555177, 0.40498647, - 0.14175586, 0.57774633, 0.52652127, 0.9385691, 0.9588788, 0.9844318, 0.23095612, 0.09707925, - 0.24574867, 0.6907577, 0.1974319, 0.8295272, 0.34612727, 0.51401484, 0.66115797, 0.9336245, - 0.06690067, 0.7468897, 0.39028263, 0.53575844, 0.060429193, 0.8913558, 0.77787375, 0.6701197, - 0.7350527, 0.6636995, 0.18176624, 0.8629976, 0.45142895, 0.6497297, 0.159372, 0.40598175, - 0.7988516, 0.7291543, 0.07090418, 0.7697132, 0.4972157, 0.7669217, 0.67975855, 0.13026066, - 0.6587437, 0.24532892, 0.24545169, 0.83795583, 0.105490535, 0.7264323, 0.94568557, 0.7216649, - 0.14389831, 0.7930531, 0.70895344, 0.9724701, 0.9775157, 0.49999878, 0.65569246, 0.26876843, - 0.63248956, 0.85201293, 0.5689624, 0.023386303, 0.5546464, 0.36860028, 0.9603114, 0.39123482, - 0.0380728, 0.89212376, 0.14387614, 0.63858676, 0.10003748, 0.8906635, 0.06681054, 0.7458642, - 0.45452347, 0.54724604, 0.6496482, 0.7818356, 0.6608355, 0.77711326, 0.24588613, 0.013456763, - 0.355845, 0.80388206, 0.027993264, 0.73677206, 0.52755004, 0.9052324, 0.54311025, 0.5367805, - 0.4131242, 0.7752338, 0.109669454, 0.13664648, 0.7828739, 0.9083969, 0.5247593, 0.7493595, - 0.19275227, 0.007190853, 0.6087981, 0.344136, 0.46909887, 0.41924855, 0.7072913, 0.19932869, - 0.5303847, 0.651384, 0.06686331, 0.9717932, 0.65702224, 0.11786682, 0.3154073, 0.88923013, - 0.5564087, 0.91047823, 0.28466642, 0.0934668, 0.88953066, 0.9919338, 0.18322521, 0.8185455, - 0.566391, 0.014207997, 0.29673064, 0.6347744, 0.6801958, 0.39601147, 0.34374171, 0.7216888, - 0.6152569, 0.76679546, 0.5860851, 0.4276813, 0.79339284, 0.13130653, 0.68764234, 0.053128112, - 0.02611321, 0.2982243, 0.7618372, 0.3331729, 0.5468192, 0.15707079, 0.28592056, 0.15286565, - 0.9368963, 0.350671, 0.4336494, 0.08934934, 0.41172776, 0.5850259, 0.70730376, 0.8598349, - 0.088788144, 0.26711187, 0.8002491, 0.19422275, 0.8312039, 0.5198718, 0.40111357, 0.98375803, - 0.77703434, 0.037818834, 0.704231, 0.689808, 0.17102319, 0.42153922, 0.7278252, 0.8030207, - 0.9101717, 0.0199644, 0.13768466, 0.55669, 0.17991355, 0.6720098, 0.7733328, 0.20881335}; - -static const std::vector input_data_2 = { - 2.266797, -8.195639e-08, -0.37842733, -0.41015846, -0.48980892, -0.10356337, - 2.5542018, -2.2351742e-08, -0.3223713, 0.671882, 0.54300576, -0.35418037, - 1.985015, -2.2351742e-08, -0.030243821, -0.20105253, 0.59431964, 0.07358998, - 1.4619737, -7.450581e-09, -0.4356845, 0.35701087, 0.28208786, -0.36424285, - 1.8002605, -1.1920929e-07, -0.43280697, -0.56735414, -0.30007166, -0.541847, - 2.3052943, -1.2293458e-07, -0.39316025, -0.5526293, -0.30507135, -0.6021758, - 2.7329001, -6.7055225e-08, 0.28245124, -0.42586988, -0.40586215, 0.4590181, - 3.3132548, -5.9604645e-08, 0.6297612, 0.3694744, 0.077824846, -0.6248544, - 2.6314974, -2.9802322e-08, 0.58795106, -0.60349375, -0.3224758, 0.34408605, - 1.8399743, -9.685755e-08, -0.43963802, -0.079073176, -0.120658875, -1.0880115, - 2.0531366, -4.4703484e-08, 0.80112594, -0.53726834, -0.17560546, -0.026561722, - 2.3779182, -9.685755e-08, -0.21852754, -0.19336401, 0.38734403, -0.5954362, - 1.6219761, 7.450581e-09, -0.43100592, 0.28373614, 0.101898566, 0.52321124, - 2.128953, -1.4901161e-07, -0.1622684, -0.94116735, -0.7350497, 0.12695336, - 3.449626, -8.940697e-08, 0.56062996, -0.031283244, -0.06161648, -0.8543532, - 3.033568, -8.195639e-08, -0.37023768, -0.03989461, -0.28719214, -0.22382751, - 1.9661667, -1.4901161e-08, -0.59863573, -0.015534669, -0.31916466, 0.55380434, - 2.227056, -5.2154064e-08, -0.12656188, 0.6895717, 0.097157195, 0.19840825, - 3.5129817, -2.1234155e-07, 0.11158541, 0.5870459, 0.20993343, -0.40297145, - 2.5986667, 0.0, 0.26602313, -1.1560227, 0.2542065, 0.45556274}; + 0.10606491, 0.7454715, 0.57231355, 0.4582412, 0.3847059, 0.27398932, 0.66796243, 0.395475, 0.2815729, + 0.7799197, 0.59909415, 0.12294636, 0.38957402, 0.97498834, 0.46759892, 0.14017141, 0.04206858, 0.7279963, + 0.61560553, 0.9027321, 0.6226334, 0.2601217, 0.5555177, 0.40498647, 0.14175586, 0.57774633, 0.52652127, + 0.9385691, 0.9588788, 0.9844318, 0.23095612, 0.09707925, 0.24574867, 0.6907577, 0.1974319, 0.8295272, + 0.34612727, 0.51401484, 0.66115797, 0.9336245, 0.06690067, 0.7468897, 0.39028263, 0.53575844, 0.060429193, + 0.8913558, 0.77787375, 0.6701197, 0.7350527, 0.6636995, 0.18176624, 0.8629976, 0.45142895, 0.6497297, + 0.159372, 0.40598175, 0.7988516, 0.7291543, 0.07090418, 0.7697132, 0.4972157, 0.7669217, 0.67975855, + 0.13026066, 0.6587437, 0.24532892, 0.24545169, 0.83795583, 0.105490535, 0.7264323, 0.94568557, 0.7216649, + 0.14389831, 0.7930531, 0.70895344, 0.9724701, 0.9775157, 0.49999878, 0.65569246, 0.26876843, 0.63248956, + 0.85201293, 0.5689624, 0.023386303, 0.5546464, 0.36860028, 0.9603114, 0.39123482, 0.0380728, 0.89212376, + 0.14387614, 0.63858676, 0.10003748, 0.8906635, 0.06681054, 0.7458642, 0.45452347, 0.54724604, 0.6496482, + 0.7818356, 0.6608355, 0.77711326, 0.24588613, 0.013456763, 0.355845, 0.80388206, 0.027993264, 0.73677206, + 0.52755004, 0.9052324, 0.54311025, 0.5367805, 0.4131242, 0.7752338, 0.109669454, 0.13664648, 0.7828739, + 0.9083969, 0.5247593, 0.7493595, 0.19275227, 0.007190853, 0.6087981, 0.344136, 0.46909887, 0.41924855, + 0.7072913, 0.19932869, 0.5303847, 0.651384, 0.06686331, 0.9717932, 0.65702224, 0.11786682, 0.3154073, + 0.88923013, 0.5564087, 0.91047823, 0.28466642, 0.0934668, 0.88953066, 0.9919338, 0.18322521, 0.8185455, + 0.566391, 0.014207997, 0.29673064, 0.6347744, 0.6801958, 0.39601147, 0.34374171, 0.7216888, 0.6152569, + 0.76679546, 0.5860851, 0.4276813, 0.79339284, 0.13130653, 0.68764234, 0.053128112, 0.02611321, 0.2982243, + 0.7618372, 0.3331729, 0.5468192, 0.15707079, 0.28592056, 0.15286565, 0.9368963, 0.350671, 0.4336494, + 0.08934934, 0.41172776, 0.5850259, 0.70730376, 0.8598349, 0.088788144, 0.26711187, 0.8002491, 0.19422275, + 0.8312039, 0.5198718, 0.40111357, 0.98375803, 0.77703434, 0.037818834, 0.704231, 0.689808, 0.17102319, + 0.42153922, 0.7278252, 0.8030207, 0.9101717, 0.0199644, 0.13768466, 0.55669, 0.17991355, 0.6720098, + 0.7733328, 0.20881335}; + +static const std::vector input_data_2 = {2.266797, -8.195639e-08, -0.37842733, -0.41015846, + -0.48980892, -0.10356337, 2.5542018, -2.2351742e-08, + -0.3223713, 0.671882, 0.54300576, -0.35418037, + 1.985015, -2.2351742e-08, -0.030243821, -0.20105253, + 0.59431964, 0.07358998, 1.4619737, -7.450581e-09, + -0.4356845, 0.35701087, 0.28208786, -0.36424285, + 1.8002605, -1.1920929e-07, -0.43280697, -0.56735414, + -0.30007166, -0.541847, 2.3052943, -1.2293458e-07, + -0.39316025, -0.5526293, -0.30507135, -0.6021758, + 2.7329001, -6.7055225e-08, 0.28245124, -0.42586988, + -0.40586215, 0.4590181, 3.3132548, -5.9604645e-08, + 0.6297612, 0.3694744, 0.077824846, -0.6248544, + 2.6314974, -2.9802322e-08, 0.58795106, -0.60349375, + -0.3224758, 0.34408605, 1.8399743, -9.685755e-08, + -0.43963802, -0.079073176, -0.120658875, -1.0880115, + 2.0531366, -4.4703484e-08, 0.80112594, -0.53726834, + -0.17560546, -0.026561722, 2.3779182, -9.685755e-08, + -0.21852754, -0.19336401, 0.38734403, -0.5954362, + 1.6219761, 7.450581e-09, -0.43100592, 0.28373614, + 0.101898566, 0.52321124, 2.128953, -1.4901161e-07, + -0.1622684, -0.94116735, -0.7350497, 0.12695336, + 3.449626, -8.940697e-08, 0.56062996, -0.031283244, + -0.06161648, -0.8543532, 3.033568, -8.195639e-08, + -0.37023768, -0.03989461, -0.28719214, -0.22382751, + 1.9661667, -1.4901161e-08, -0.59863573, -0.015534669, + -0.31916466, 0.55380434, 2.227056, -5.2154064e-08, + -0.12656188, 0.6895717, 0.097157195, 0.19840825, + 3.5129817, -2.1234155e-07, 0.11158541, 0.5870459, + 0.20993343, -0.40297145, 2.5986667, 0.0, + 0.26602313, -1.1560227, 0.2542065, 0.45556274}; static const std::vector expected_irdft1d_results_2 = { - 0.10606494, 0.7454715, 0.5723136, 0.45824113, 0.38470596, 0.59909415, 0.12294642, - 0.38957405, 0.9749881, 0.46759906, 0.62263334, 0.26012173, 0.5555176, 0.40498644, - 0.14175594, 0.23095612, 0.097079255, 0.24574867, 0.6907576, 0.197432, 0.066900685, - 0.7468896, 0.39028254, 0.5357583, 0.0604293, 0.18176621, 0.8629975, 0.45142898, - 0.64972955, 0.15937212, 0.49721566, 0.7669216, 0.6797584, 0.13026062, 0.6587438, - 0.9456854, 0.7216646, 0.14389832, 0.7930529, 0.7089534, 0.6324895, 0.85201263, - 0.5689623, 0.023386315, 0.55464643, 0.1438762, 0.63858664, 0.10003753, 0.8906633, - 0.06681056, 0.66083544, 0.7771131, 0.24588616, 0.013456774, 0.35584506, 0.54311025, - 0.53678054, 0.41312417, 0.7752337, 0.10966951, 0.19275223, 0.007190934, 0.608798, - 0.344136, 0.46909887, 0.06686333, 0.971793, 0.65702224, 0.117866985, 0.31540743, - 0.8895306, 0.99193364, 0.18322523, 0.81854534, 0.5663911, 0.34374166, 0.72168875, - 0.6152569, 0.7667953, 0.58608514, 0.026113158, 0.2982243, 0.76183707, 0.3331729, - 0.5468192, 0.43364936, 0.089349344, 0.41172776, 0.5850257, 0.7073037, 0.8312039, - 0.5198719, 0.4011136, 0.9837578, 0.7770344, 0.72782516, 0.8030205, 0.9101716, - 0.019964492, 0.13768478}; + 0.10606494, 0.7454715, 0.5723136, 0.45824113, 0.38470596, 0.59909415, 0.12294642, 0.38957405, 0.9749881, + 0.46759906, 0.62263334, 0.26012173, 0.5555176, 0.40498644, 0.14175594, 0.23095612, 0.097079255, 0.24574867, + 0.6907576, 0.197432, 0.066900685, 0.7468896, 0.39028254, 0.5357583, 0.0604293, 0.18176621, 0.8629975, + 0.45142898, 0.64972955, 0.15937212, 0.49721566, 0.7669216, 0.6797584, 0.13026062, 0.6587438, 0.9456854, + 0.7216646, 0.14389832, 0.7930529, 0.7089534, 0.6324895, 0.85201263, 0.5689623, 0.023386315, 0.55464643, + 0.1438762, 0.63858664, 0.10003753, 0.8906633, 0.06681056, 0.66083544, 0.7771131, 0.24588616, 0.013456774, + 0.35584506, 0.54311025, 0.53678054, 0.41312417, 0.7752337, 0.10966951, 0.19275223, 0.007190934, 0.608798, + 0.344136, 0.46909887, 0.06686333, 0.971793, 0.65702224, 0.117866985, 0.31540743, 0.8895306, 0.99193364, + 0.18322523, 0.81854534, 0.5663911, 0.34374166, 0.72168875, 0.6152569, 0.7667953, 0.58608514, 0.026113158, + 0.2982243, 0.76183707, 0.3331729, 0.5468192, 0.43364936, 0.089349344, 0.41172776, 0.5850257, 0.7073037, + 0.8312039, 0.5198719, 0.4011136, 0.9837578, 0.7770344, 0.72782516, 0.8030205, 0.9101716, 0.019964492, + 0.13768478}; static const std::vector input_data_3 = { - 4.665715, -1.6093254e-06, -0.5430559, -0.5752678, -0.37596112, -1.1571281, - -0.46793216, -0.94566363, 0.6854232, -0.3444838, -0.674704, 0.5946392, - -0.64047587, 1.3560057e-06, 4.9827743, -1.7434359e-06, -0.43517, -0.049020194, - -1.4773891, -1.0811031, 1.2506557, 0.5371344, 1.2869358, -0.14998645, - 0.8555907, 0.3693859, -0.7548918, 1.5944242e-06, 5.971161, -1.5199184e-06, - -1.2643411, 0.85635287, -0.1801207, -1.7264944, 0.6412285, -0.4787441, - 0.82227707, 0.65098876, 0.9114491, 0.40323836, -0.36054718, 1.2852252e-06, - 4.7464237, -1.66893e-06, -1.5010594, 0.2253451, -0.87915635, -0.4252541, - 0.4976693, -0.6554581, 0.928985, 0.8035921, 0.6578763, -0.15220329, - -1.3835799, 1.0430813e-06, 5.5383606, -1.4901161e-06, -1.619024, -0.10987502, - 0.20661727, -1.3774645, -0.3057741, -1.0960662, 0.2971667, 0.46700704, - -0.20812088, -0.602368, -1.4772825, 9.3877316e-07, 5.0798974, -1.758337e-06, - -0.7421876, -0.61749315, 0.21938956, -1.3415859, -0.838238, -0.6598083, - 1.0601404, -0.7129184, -0.27083004, 0.31763482, -1.7552516, 1.4677644e-06, - 4.893558, -1.4975667e-06, -0.06445231, -0.55879503, 0.08908144, -1.2869594, - 0.33623943, -0.7704663, -0.047739983, -1.0678453, 0.48350462, 1.5768427, - -0.52023804, 1.1697412e-06, 6.687699, -1.3113022e-06, -1.292419, -1.2920969, - 1.2041754, -0.2943018, 1.1889167, -0.66985166, 1.1336832, -0.13731277, - 0.008011267, -0.9506076, 0.1757915, 1.1026859e-06, 5.2818394, -1.4305115e-06, - -0.25987166, -0.48605326, 0.90237427, -0.8028362, -0.3040653, -1.6981151, - 1.1215456, -0.7120959, -0.4195284, 1.3941492, 0.22712523, 8.046627e-07, - 5.01909, -1.7881393e-06, -1.1856917, -0.10931289, -0.5164983, -0.9724103, - 0.30577338, -0.72837675, 0.89680094, 0.21036407, -0.052024096, -0.9455472, - -2.1892984, 1.4305115e-06, 5.054565, -1.5050173e-06, -0.3471575, 0.40542153, - 0.36438322, -0.9765247, 1.2703501, -1.7359983, -0.1160066, -0.25323528, - 0.9753329, 0.5339062, -1.418345, 9.834766e-07, 5.4799523, -1.7285347e-06, - -0.7905842, 0.093313254, 0.068526804, -1.8504739, -0.01845923, 0.26084417, - 1.5358877, -0.4159652, 0.089752786, 0.089908056, -0.7328786, 1.4007092e-06, - 4.129612, -9.536743e-07, -1.2393575, -0.28046644, -0.58673245, -0.39608067, - -0.12385368, -0.53435826, 0.77853805, 0.7645384, -0.18040559, 0.6678516, - 0.88703763, 8.046627e-07, 4.8632016, -1.0430813e-06, -1.1780663, -1.0952923, - 1.1691413, -1.4023741, -0.546494, -0.92614484, -1.1796933, -0.31762218, - 0.25592417, 0.0959474, -1.1024656, 1.013279e-06, 5.471545, -1.6987324e-06, - 0.35812324, -0.66833705, 0.07725692, -1.6537004, 1.6561611, 0.051166296, - 0.865453, -1.1392289, -0.23588535, -0.5480979, -0.2393986, 1.3411045e-06, - 5.126718, -9.23872e-07, -0.6379836, -1.6675751, 0.013057679, -0.9891113, - 0.20881936, -0.30439606, 0.37222707, 0.25244698, -0.9197892, -0.77782196, - 0.9255192, 1.1101365e-06, 3.8495903, -7.4505806e-07, -0.63088936, -0.4556699, - -1.1905057, -1.2522144, 0.46207082, -0.31992733, -0.4309795, 0.74295896, - -0.6106033, 0.18823686, 1.2655822, 7.748604e-07, 4.4372616, -7.0780516e-07, - -1.1016369, -1.0079124, -0.6083025, -0.0011255145, 1.4406854, -0.2912693, - -0.26610214, 0.87299407, 0.69553405, -0.45576566, 0.44617438, 7.4505806e-07, - 5.5374007, -1.5944242e-06, -0.32642078, -1.3683549, 0.079301864, -0.83741367, - 0.67391664, 0.69433576, 1.6423957, -1.1923066, 0.0334223, 0.37603495, - 0.23181117, 1.4156103e-06, 4.9894247, -7.748604e-07, 0.1788401, -0.39274544, - 0.78422666, -2.1340246, 0.5487572, -0.8765497, -0.7899384, 0.5434137, - 0.91613716, 0.08274247, 0.46843058, 8.34465e-07}; + 4.665715, -1.6093254e-06, -0.5430559, -0.5752678, -0.37596112, -1.1571281, -0.46793216, + -0.94566363, 0.6854232, -0.3444838, -0.674704, 0.5946392, -0.64047587, 1.3560057e-06, + 4.9827743, -1.7434359e-06, -0.43517, -0.049020194, -1.4773891, -1.0811031, 1.2506557, + 0.5371344, 1.2869358, -0.14998645, 0.8555907, 0.3693859, -0.7548918, 1.5944242e-06, + 5.971161, -1.5199184e-06, -1.2643411, 0.85635287, -0.1801207, -1.7264944, 0.6412285, + -0.4787441, 0.82227707, 0.65098876, 0.9114491, 0.40323836, -0.36054718, 1.2852252e-06, + 4.7464237, -1.66893e-06, -1.5010594, 0.2253451, -0.87915635, -0.4252541, 0.4976693, + -0.6554581, 0.928985, 0.8035921, 0.6578763, -0.15220329, -1.3835799, 1.0430813e-06, + 5.5383606, -1.4901161e-06, -1.619024, -0.10987502, 0.20661727, -1.3774645, -0.3057741, + -1.0960662, 0.2971667, 0.46700704, -0.20812088, -0.602368, -1.4772825, 9.3877316e-07, + 5.0798974, -1.758337e-06, -0.7421876, -0.61749315, 0.21938956, -1.3415859, -0.838238, + -0.6598083, 1.0601404, -0.7129184, -0.27083004, 0.31763482, -1.7552516, 1.4677644e-06, + 4.893558, -1.4975667e-06, -0.06445231, -0.55879503, 0.08908144, -1.2869594, 0.33623943, + -0.7704663, -0.047739983, -1.0678453, 0.48350462, 1.5768427, -0.52023804, 1.1697412e-06, + 6.687699, -1.3113022e-06, -1.292419, -1.2920969, 1.2041754, -0.2943018, 1.1889167, + -0.66985166, 1.1336832, -0.13731277, 0.008011267, -0.9506076, 0.1757915, 1.1026859e-06, + 5.2818394, -1.4305115e-06, -0.25987166, -0.48605326, 0.90237427, -0.8028362, -0.3040653, + -1.6981151, 1.1215456, -0.7120959, -0.4195284, 1.3941492, 0.22712523, 8.046627e-07, + 5.01909, -1.7881393e-06, -1.1856917, -0.10931289, -0.5164983, -0.9724103, 0.30577338, + -0.72837675, 0.89680094, 0.21036407, -0.052024096, -0.9455472, -2.1892984, 1.4305115e-06, + 5.054565, -1.5050173e-06, -0.3471575, 0.40542153, 0.36438322, -0.9765247, 1.2703501, + -1.7359983, -0.1160066, -0.25323528, 0.9753329, 0.5339062, -1.418345, 9.834766e-07, + 5.4799523, -1.7285347e-06, -0.7905842, 0.093313254, 0.068526804, -1.8504739, -0.01845923, + 0.26084417, 1.5358877, -0.4159652, 0.089752786, 0.089908056, -0.7328786, 1.4007092e-06, + 4.129612, -9.536743e-07, -1.2393575, -0.28046644, -0.58673245, -0.39608067, -0.12385368, + -0.53435826, 0.77853805, 0.7645384, -0.18040559, 0.6678516, 0.88703763, 8.046627e-07, + 4.8632016, -1.0430813e-06, -1.1780663, -1.0952923, 1.1691413, -1.4023741, -0.546494, + -0.92614484, -1.1796933, -0.31762218, 0.25592417, 0.0959474, -1.1024656, 1.013279e-06, + 5.471545, -1.6987324e-06, 0.35812324, -0.66833705, 0.07725692, -1.6537004, 1.6561611, + 0.051166296, 0.865453, -1.1392289, -0.23588535, -0.5480979, -0.2393986, 1.3411045e-06, + 5.126718, -9.23872e-07, -0.6379836, -1.6675751, 0.013057679, -0.9891113, 0.20881936, + -0.30439606, 0.37222707, 0.25244698, -0.9197892, -0.77782196, 0.9255192, 1.1101365e-06, + 3.8495903, -7.4505806e-07, -0.63088936, -0.4556699, -1.1905057, -1.2522144, 0.46207082, + -0.31992733, -0.4309795, 0.74295896, -0.6106033, 0.18823686, 1.2655822, 7.748604e-07, + 4.4372616, -7.0780516e-07, -1.1016369, -1.0079124, -0.6083025, -0.0011255145, 1.4406854, + -0.2912693, -0.26610214, 0.87299407, 0.69553405, -0.45576566, 0.44617438, 7.4505806e-07, + 5.5374007, -1.5944242e-06, -0.32642078, -1.3683549, 0.079301864, -0.83741367, 0.67391664, + 0.69433576, 1.6423957, -1.1923066, 0.0334223, 0.37603495, 0.23181117, 1.4156103e-06, + 4.9894247, -7.748604e-07, 0.1788401, -0.39274544, 0.78422666, -2.1340246, 0.5487572, + -0.8765497, -0.7899384, 0.5434137, 0.91613716, 0.08274247, 0.46843058, 8.34465e-07}; static const std::vector expected_irdft1d_results_3 = { - 0.80091053, 1.548053, 1.3439665, 0.97278523, 0.65876126, 1.6395509, 1.0939313, - 1.5905306, 0.81558955, 1.1096439, 2.0799308, 1.9659967, 0.21628714, 1.2937224, - 1.7173465, 1.5190675, 0.62673247, 1.3878733, 2.2457566, 1.2779983, 0.9537279, - 1.5238736, 1.6959155, 0.9063804, 1.2134336, 1.4805167, 1.277886, 0.9217217, - 1.3267591, 2.0169291, 2.619178, 0.7248324, 1.4161175, 1.3378929, 1.6759893, - 0.85183966, 0.53280216, 1.4385536, 1.7184939, 1.3292406, 1.1811583, 0.9698347, - 1.5283158, 1.3752562, 0.99182767, 1.3061998, 1.7824118, 1.399513, 0.26604116, - 1.3193192, 1.5053986, 1.0388529, 0.9190526, 1.4711612, 2.0971189, 0.37586892, - 1.5662622, 1.6827406, 1.208139, 1.0144035, 0.96595216, 2.1122026, 1.6039357, - 0.44462752, 0.34932646, 1.487859, 0.9802158, 1.0321891, 0.4064213, 1.7653472, - 1.5080582, 0.75743484, 1.2409652, 2.0487022, 1.567386, 0.68034726, 1.5328329, - 1.2476723, 1.3539927, 0.8549268}; + 0.80091053, 1.548053, 1.3439665, 0.97278523, 0.65876126, 1.6395509, 1.0939313, 1.5905306, 0.81558955, + 1.1096439, 2.0799308, 1.9659967, 0.21628714, 1.2937224, 1.7173465, 1.5190675, 0.62673247, 1.3878733, + 2.2457566, 1.2779983, 0.9537279, 1.5238736, 1.6959155, 0.9063804, 1.2134336, 1.4805167, 1.277886, + 0.9217217, 1.3267591, 2.0169291, 2.619178, 0.7248324, 1.4161175, 1.3378929, 1.6759893, 0.85183966, + 0.53280216, 1.4385536, 1.7184939, 1.3292406, 1.1811583, 0.9698347, 1.5283158, 1.3752562, 0.99182767, + 1.3061998, 1.7824118, 1.399513, 0.26604116, 1.3193192, 1.5053986, 1.0388529, 0.9190526, 1.4711612, + 2.0971189, 0.37586892, 1.5662622, 1.6827406, 1.208139, 1.0144035, 0.96595216, 2.1122026, 1.6039357, + 0.44462752, 0.34932646, 1.487859, 0.9802158, 1.0321891, 0.4064213, 1.7653472, 1.5080582, 0.75743484, + 1.2409652, 2.0487022, 1.567386, 0.68034726, 1.5328329, 1.2476723, 1.3539927, 0.8549268}; static const std::vector input_data_4 = { - 52.8665, -2.9623508e-05, 1.1642078, 3.826082, -0.22771922, -0.49822173, -0.3857528, - 3.2676966, -2.5112464, -0.27454787, -8.678656, 3.7550926e-06, -0.818072, 0.8330209, - 3.4618711, -0.2419473, 1.7408192, 5.744002, 1.8477443, 2.039329, 0.3268112, - -2.7421296, 0.6809025, 1.7613728, -2.294264, -0.8984407, -0.2868184, -3.2426705, - -0.801461, -0.58971727, -1.463435, -2.5413132, 0.116907075, -0.5013529, -2.8377397, - -2.8455539, -0.13475686, -1.3145845, -2.2820292, -0.199, -0.056986623, 0.12560216, - -0.589707, -1.7577857, -0.5274223, -1.0395792, 0.53813136, -1.7159984, 0.22503978, - 2.902198, -1.8643543, -1.8789856, 2.1722724, -2.068454, 0.59446484, 0.6067899, - 1.5525781, 1.7612485, 1.1877432, -0.48152098, -0.16525066, 1.5497208e-06, 1.9815066, - 0.55218977, 0.80434155, -3.575598, -2.1471107, -0.57691807, -3.004384, 3.8775828, - 3.1358109, -6.2584877e-07, 0.22504184, -2.9021916, 1.0378464, 0.9877456, 0.38395065, - -1.6089694, -0.5107449, 1.8621777, -4.960479, -1.8983803, 1.187743, 0.48151842, - -0.1347583, 1.3145843, -0.9968031, -1.3782079, 0.9922035, 1.6614089, -0.83039653, - -0.043888614, 1.9431384, -1.6448143, 0.5381324, 1.7159982, -2.2942696, 0.8984335, - 1.3057998, -0.26607463, -3.2994738, -1.9240448, 1.4963659, 2.8365738, -4.691832, - 1.2995429, -2.8377357, 2.8455553, -0.8180722, -0.8330165, -1.3755352, 0.34623986, - -3.7555497, -0.9723124, -1.1528367, -0.593254, -0.023679793, 1.8681414, 0.6809023, - -1.7613728, 48.939255, -2.4735928e-05, 1.3455832, 0.11001387, -2.3319814, -1.3735183, - -0.6780232, -2.4875786, 0.40718403, -1.0639579, 0.7314569, -1.2665987e-07, 0.97006464, - -0.30789328, 3.3290033, 2.7749023, -0.7520597, -0.98800826, 1.3100916, 1.1514524, - 1.1085359, 4.348257, -2.839456, 2.4404035, 0.9518837, 2.1538901, 3.8438358, - 2.410589, 3.0649068, 0.95690995, 2.2213395, 0.66509914, -0.4409917, -0.37408838, - -0.6316552, -1.5842111, -0.72352415, -2.5862057, 0.2678757, 0.610149, 2.9564474, - 0.08470708, -2.0889034, -8.370071, -0.16373271, 2.0413866, -3.3811545, 2.0487003, - 0.0316903, -1.078939, -2.5515578, -0.16135174, -0.17406325, 1.2709827, -0.67006403, - -1.6342779, 0.42163712, 2.1418998, -0.96614444, 1.9175051, -0.8538456, 2.8014183e-06, - 2.0189362, 0.30467552, 0.5074463, 3.7919073, 2.427857, 0.7526233, -2.4620402, - 0.65359443, 0.7219074, -2.3841858e-07, 0.03169757, 1.0789458, -2.1129081, -1.0250417, - 4.8181386, -0.39162922, -1.2349386, 1.8470186, -0.49495277, -1.5516026, -0.96614635, - -1.9175065, -0.7235237, 2.5862021, 0.677946, 2.0370173, -0.29536027, 0.6505451, - -2.8572361, 2.3176546, 3.4459226, 1.1869265, -3.3811545, -2.048697, 0.95187366, - -2.1538982, 1.808088, -1.1755496, -2.7418838, -1.6770658, -3.5766084, -2.8320727, - -0.02944839, -1.6522555, -0.63165283, 1.5842092, 0.9700667, 0.30789307, 0.5195943, - 2.4985125, 3.6537378, -0.5842519, -0.4843334, 0.78346854, 0.84766304, 1.1503224, - -2.839459, -2.440402}; + 52.8665, -2.9623508e-05, 1.1642078, 3.826082, -0.22771922, -0.49822173, -0.3857528, 3.2676966, + -2.5112464, -0.27454787, -8.678656, 3.7550926e-06, -0.818072, 0.8330209, 3.4618711, -0.2419473, + 1.7408192, 5.744002, 1.8477443, 2.039329, 0.3268112, -2.7421296, 0.6809025, 1.7613728, + -2.294264, -0.8984407, -0.2868184, -3.2426705, -0.801461, -0.58971727, -1.463435, -2.5413132, + 0.116907075, -0.5013529, -2.8377397, -2.8455539, -0.13475686, -1.3145845, -2.2820292, -0.199, + -0.056986623, 0.12560216, -0.589707, -1.7577857, -0.5274223, -1.0395792, 0.53813136, -1.7159984, + 0.22503978, 2.902198, -1.8643543, -1.8789856, 2.1722724, -2.068454, 0.59446484, 0.6067899, + 1.5525781, 1.7612485, 1.1877432, -0.48152098, -0.16525066, 1.5497208e-06, 1.9815066, 0.55218977, + 0.80434155, -3.575598, -2.1471107, -0.57691807, -3.004384, 3.8775828, 3.1358109, -6.2584877e-07, + 0.22504184, -2.9021916, 1.0378464, 0.9877456, 0.38395065, -1.6089694, -0.5107449, 1.8621777, + -4.960479, -1.8983803, 1.187743, 0.48151842, -0.1347583, 1.3145843, -0.9968031, -1.3782079, + 0.9922035, 1.6614089, -0.83039653, -0.043888614, 1.9431384, -1.6448143, 0.5381324, 1.7159982, + -2.2942696, 0.8984335, 1.3057998, -0.26607463, -3.2994738, -1.9240448, 1.4963659, 2.8365738, + -4.691832, 1.2995429, -2.8377357, 2.8455553, -0.8180722, -0.8330165, -1.3755352, 0.34623986, + -3.7555497, -0.9723124, -1.1528367, -0.593254, -0.023679793, 1.8681414, 0.6809023, -1.7613728, + 48.939255, -2.4735928e-05, 1.3455832, 0.11001387, -2.3319814, -1.3735183, -0.6780232, -2.4875786, + 0.40718403, -1.0639579, 0.7314569, -1.2665987e-07, 0.97006464, -0.30789328, 3.3290033, 2.7749023, + -0.7520597, -0.98800826, 1.3100916, 1.1514524, 1.1085359, 4.348257, -2.839456, 2.4404035, + 0.9518837, 2.1538901, 3.8438358, 2.410589, 3.0649068, 0.95690995, 2.2213395, 0.66509914, + -0.4409917, -0.37408838, -0.6316552, -1.5842111, -0.72352415, -2.5862057, 0.2678757, 0.610149, + 2.9564474, 0.08470708, -2.0889034, -8.370071, -0.16373271, 2.0413866, -3.3811545, 2.0487003, + 0.0316903, -1.078939, -2.5515578, -0.16135174, -0.17406325, 1.2709827, -0.67006403, -1.6342779, + 0.42163712, 2.1418998, -0.96614444, 1.9175051, -0.8538456, 2.8014183e-06, 2.0189362, 0.30467552, + 0.5074463, 3.7919073, 2.427857, 0.7526233, -2.4620402, 0.65359443, 0.7219074, -2.3841858e-07, + 0.03169757, 1.0789458, -2.1129081, -1.0250417, 4.8181386, -0.39162922, -1.2349386, 1.8470186, + -0.49495277, -1.5516026, -0.96614635, -1.9175065, -0.7235237, 2.5862021, 0.677946, 2.0370173, + -0.29536027, 0.6505451, -2.8572361, 2.3176546, 3.4459226, 1.1869265, -3.3811545, -2.048697, + 0.95187366, -2.1538982, 1.808088, -1.1755496, -2.7418838, -1.6770658, -3.5766084, -2.8320727, + -0.02944839, -1.6522555, -0.63165283, 1.5842092, 0.9700667, 0.30789307, 0.5195943, 2.4985125, + 3.6537378, -0.5842519, -0.4843334, 0.78346854, 0.84766304, 1.1503224, -2.839459, -2.440402}; static const std::vector input_data_5 = { - 25.904434, -8.46386e-06, -5.3626504, 0.3475349, -2.7060094, -5.767444, - 1.615847, -2.6387978, 4.020789, 1.4271183, 1.5420923, 0.6126925, - -4.6167765, 5.5730343e-06, -0.753784, -0.19148755, 1.4881928, -2.7645326, - -0.39467168, 1.014636, 0.5598, -1.7654291, -0.91835654, -2.3019042, - -0.49356225, -0.8411435, 0.080773115, -1.2883577, -0.5341466, 1.4913602, - -0.30008763, -0.5831754, 1.7365295, 1.821624, -0.08851206, -1.622279, - -0.27249795, -0.834725, -0.6706438, 0.4766277, 0.62642634, 0.5483514, - -0.5341469, -1.4913592, 0.8286207, 0.35826343, -1.0869694, -1.4876881, - -1.6723244, -0.06565219, 0.16255295, 0.5317876, -0.75649667, 1.2447717, - 0.6264261, -0.5483517, -0.7537827, 0.19148779, 0.6306459, -0.23442982, - 0.57131517, -1.366768, -2.7544713, 1.3638397, 0.43463084, -0.5446956, - -2.9949086, 1.4802479, 0.080771565, 1.2883584, 24.998875, -7.390976e-06, - -3.1970425, -1.5453612, 1.0925753, -6.279154, 2.237704, -2.8844912, - 1.8841789, -1.3615136, 0.90471864, 0.8395144, -2.6060505, 4.976988e-06, - 1.1634235, 0.42319643, 2.678257, 2.4692535, 0.34259582, 0.43598562, - 2.748452, 0.88622695, 2.2745323, -2.8840196, 1.8120161, -0.27884078, - -1.5445104, -0.7000726, -1.0264511, -0.7026249, -1.071573, 1.062395, - -0.64628685, -0.36214483, -0.5110928, -1.0534683, -2.786768, 2.6113648, - 0.94799054, 0.53423727, -0.69832724, 2.1821892, -1.0264513, 0.70262754, - -0.41705567, -0.17140968, 1.4991179, 2.9674625, -0.012362838, -3.8260121, - -1.5786235, -0.32526863, 1.2857957, 1.7469958, -0.6983267, -2.1821907, - 1.1634252, -0.42319855, 0.2716269, 0.21222934, -0.46608746, -1.6447732, - 1.8890494, -1.8022469, -0.37335354, 0.69326025, -0.07385725, -0.1723765, - -1.5445105, 0.7000739}; + 25.904434, -8.46386e-06, -5.3626504, 0.3475349, -2.7060094, -5.767444, 1.615847, -2.6387978, + 4.020789, 1.4271183, 1.5420923, 0.6126925, -4.6167765, 5.5730343e-06, -0.753784, -0.19148755, + 1.4881928, -2.7645326, -0.39467168, 1.014636, 0.5598, -1.7654291, -0.91835654, -2.3019042, + -0.49356225, -0.8411435, 0.080773115, -1.2883577, -0.5341466, 1.4913602, -0.30008763, -0.5831754, + 1.7365295, 1.821624, -0.08851206, -1.622279, -0.27249795, -0.834725, -0.6706438, 0.4766277, + 0.62642634, 0.5483514, -0.5341469, -1.4913592, 0.8286207, 0.35826343, -1.0869694, -1.4876881, + -1.6723244, -0.06565219, 0.16255295, 0.5317876, -0.75649667, 1.2447717, 0.6264261, -0.5483517, + -0.7537827, 0.19148779, 0.6306459, -0.23442982, 0.57131517, -1.366768, -2.7544713, 1.3638397, + 0.43463084, -0.5446956, -2.9949086, 1.4802479, 0.080771565, 1.2883584, 24.998875, -7.390976e-06, + -3.1970425, -1.5453612, 1.0925753, -6.279154, 2.237704, -2.8844912, 1.8841789, -1.3615136, + 0.90471864, 0.8395144, -2.6060505, 4.976988e-06, 1.1634235, 0.42319643, 2.678257, 2.4692535, + 0.34259582, 0.43598562, 2.748452, 0.88622695, 2.2745323, -2.8840196, 1.8120161, -0.27884078, + -1.5445104, -0.7000726, -1.0264511, -0.7026249, -1.071573, 1.062395, -0.64628685, -0.36214483, + -0.5110928, -1.0534683, -2.786768, 2.6113648, 0.94799054, 0.53423727, -0.69832724, 2.1821892, + -1.0264513, 0.70262754, -0.41705567, -0.17140968, 1.4991179, 2.9674625, -0.012362838, -3.8260121, + -1.5786235, -0.32526863, 1.2857957, 1.7469958, -0.6983267, -2.1821907, 1.1634252, -0.42319855, + 0.2716269, 0.21222934, -0.46608746, -1.6447732, 1.8890494, -1.8022469, -0.37335354, 0.69326025, + -0.07385725, -0.1723765, -1.5445105, 0.7000739}; static const std::vector input_data_6 = { - 101.805756, -5.2273273e-05, 2.5097876, 3.936094, -2.5597036, -1.8717405, - -1.0637736, 0.7801182, -2.1040666, -1.3385094, -7.9471993, 2.026558e-06, - 0.15199316, 0.52512753, 6.7908745, 2.5329556, 0.98875976, 4.755993, - 3.157838, 3.190782, 1.4353466, 1.6061276, -2.158554, 4.201776, - -1.3423799, 1.2554499, 3.5570183, -0.8320818, 2.263445, 0.36719292, - 0.7579028, -1.8762131, -0.32408538, -0.87544185, -3.4693956, -4.429764, - -0.85828185, -3.9007902, -2.0141544, 0.4111499, 2.8994608, 0.21030927, - -2.6786098, -10.127857, -0.6911557, 1.0018079, -2.8430226, 0.33270124, - 0.25672907, 1.8232578, -4.4159126, -2.040338, 1.9982092, -0.7974717, - -0.07559925, -1.0274884, 1.9742157, 3.9031482, 0.22159882, 1.4359848, - -1.0190966, 3.2186508e-06, 4.0004425, 0.8568655, 1.3117876, 0.2163087, - 0.28074512, 0.17570588, -5.466423, 4.531178, 3.857718, -1.2516975e-06, - 0.2567385, -1.823246, -1.0750613, -0.037295938, 5.20209, -2.0005994, - -1.7456844, 3.7091968, -5.45543, -3.4499822, 0.22159535, -1.4359887, - -0.8582816, 3.9007854, -0.31885874, 0.65880924, 0.6968423, 2.3119528, - -3.6876333, 2.273767, 5.38906, -0.45788872, -2.8430223, -0.33269957, - -1.3423961, -1.2554631, 3.1138885, -1.4416232, -6.0413575, -3.6011095, - -2.080242, 0.0045015216, -4.7212796, -0.3527125, -3.4693892, 4.429763, - 0.15199506, -0.52512354, -0.85594195, 2.8447511, -0.10181111, -1.5565643, - -1.6371696, 0.19021615, 0.8239815, 3.018465, -2.158556, -4.2017746, - 3.9272437, -3.9339066e-06, -0.18137527, 3.7160687, 2.1042633, 0.8752967, - 0.29226887, 5.755277, -2.9184306, 0.78941, -9.410112, 3.0100346e-06, - -1.7881365, 1.140914, 0.13286811, -3.01685, 2.4928799, 6.7320104, - 0.5376528, 0.88787735, -0.78172505, -7.0903873, 3.5203578, -0.6790314, - -3.246148, -3.0523329, -4.1306543, -5.653259, -3.866367, -1.5466263, - -3.6847744, -3.2064118, 0.5578996, -0.12726665, -2.2060838, -1.2613428, - 0.588767, 1.2716217, -2.5499039, -0.8091496, -3.0134337, 0.0408957, - 1.4991964, 6.6122847, -0.36368948, -3.0809648, 3.9192853, -3.764699, - 0.19334978, 3.9811373, 0.68720365, -1.717634, 2.346336, -3.3394372, - 1.2645291, 2.241068, 1.1309403, -0.3806507, 2.1538877, -2.3990266, - 0.6885946, -1.4901161e-06, -0.037429705, 0.24751475, 0.2968948, -7.367506, - -4.574969, -1.329541, -0.5423446, 3.2239883, 2.4139037, 2.9802322e-07, - 0.19334424, -3.9811373, 3.1507545, 2.0127864, -4.4341884, -1.2173393, - 0.72419256, 0.015158802, -4.4655256, -0.34677732, 2.1538897, 2.3990245, - 0.5887663, -1.2716188, -1.6747494, -3.415226, 1.2875631, 1.0108626, - 2.0268395, -2.3615427, -1.502785, -2.8317401, 3.919288, 3.764695, - -3.2461433, 3.0523314, -0.5022881, 0.9094755, -0.55759126, -0.24697942, - 5.0729737, 5.668646, -4.662384, 2.9517999, -2.2060819, 1.2613468, - -1.7881389, -1.1409098, -1.8951292, -2.1522717, -7.4092865, -0.38806117, - -0.6685039, -1.3767233, -0.8713439, 0.71781945, 3.5203605, 0.6790297}; + 101.805756, -5.2273273e-05, 2.5097876, 3.936094, -2.5597036, -1.8717405, -1.0637736, 0.7801182, + -2.1040666, -1.3385094, -7.9471993, 2.026558e-06, 0.15199316, 0.52512753, 6.7908745, 2.5329556, + 0.98875976, 4.755993, 3.157838, 3.190782, 1.4353466, 1.6061276, -2.158554, 4.201776, + -1.3423799, 1.2554499, 3.5570183, -0.8320818, 2.263445, 0.36719292, 0.7579028, -1.8762131, + -0.32408538, -0.87544185, -3.4693956, -4.429764, -0.85828185, -3.9007902, -2.0141544, 0.4111499, + 2.8994608, 0.21030927, -2.6786098, -10.127857, -0.6911557, 1.0018079, -2.8430226, 0.33270124, + 0.25672907, 1.8232578, -4.4159126, -2.040338, 1.9982092, -0.7974717, -0.07559925, -1.0274884, + 1.9742157, 3.9031482, 0.22159882, 1.4359848, -1.0190966, 3.2186508e-06, 4.0004425, 0.8568655, + 1.3117876, 0.2163087, 0.28074512, 0.17570588, -5.466423, 4.531178, 3.857718, -1.2516975e-06, + 0.2567385, -1.823246, -1.0750613, -0.037295938, 5.20209, -2.0005994, -1.7456844, 3.7091968, + -5.45543, -3.4499822, 0.22159535, -1.4359887, -0.8582816, 3.9007854, -0.31885874, 0.65880924, + 0.6968423, 2.3119528, -3.6876333, 2.273767, 5.38906, -0.45788872, -2.8430223, -0.33269957, + -1.3423961, -1.2554631, 3.1138885, -1.4416232, -6.0413575, -3.6011095, -2.080242, 0.0045015216, + -4.7212796, -0.3527125, -3.4693892, 4.429763, 0.15199506, -0.52512354, -0.85594195, 2.8447511, + -0.10181111, -1.5565643, -1.6371696, 0.19021615, 0.8239815, 3.018465, -2.158556, -4.2017746, + 3.9272437, -3.9339066e-06, -0.18137527, 3.7160687, 2.1042633, 0.8752967, 0.29226887, 5.755277, + -2.9184306, 0.78941, -9.410112, 3.0100346e-06, -1.7881365, 1.140914, 0.13286811, -3.01685, + 2.4928799, 6.7320104, 0.5376528, 0.88787735, -0.78172505, -7.0903873, 3.5203578, -0.6790314, + -3.246148, -3.0523329, -4.1306543, -5.653259, -3.866367, -1.5466263, -3.6847744, -3.2064118, + 0.5578996, -0.12726665, -2.2060838, -1.2613428, 0.588767, 1.2716217, -2.5499039, -0.8091496, + -3.0134337, 0.0408957, 1.4991964, 6.6122847, -0.36368948, -3.0809648, 3.9192853, -3.764699, + 0.19334978, 3.9811373, 0.68720365, -1.717634, 2.346336, -3.3394372, 1.2645291, 2.241068, + 1.1309403, -0.3806507, 2.1538877, -2.3990266, 0.6885946, -1.4901161e-06, -0.037429705, 0.24751475, + 0.2968948, -7.367506, -4.574969, -1.329541, -0.5423446, 3.2239883, 2.4139037, 2.9802322e-07, + 0.19334424, -3.9811373, 3.1507545, 2.0127864, -4.4341884, -1.2173393, 0.72419256, 0.015158802, + -4.4655256, -0.34677732, 2.1538897, 2.3990245, 0.5887663, -1.2716188, -1.6747494, -3.415226, + 1.2875631, 1.0108626, 2.0268395, -2.3615427, -1.502785, -2.8317401, 3.919288, 3.764695, + -3.2461433, 3.0523314, -0.5022881, 0.9094755, -0.55759126, -0.24697942, 5.0729737, 5.668646, + -4.662384, 2.9517999, -2.2060819, 1.2613468, -1.7881389, -1.1409098, -1.8951292, -2.1522717, + -7.4092865, -0.38806117, -0.6685039, -1.3767233, -0.8713439, 0.71781945, 3.5203605, 0.6790297}; static const std::vector input_data_7 = { - 0.73348462, 0.74833735, 0.40982435, 0.51988197, 0.99384421, 0.12469386, - 0.47686314, 0.25882564, 0.67028317, 0.58466398, 0.74927361, 0.19614283, - 0.82593526, 0.41205770, 0.74020169, 0.62222693, 0.33264240, 0.84108156, - 0.86392366, 0.79030966, 0.79792986, 0.47647899, 0.65967837, 0.92732906, - 0.90477190, 0.87232389, 0.55734667, 0.75560744, 0.70658521, 0.28530827, - 0.02554864, 0.14915414, 0.29936996, 0.74239557, 0.38158196, 0.26483291, - 0.15843351, 0.38703221, 0.79967600, 0.63790851, 0.66191234, 0.19395184, - 0.34992850, 0.89077723, 0.40746049, 0.01455611, 0.84174579, 0.91950995, - 0.43402124, 0.76620100, 0.96476467, 0.78331896, 0.48567269, 0.33793230, - 0.20362115, 0.51710568, 0.55455124, 0.10148728, 0.48229121, 0.58612092, - 0.91786709, 0.94405867, 0.54302465, 0.24146348, 0.34853454, 0.75880201, - 0.67781768, 0.29531289, 0.35969526, 0.01040005, 0.63142510, 0.67264276, - 0.57920180, 0.99608063, 0.91108299, 0.82647166, 0.54134147, 0.79556370, - 0.18579404, 0.95271365, 0.61918245, 0.17552980, 0.56332554, 0.58036855, - 0.33756331, 0.69359258, 0.03914420, 0.14962257, 0.26647894, 0.45042564, - 0.60093050, 0.67657016, 0.12601171, 0.95279680, 0.02868298, 0.82188820, - 0.17558198, 0.40678849, 0.90804391, 0.21813571, 0.69710526, 0.91450289, - 0.44277349, 0.70432336, 0.88161566, 0.23739783, 0.02746046, 0.05775890, - 0.63494471, 0.10963744, 0.68260565, 0.87579980, 0.34451002, 0.01422449, - 0.44081511, 0.78790226, 0.42010180, 0.62148773, 0.73164358, 0.85657540, - 0.21649672, 0.93347654, 0.65511518, 0.45192463, 0.57671214, 0.09925586, - 0.76042901, 0.84041443, 0.91933065, 0.00541233, 0.56194300, 0.71416635, - 0.15882159, 0.57976451, 0.37377713, 0.48352544, 0.96645849, 0.50040596, - 0.06060478, 0.21032667, 0.33303769, 0.80884551, 0.97500277, 0.28607026, - 0.12235457, 0.47764468, 0.09834820, 0.08864630, 0.21728048, 0.92446905, - 0.53802798, 0.22378462, 0.66087828, 0.64754384, 0.09980577, 0.50331927, - 0.90966904, 0.67624758, 0.22728569, 0.61184030, 0.66753081, 0.00405466, - 0.93407600, 0.89524725, 0.34496848, 0.01595642, 0.54338693, 0.65760153, - 0.69930304, 0.54202591, 0.66030817, 0.74371140, 0.95000083, 0.86475930, - 0.99826786, 0.85464029, 0.89926621, 0.90551912, 0.89889036, 0.38316505, - 0.06428984, 0.39342267, 0.40689672, 0.37076883, 0.72720439, 0.05071236, - 0.01355718, 0.95169120, 0.03623840, 0.05569115, 0.47255274, 0.44040655}; + 0.73348462, 0.74833735, 0.40982435, 0.51988197, 0.99384421, 0.12469386, 0.47686314, 0.25882564, 0.67028317, + 0.58466398, 0.74927361, 0.19614283, 0.82593526, 0.41205770, 0.74020169, 0.62222693, 0.33264240, 0.84108156, + 0.86392366, 0.79030966, 0.79792986, 0.47647899, 0.65967837, 0.92732906, 0.90477190, 0.87232389, 0.55734667, + 0.75560744, 0.70658521, 0.28530827, 0.02554864, 0.14915414, 0.29936996, 0.74239557, 0.38158196, 0.26483291, + 0.15843351, 0.38703221, 0.79967600, 0.63790851, 0.66191234, 0.19395184, 0.34992850, 0.89077723, 0.40746049, + 0.01455611, 0.84174579, 0.91950995, 0.43402124, 0.76620100, 0.96476467, 0.78331896, 0.48567269, 0.33793230, + 0.20362115, 0.51710568, 0.55455124, 0.10148728, 0.48229121, 0.58612092, 0.91786709, 0.94405867, 0.54302465, + 0.24146348, 0.34853454, 0.75880201, 0.67781768, 0.29531289, 0.35969526, 0.01040005, 0.63142510, 0.67264276, + 0.57920180, 0.99608063, 0.91108299, 0.82647166, 0.54134147, 0.79556370, 0.18579404, 0.95271365, 0.61918245, + 0.17552980, 0.56332554, 0.58036855, 0.33756331, 0.69359258, 0.03914420, 0.14962257, 0.26647894, 0.45042564, + 0.60093050, 0.67657016, 0.12601171, 0.95279680, 0.02868298, 0.82188820, 0.17558198, 0.40678849, 0.90804391, + 0.21813571, 0.69710526, 0.91450289, 0.44277349, 0.70432336, 0.88161566, 0.23739783, 0.02746046, 0.05775890, + 0.63494471, 0.10963744, 0.68260565, 0.87579980, 0.34451002, 0.01422449, 0.44081511, 0.78790226, 0.42010180, + 0.62148773, 0.73164358, 0.85657540, 0.21649672, 0.93347654, 0.65511518, 0.45192463, 0.57671214, 0.09925586, + 0.76042901, 0.84041443, 0.91933065, 0.00541233, 0.56194300, 0.71416635, 0.15882159, 0.57976451, 0.37377713, + 0.48352544, 0.96645849, 0.50040596, 0.06060478, 0.21032667, 0.33303769, 0.80884551, 0.97500277, 0.28607026, + 0.12235457, 0.47764468, 0.09834820, 0.08864630, 0.21728048, 0.92446905, 0.53802798, 0.22378462, 0.66087828, + 0.64754384, 0.09980577, 0.50331927, 0.90966904, 0.67624758, 0.22728569, 0.61184030, 0.66753081, 0.00405466, + 0.93407600, 0.89524725, 0.34496848, 0.01595642, 0.54338693, 0.65760153, 0.69930304, 0.54202591, 0.66030817, + 0.74371140, 0.95000083, 0.86475930, 0.99826786, 0.85464029, 0.89926621, 0.90551912, 0.89889036, 0.38316505, + 0.06428984, 0.39342267, 0.40689672, 0.37076883, 0.72720439, 0.05071236, 0.01355718, 0.95169120, 0.03623840, + 0.05569115, 0.47255274, 0.44040655}; static const std::vector expected_irdft2d_results_1 = { - 0.106065355, 0.7454709, 0.5723129, 0.45824066, 0.384706, 0.27398905, 0.6679619, 0.39547434, - 0.2815724, 0.779919, 0.59909385, 0.122946456, 0.38957337, 0.97498655, 0.46759892, 0.14017127, - 0.04206834, 0.72799486, 0.61560476, 0.9027304, 0.6226336, 0.2601218, 0.5555171, 0.4049862, - 0.14175594, 0.57774574, 0.52652067, 0.9385676, 0.958878, 0.9844308, 0.2309568, 0.0970796, - 0.24574815, 0.6907565, 0.19743192, 0.8295261, 0.3461272, 0.5140136, 0.66115695, 0.93362343, - 0.06690116, 0.74688905, 0.39028272, 0.53575796, 0.060429227, 0.89135474, 0.77787286, 0.67011875, - 0.73505205, 0.6636992, 0.18176568, 0.8629964, 0.4514285, 0.6497283, 0.15937214, 0.40598106, - 0.7988508, 0.72915316, 0.07090413, 0.76971227, 0.49721542, 0.7669206, 0.6797579, 0.13026048, - 0.6587432, 0.24532847, 0.24545121, 0.83795464, 0.10549038, 0.72643167, 0.94568396, 0.72166353, - 0.14389817, 0.79305094, 0.7089523, 0.9724684, 0.9775141, 0.49999753, 0.6556916, 0.2687679, - 0.6324893, 0.85201234, 0.5689621, 0.023386242, 0.5546462, 0.36860004, 0.9603104, 0.3912346, - 0.038073156, 0.8921232, 0.14387667, 0.63858616, 0.10003737, 0.8906622, 0.06681097, 0.74586314, - 0.4545233, 0.54724485, 0.6496472, 0.7818348, 0.6608358, 0.77711284, 0.24588637, 0.0134570245, - 0.35584468, 0.8038809, 0.027993381, 0.7367708, 0.52754945, 0.90523165, 0.54310995, 0.5367796, - 0.41312343, 0.7752323, 0.10966998, 0.13664615, 0.7828726, 0.9083951, 0.524759, 0.7493586, - 0.19275239, 0.0071907635, 0.60879755, 0.34413564, 0.4690983, 0.4192482, 0.70729065, 0.1993285, - 0.5303842, 0.65138334, 0.06686333, 0.97179186, 0.657022, 0.11786719, 0.3154068, 0.8892283, - 0.55640805, 0.9104763, 0.28466636, 0.093467236, 0.88953, 0.9919328, 0.18322526, 0.8185441, - 0.56639117, 0.014208457, 0.29673028, 0.6347738, 0.68019533, 0.39601144, 0.34374115, 0.72168803, - 0.61525595, 0.76679367, 0.5860848, 0.42768106, 0.7933919, 0.13130645, 0.68764144, 0.05312841, - 0.026113434, 0.2982238, 0.7618365, 0.3331724, 0.5468184, 0.15707079, 0.28592035, 0.15286529, - 0.9368952, 0.35067078, 0.43364897, 0.089348935, 0.41172677, 0.58502454, 0.7073026, 0.85983366, - 0.08878795, 0.2671109, 0.8002475, 0.19422255, 0.83120316, 0.5198712, 0.40111288, 0.98375624, - 0.77703446, 0.03781964, 0.7042304, 0.68980736, 0.17102323, 0.42153904, 0.7278248, 0.80301994, - 0.91017085, 0.019965423, 0.13768451, 0.556689, 0.17991383, 0.6720085, 0.7733324, 0.20881362}; + 0.106065355, 0.7454709, 0.5723129, 0.45824066, 0.384706, 0.27398905, 0.6679619, 0.39547434, 0.2815724, + 0.779919, 0.59909385, 0.122946456, 0.38957337, 0.97498655, 0.46759892, 0.14017127, 0.04206834, 0.72799486, + 0.61560476, 0.9027304, 0.6226336, 0.2601218, 0.5555171, 0.4049862, 0.14175594, 0.57774574, 0.52652067, + 0.9385676, 0.958878, 0.9844308, 0.2309568, 0.0970796, 0.24574815, 0.6907565, 0.19743192, 0.8295261, + 0.3461272, 0.5140136, 0.66115695, 0.93362343, 0.06690116, 0.74688905, 0.39028272, 0.53575796, 0.060429227, + 0.89135474, 0.77787286, 0.67011875, 0.73505205, 0.6636992, 0.18176568, 0.8629964, 0.4514285, 0.6497283, + 0.15937214, 0.40598106, 0.7988508, 0.72915316, 0.07090413, 0.76971227, 0.49721542, 0.7669206, 0.6797579, + 0.13026048, 0.6587432, 0.24532847, 0.24545121, 0.83795464, 0.10549038, 0.72643167, 0.94568396, 0.72166353, + 0.14389817, 0.79305094, 0.7089523, 0.9724684, 0.9775141, 0.49999753, 0.6556916, 0.2687679, 0.6324893, + 0.85201234, 0.5689621, 0.023386242, 0.5546462, 0.36860004, 0.9603104, 0.3912346, 0.038073156, 0.8921232, + 0.14387667, 0.63858616, 0.10003737, 0.8906622, 0.06681097, 0.74586314, 0.4545233, 0.54724485, 0.6496472, + 0.7818348, 0.6608358, 0.77711284, 0.24588637, 0.0134570245, 0.35584468, 0.8038809, 0.027993381, 0.7367708, + 0.52754945, 0.90523165, 0.54310995, 0.5367796, 0.41312343, 0.7752323, 0.10966998, 0.13664615, 0.7828726, + 0.9083951, 0.524759, 0.7493586, 0.19275239, 0.0071907635, 0.60879755, 0.34413564, 0.4690983, 0.4192482, + 0.70729065, 0.1993285, 0.5303842, 0.65138334, 0.06686333, 0.97179186, 0.657022, 0.11786719, 0.3154068, + 0.8892283, 0.55640805, 0.9104763, 0.28466636, 0.093467236, 0.88953, 0.9919328, 0.18322526, 0.8185441, + 0.56639117, 0.014208457, 0.29673028, 0.6347738, 0.68019533, 0.39601144, 0.34374115, 0.72168803, 0.61525595, + 0.76679367, 0.5860848, 0.42768106, 0.7933919, 0.13130645, 0.68764144, 0.05312841, 0.026113434, 0.2982238, + 0.7618365, 0.3331724, 0.5468184, 0.15707079, 0.28592035, 0.15286529, 0.9368952, 0.35067078, 0.43364897, + 0.089348935, 0.41172677, 0.58502454, 0.7073026, 0.85983366, 0.08878795, 0.2671109, 0.8002475, 0.19422255, + 0.83120316, 0.5198712, 0.40111288, 0.98375624, 0.77703446, 0.03781964, 0.7042304, 0.68980736, 0.17102323, + 0.42153904, 0.7278248, 0.80301994, 0.91017085, 0.019965423, 0.13768451, 0.556689, 0.17991383, 0.6720085, + 0.7733324, 0.20881362}; static const std::vector expected_irdft2d_results_2 = { - 0.10606504, 0.74547091, 0.57231341, 0.45824085, 0.38470576, 0.27398939, 0.66796227, - 0.39547472, 0.28157284, 0.77991920, 0.00000012, 0.00000025, 0.59909402, 0.12294612, - 0.38957398, 0.97498753, 0.46759871, 0.14017182, 0.04206866, 0.72799575, 0.61560553, - 0.90273150, 0.00000029, 0.00000019, 0.62263335, 0.26012139, 0.55551768, 0.40498611, - 0.14175560, 0.57774629, 0.52652119, 0.93856842, 0.95887877, 0.98443111, 0.00000026, - 0.00000029, 0.23095626, 0.09707905, 0.24574875, 0.69075717, 0.19743158, 0.82952691, - 0.34612741, 0.51401454, 0.66115784, 0.93362381, 0.00000013, 0.00000019, 0.06690087, - 0.74688917, 0.39028283, 0.53575807, 0.06042910, 0.89135566, 0.77787371, 0.67011938, - 0.73505260, 0.66369919, 0.00000020, 0.00000025, 0.66083517, 0.77711292, 0.24588620, - 0.01345654, 0.35584463, 0.80388178, 0.02799342, 0.73677143, 0.52754998, 0.90523178, - 0.00000020, 0.00000022, 0.54311002, 0.53678006, 0.41312413, 0.77523314, 0.10966939, - 0.13664682, 0.78287364, 0.90839633, 0.52475940, 0.74935884, 0.00000017, 0.00000024, - 0.19275220, 0.00719083, 0.60879792, 0.34413568, 0.46909855, 0.41924857, 0.70729118, - 0.19932858, 0.53038468, 0.65138356, 0.00000024, 0.00000004, 0.06686326, 0.97179258, - 0.65702215, 0.11786667, 0.31540699, 0.88922984, 0.55640881, 0.91047768, 0.28466661, - 0.09346649, 0.00000006, 0.00000008, 0.88953045, 0.99193334, 0.18322520, 0.81854497, - 0.56639084, 0.01420842, 0.29673067, 0.63477397, 0.68019596, 0.39601113, 0.00000014, - 0.00000022}; + 0.10606504, 0.74547091, 0.57231341, 0.45824085, 0.38470576, 0.27398939, 0.66796227, 0.39547472, 0.28157284, + 0.77991920, 0.00000012, 0.00000025, 0.59909402, 0.12294612, 0.38957398, 0.97498753, 0.46759871, 0.14017182, + 0.04206866, 0.72799575, 0.61560553, 0.90273150, 0.00000029, 0.00000019, 0.62263335, 0.26012139, 0.55551768, + 0.40498611, 0.14175560, 0.57774629, 0.52652119, 0.93856842, 0.95887877, 0.98443111, 0.00000026, 0.00000029, + 0.23095626, 0.09707905, 0.24574875, 0.69075717, 0.19743158, 0.82952691, 0.34612741, 0.51401454, 0.66115784, + 0.93362381, 0.00000013, 0.00000019, 0.06690087, 0.74688917, 0.39028283, 0.53575807, 0.06042910, 0.89135566, + 0.77787371, 0.67011938, 0.73505260, 0.66369919, 0.00000020, 0.00000025, 0.66083517, 0.77711292, 0.24588620, + 0.01345654, 0.35584463, 0.80388178, 0.02799342, 0.73677143, 0.52754998, 0.90523178, 0.00000020, 0.00000022, + 0.54311002, 0.53678006, 0.41312413, 0.77523314, 0.10966939, 0.13664682, 0.78287364, 0.90839633, 0.52475940, + 0.74935884, 0.00000017, 0.00000024, 0.19275220, 0.00719083, 0.60879792, 0.34413568, 0.46909855, 0.41924857, + 0.70729118, 0.19932858, 0.53038468, 0.65138356, 0.00000024, 0.00000004, 0.06686326, 0.97179258, 0.65702215, + 0.11786667, 0.31540699, 0.88922984, 0.55640881, 0.91047768, 0.28466661, 0.09346649, 0.00000006, 0.00000008, + 0.88953045, 0.99193334, 0.18322520, 0.81854497, 0.56639084, 0.01420842, 0.29673067, 0.63477397, 0.68019596, + 0.39601113, 0.00000014, 0.00000022}; static const std::vector expected_irdft3d_results_2 = { - 0.29655575, 0.59799123, 0.22431113, 0.46143103, 0.53208175, 0.32705094, 0.59367000, - 0.29963828, 0.41763943, 0.24033307, 0.42796425, 0.56577777, 0.37677909, 0.32099129, - 0.28778578, 0.50527716, 0.39592624, -0.01477019, 0.46390174, 0.48881302, 0.69299017, - 0.69097986, 0.60120016, 0.82729206, -0.09137908, 0.49852066, 0.41157645, 0.50370176, - 0.50602146, 0.12422646, 0.66381460, 0.40124601, 0.71138931, 0.66414101, 0.50896081, - 0.51854765, 0.21342740, 0.75042767, 0.40385838, 0.28173387, 0.29258505, 0.34233110, - 0.44617152, 0.32590713, 0.69813927, 0.27029157, 0.49500125, 0.57849153, 0.52079012, - 0.46437605, 0.44842544, 0.21380078, 0.57897044, 0.32123390, 0.46531573, 0.55946432, - 0.36995799, 0.19326348, 0.26279333, 0.89411452, 0.45806675, 0.58413552, 0.47982321, - 0.40877153, 0.23978246, 0.33369794, 0.56433968, 0.09308288, 0.20574836, 0.51936717, - 0.46905154, 0.47775696, 0.17856948, 0.04195880, 0.24284739, 0.63731160, 0.16159543, - 0.08925854, 0.50157161, 0.67721677, 0.75653236, 0.50840554, 0.73467008, 0.62163510, - 0.00566245, 0.92257200, 0.42133956, 0.45249607, 0.36451271, 0.46674756, 0.65809363, - 0.29478180, 0.79919561, 0.37987672, 0.46803394, 0.20036376, 0.30268271, 0.62990812, - 0.29745090, 0.46503467, 0.30444576, 0.43581755, 0.38956261, 0.58891618, 0.43936615, - 0.12833645, 0.82411153, 0.30960669, 0.24676315, 0.39269569, 0.26772071, 0.46022705, - 0.77598541, 0.46882716, 0.40922151, 0.28451272, 0.27156988, 0.32720683, 0.48740341, - 0.52519462, 0.47371313, 0.61046947, 0.46505542, 0.04019986, 0.27622309, 0.42926452, - 0.49897225, 0.04617115, 0.50902017, 0.74826910, 0.28548445, 0.63409441, 0.13183664, - 0.02507987, 0.51695660, 0.50593892, 0.17335312, 0.24157819, 0.45513622, 0.69800550, - 0.40604969, 0.47128647, 0.59389774, 0.33534107, 0.50887902, 0.82998967, 0.22642939, - 0.32967160, 0.50515564, 0.54070049, 0.28947697, 0.35626388, 0.58235507, 0.30633221, - 0.50041779, 0.24975602, 0.38320678, 0.40595842, 0.50651077, 0.42963483, 0.25977121, - 0.32014694, 0.37577291, 0.46638206, 0.05511259, 0.45463482, 0.62685054, 0.13046773, - 0.49768469, 0.47645129, 0.56182954, 0.74548830, 0.73150766, 0.37579758, 0.14279248, - 0.28705593, 0.45403320, 0.50334282, 0.24132925, 0.24104091, 0.31220213, 0.62432518, - 0.20954334, 0.09285936, 0.56852238, 0.42261752, 0.52830257, 0.25272655, 0.72091123, - 0.46923499, 0.24439716, 0.72211522, 0.33004626, 0.30411236, 0.56189500, 0.37390448, - 0.40768394, 0.13754946, 0.41746636, 0.50960175, 0.34250750, 0.65386079, 0.46042782, - 0.54099804, 0.41183749, 0.40593833, 0.21666628, 0.38087729, 0.64666439, 0.19817938, - 0.29519793, 0.46272810, 0.49454878, 0.59059650, 0.54134465, 0.56793991, 0.29395146, - 0.52647797, 0.61291826, 0.24633402, 0.24791051, 0.22666050, 0.43238182, 0.20337301, - 0.31388571, 0.59658993, 0.29774026, 0.39935257, 0.77171166, 0.54813165, 0.74253426, - 0.49906203, 0.53449270, 0.22820431, 0.19888670, 0.56200754, 0.55242130, 0.36939947, - 0.01671917, 0.60996081}; - -static const std::vector expected_irdft3d_results_3 ={ - 0.51795123, 0.01846075, 0.03363710, -0.02286412, -0.00527071, -0.05116411, - -0.01142488, -0.01784910, -0.01088149, 0.01049122, -0.00829387, 0.00942086, - -0.02915924, 0.05941228, 0.05868882, -0.02329090, 0.06043447, 0.01260666, - 0.04213929, -0.03578551, -0.00354573, -0.02047438, -0.03469945, -0.02365786, - 0.00807303, 0.02364844, -0.00346402, -0.00134415, 0.04106979, 0.04961361, - -0.01212564, -0.04288128, -0.26157875, -0.01917418, -0.04232584, 0.02477720, - 0.02514449, 0.04955597, -0.00301304, 0.00663580, 0.01947190, -0.01163269, - -0.07920224, -0.01201069, 0.00564843, 0.00283007, -0.05916596, 0.03569793, - -0.02454099, -0.01977048, -0.00360401, 0.00924050, -0.01237082, -0.04213287, - -0.03306797, -0.01442351, -0.02601594, 0.07406829, -0.02896844, 0.00503278, - 0.00700455, 0.02915976, 0.01761130, -0.04474307, 0.03632101, 0.00957998, - -0.02003984, -0.04022581, 0.03104216, 0.00388626, 0.05861915, 0.01034101, - -0.00741989, 0.01010181, 0.01496502, -0.00544559, 0.04015258, -0.00600315, - -0.06137903, 0.07850411, -0.00074931, 0.02540785, -0.00166176, 0.02205904, - -0.02429718, 0.04010517, 0.02375359, 0.02229406, 0.01806382, -0.06089136, - 0.00447113, -0.03169147, 0.02836490, -0.05821620, 0.03905417, 0.03987032, - 0.29899586, -0.02616866, -0.00927641, -0.02134532, -0.02480746, -0.02636082, - -0.05009444, -0.02208490, 0.02632000, 0.00493334, -0.00402312, -0.00935831, - 0.04154630, 0.00849218, 0.00232782, -0.01192997, -0.03309486, 0.01678531, - 0.03526979, 0.09272132, 0.01420703, -0.01919909, 0.01321082, -0.01661140, - 0.07861365, -0.02784724, 0.03900426, -0.00096805, -0.02880604, 0.02753764, - -0.02092520, -0.01412453}; + 0.29655575, 0.59799123, 0.22431113, 0.46143103, 0.53208175, 0.32705094, 0.59367000, 0.29963828, 0.41763943, + 0.24033307, 0.42796425, 0.56577777, 0.37677909, 0.32099129, 0.28778578, 0.50527716, 0.39592624, -0.01477019, + 0.46390174, 0.48881302, 0.69299017, 0.69097986, 0.60120016, 0.82729206, -0.09137908, 0.49852066, 0.41157645, + 0.50370176, 0.50602146, 0.12422646, 0.66381460, 0.40124601, 0.71138931, 0.66414101, 0.50896081, 0.51854765, + 0.21342740, 0.75042767, 0.40385838, 0.28173387, 0.29258505, 0.34233110, 0.44617152, 0.32590713, 0.69813927, + 0.27029157, 0.49500125, 0.57849153, 0.52079012, 0.46437605, 0.44842544, 0.21380078, 0.57897044, 0.32123390, + 0.46531573, 0.55946432, 0.36995799, 0.19326348, 0.26279333, 0.89411452, 0.45806675, 0.58413552, 0.47982321, + 0.40877153, 0.23978246, 0.33369794, 0.56433968, 0.09308288, 0.20574836, 0.51936717, 0.46905154, 0.47775696, + 0.17856948, 0.04195880, 0.24284739, 0.63731160, 0.16159543, 0.08925854, 0.50157161, 0.67721677, 0.75653236, + 0.50840554, 0.73467008, 0.62163510, 0.00566245, 0.92257200, 0.42133956, 0.45249607, 0.36451271, 0.46674756, + 0.65809363, 0.29478180, 0.79919561, 0.37987672, 0.46803394, 0.20036376, 0.30268271, 0.62990812, 0.29745090, + 0.46503467, 0.30444576, 0.43581755, 0.38956261, 0.58891618, 0.43936615, 0.12833645, 0.82411153, 0.30960669, + 0.24676315, 0.39269569, 0.26772071, 0.46022705, 0.77598541, 0.46882716, 0.40922151, 0.28451272, 0.27156988, + 0.32720683, 0.48740341, 0.52519462, 0.47371313, 0.61046947, 0.46505542, 0.04019986, 0.27622309, 0.42926452, + 0.49897225, 0.04617115, 0.50902017, 0.74826910, 0.28548445, 0.63409441, 0.13183664, 0.02507987, 0.51695660, + 0.50593892, 0.17335312, 0.24157819, 0.45513622, 0.69800550, 0.40604969, 0.47128647, 0.59389774, 0.33534107, + 0.50887902, 0.82998967, 0.22642939, 0.32967160, 0.50515564, 0.54070049, 0.28947697, 0.35626388, 0.58235507, + 0.30633221, 0.50041779, 0.24975602, 0.38320678, 0.40595842, 0.50651077, 0.42963483, 0.25977121, 0.32014694, + 0.37577291, 0.46638206, 0.05511259, 0.45463482, 0.62685054, 0.13046773, 0.49768469, 0.47645129, 0.56182954, + 0.74548830, 0.73150766, 0.37579758, 0.14279248, 0.28705593, 0.45403320, 0.50334282, 0.24132925, 0.24104091, + 0.31220213, 0.62432518, 0.20954334, 0.09285936, 0.56852238, 0.42261752, 0.52830257, 0.25272655, 0.72091123, + 0.46923499, 0.24439716, 0.72211522, 0.33004626, 0.30411236, 0.56189500, 0.37390448, 0.40768394, 0.13754946, + 0.41746636, 0.50960175, 0.34250750, 0.65386079, 0.46042782, 0.54099804, 0.41183749, 0.40593833, 0.21666628, + 0.38087729, 0.64666439, 0.19817938, 0.29519793, 0.46272810, 0.49454878, 0.59059650, 0.54134465, 0.56793991, + 0.29395146, 0.52647797, 0.61291826, 0.24633402, 0.24791051, 0.22666050, 0.43238182, 0.20337301, 0.31388571, + 0.59658993, 0.29774026, 0.39935257, 0.77171166, 0.54813165, 0.74253426, 0.49906203, 0.53449270, 0.22820431, + 0.19888670, 0.56200754, 0.55242130, 0.36939947, 0.01671917, 0.60996081}; + +static const std::vector expected_irdft3d_results_3 = { + 0.51795123, 0.01846075, 0.03363710, -0.02286412, -0.00527071, -0.05116411, -0.01142488, -0.01784910, -0.01088149, + 0.01049122, -0.00829387, 0.00942086, -0.02915924, 0.05941228, 0.05868882, -0.02329090, 0.06043447, 0.01260666, + 0.04213929, -0.03578551, -0.00354573, -0.02047438, -0.03469945, -0.02365786, 0.00807303, 0.02364844, -0.00346402, + -0.00134415, 0.04106979, 0.04961361, -0.01212564, -0.04288128, -0.26157875, -0.01917418, -0.04232584, 0.02477720, + 0.02514449, 0.04955597, -0.00301304, 0.00663580, 0.01947190, -0.01163269, -0.07920224, -0.01201069, 0.00564843, + 0.00283007, -0.05916596, 0.03569793, -0.02454099, -0.01977048, -0.00360401, 0.00924050, -0.01237082, -0.04213287, + -0.03306797, -0.01442351, -0.02601594, 0.07406829, -0.02896844, 0.00503278, 0.00700455, 0.02915976, 0.01761130, + -0.04474307, 0.03632101, 0.00957998, -0.02003984, -0.04022581, 0.03104216, 0.00388626, 0.05861915, 0.01034101, + -0.00741989, 0.01010181, 0.01496502, -0.00544559, 0.04015258, -0.00600315, -0.06137903, 0.07850411, -0.00074931, + 0.02540785, -0.00166176, 0.02205904, -0.02429718, 0.04010517, 0.02375359, 0.02229406, 0.01806382, -0.06089136, + 0.00447113, -0.03169147, 0.02836490, -0.05821620, 0.03905417, 0.03987032, 0.29899586, -0.02616866, -0.00927641, + -0.02134532, -0.02480746, -0.02636082, -0.05009444, -0.02208490, 0.02632000, 0.00493334, -0.00402312, -0.00935831, + 0.04154630, 0.00849218, 0.00232782, -0.01192997, -0.03309486, 0.01678531, 0.03526979, 0.09272132, 0.01420703, + -0.01919909, 0.01321082, -0.01661140, 0.07861365, -0.02784724, 0.03900426, -0.00096805, -0.02880604, 0.02753764, + -0.02092520, -0.01412453}; static const std::vector expected_irdft3d_results_4 = { - 0.24882269, -0.00554157, -0.00759689, -0.00413212, 0.01099624, 0.02191469, - 0.02829072, -0.01410181, 0.04826954, 0.03587530, -0.01151859, 0.03459743, - 0.03157633, -0.03446264, 0.03595825, -0.01176664, 0.00625817, 0.00981066, - -0.11900401, -0.02756717, 0.01933546, 0.03042892, -0.04917013, 0.00048474, - -0.01849990, -0.01050222, -0.02433642, -0.08657554, -0.03473007, -0.01486101, - 0.00137630, -0.01972852, -0.06159696, 0.02284726, -0.03851998, -0.00885092, - 0.02397606, -0.02071742, -0.00586151, -0.01287085, 0.01713095, -0.07724825, - 0.05983482, -0.02824272, 0.02959802, 0.04051825, 0.00219584, 0.04053028, - 0.00415529, 0.02379833, -0.01936524, 0.04350142, 0.02095385, 0.03121966, - -0.02675550, 0.01142533, 0.05606331, 0.02115209, 0.00866956, 0.05367358, - -0.00479556, 0.05423974, -0.01172735, -0.01203834, 0.00181946, 0.00594081, - 0.00527473, 0.00781714, 0.07042868, -0.02243115, 0.03207793, -0.04213578, - 0.14912935, -0.01012542, -0.05799989, -0.02889979, 0.02934662, 0.03385938, - 0.00951527, -0.01760542, -0.01611288, 0.29838892, -0.01029289, -0.06226702, - -0.03670440, 0.03954893, 0.00725941, 0.04219448, -0.03698240, 0.03564729}; + 0.24882269, -0.00554157, -0.00759689, -0.00413212, 0.01099624, 0.02191469, 0.02829072, -0.01410181, 0.04826954, + 0.03587530, -0.01151859, 0.03459743, 0.03157633, -0.03446264, 0.03595825, -0.01176664, 0.00625817, 0.00981066, + -0.11900401, -0.02756717, 0.01933546, 0.03042892, -0.04917013, 0.00048474, -0.01849990, -0.01050222, -0.02433642, + -0.08657554, -0.03473007, -0.01486101, 0.00137630, -0.01972852, -0.06159696, 0.02284726, -0.03851998, -0.00885092, + 0.02397606, -0.02071742, -0.00586151, -0.01287085, 0.01713095, -0.07724825, 0.05983482, -0.02824272, 0.02959802, + 0.04051825, 0.00219584, 0.04053028, 0.00415529, 0.02379833, -0.01936524, 0.04350142, 0.02095385, 0.03121966, + -0.02675550, 0.01142533, 0.05606331, 0.02115209, 0.00866956, 0.05367358, -0.00479556, 0.05423974, -0.01172735, + -0.01203834, 0.00181946, 0.00594081, 0.00527473, 0.00781714, 0.07042868, -0.02243115, 0.03207793, -0.04213578, + 0.14912935, -0.01012542, -0.05799989, -0.02889979, 0.02934662, 0.03385938, 0.00951527, -0.01760542, -0.01611288, + 0.29838892, -0.01029289, -0.06226702, -0.03670440, 0.03954893, 0.00725941, 0.04219448, -0.03698240, 0.03564729}; template std::vector generateParamsForIRDFT() { @@ -609,186 +543,186 @@ std::vector generateParamsForIRDFT() { expected_irdft2d_results_1, op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), NULL), - // irdft2d_eval_1_positive_negative_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), - NULL), - // irdft2d_eval_1_negative_positive_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), - NULL), - // irdft2d_eval_1_negative_negative_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), - NULL), - // irdft2d_eval_1_signal_size_0_s10_10 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), - // irdft2d_eval_1_signal_size_0_s10_10_positive_negative_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), - // irdft2d_eval_1_signal_size_0_s10_10_negative_positive_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), - // irdft2d_eval_1_signal_size_0_s10_10_negative_negative_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), - // irdft2d_eval_1_signal_size_0_s10_m1 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, -1})), - // irdft2d_eval_1_signal_size_0_sm1_10 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-1, 10})), - // irdft2d_eval_1_signal_size_0_sm1_m1 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-1, -1})), - // irdft2d_eval_2_signal_size - IRDFTParams(Shape{2, 5, 7, 2}, - Shape{2, 5, 12}, - ET, - ET, - input_data_5, - expected_irdft2d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), - // irdft2d_eval_2_signal_size_positive_negative_axes - IRDFTParams(Shape{2, 5, 7, 2}, - Shape{2, 5, 12}, - ET, - ET, - input_data_5, - expected_irdft2d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), - // irdft2d_eval_2_signal_size_negative_positive_axes - IRDFTParams(Shape{2, 5, 7, 2}, - Shape{2, 5, 12}, - ET, - ET, - input_data_5, - expected_irdft2d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), - // irdft2d_eval_2_signal_size_negative_negative_axes - IRDFTParams(Shape{2, 5, 7, 2}, - Shape{2, 5, 12}, - ET, - ET, - input_data_5, - expected_irdft2d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), - // irdft3d_eval_1 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_6, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {0, 1, 2}), - NULL), - // irdft3d_eval_1_negative_axes_and_signal_size - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_6, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-3, 1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-1, 10, -1})), - // irdft3d_eval_2 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{4, 5, 12}, - ET, - ET, - input_data_6, - expected_irdft3d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {0, 1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {4, 5, 12})), - // irdft3d_eval_2_negative_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{4, 5, 12}, - ET, - ET, - input_data_6, - expected_irdft3d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-3, -2, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {4, 5, 12})), - // irdft3d_reversed_axes - IRDFTParams(Shape{3, 4, 8, 2}, - Shape{4, 4, 8}, - ET, - ET, - input_data_7, - expected_irdft3d_results_3, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {2, 1, 0}), - NULL), - // irdft3d_reversed_negative_axes - IRDFTParams(Shape{3, 4, 8, 2}, - Shape{4, 4, 8}, - ET, - ET, - input_data_7, - expected_irdft3d_results_3, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-1, -2, -3}), - NULL), + // irdft2d_eval_1_positive_negative_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), + NULL), + // irdft2d_eval_1_negative_positive_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), + NULL), + // irdft2d_eval_1_negative_negative_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), + NULL), + // irdft2d_eval_1_signal_size_0_s10_10 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), + // irdft2d_eval_1_signal_size_0_s10_10_positive_negative_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), + // irdft2d_eval_1_signal_size_0_s10_10_negative_positive_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), + // irdft2d_eval_1_signal_size_0_s10_10_negative_negative_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), + // irdft2d_eval_1_signal_size_0_s10_m1 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, -1})), + // irdft2d_eval_1_signal_size_0_sm1_10 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-1, 10})), + // irdft2d_eval_1_signal_size_0_sm1_m1 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-1, -1})), + // irdft2d_eval_2_signal_size + IRDFTParams(Shape{2, 5, 7, 2}, + Shape{2, 5, 12}, + ET, + ET, + input_data_5, + expected_irdft2d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), + // irdft2d_eval_2_signal_size_positive_negative_axes + IRDFTParams(Shape{2, 5, 7, 2}, + Shape{2, 5, 12}, + ET, + ET, + input_data_5, + expected_irdft2d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), + // irdft2d_eval_2_signal_size_negative_positive_axes + IRDFTParams(Shape{2, 5, 7, 2}, + Shape{2, 5, 12}, + ET, + ET, + input_data_5, + expected_irdft2d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), + // irdft2d_eval_2_signal_size_negative_negative_axes + IRDFTParams(Shape{2, 5, 7, 2}, + Shape{2, 5, 12}, + ET, + ET, + input_data_5, + expected_irdft2d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), + // irdft3d_eval_1 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_6, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {0, 1, 2}), + NULL), + // irdft3d_eval_1_negative_axes_and_signal_size + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_6, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-3, 1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-1, 10, -1})), + // irdft3d_eval_2 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{4, 5, 12}, + ET, + ET, + input_data_6, + expected_irdft3d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {0, 1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {4, 5, 12})), + // irdft3d_eval_2_negative_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{4, 5, 12}, + ET, + ET, + input_data_6, + expected_irdft3d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-3, -2, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {4, 5, 12})), + // irdft3d_reversed_axes + IRDFTParams(Shape{3, 4, 8, 2}, + Shape{4, 4, 8}, + ET, + ET, + input_data_7, + expected_irdft3d_results_3, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {2, 1, 0}), + NULL), + // irdft3d_reversed_negative_axes + IRDFTParams(Shape{3, 4, 8, 2}, + Shape{4, 4, 8}, + ET, + ET, + input_data_7, + expected_irdft3d_results_3, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-1, -2, -3}), + NULL), // irdft3d_reversed_axes_with_signals IRDFTParams(Shape{3, 4, 8, 2}, Shape{10, 3, 3}, @@ -813,9 +747,7 @@ std::vector generateParamsForIRDFT() { } std::vector generateCombinedParamsForIRDFT() { - const std::vector> allTypeParams{ - generateParamsForIRDFT() - }; + const std::vector> allTypeParams{generateParamsForIRDFT()}; std::vector combinedParams; @@ -826,9 +758,8 @@ std::vector generateCombinedParamsForIRDFT() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_IRDFT_With_Hardcoded_Refs, - ReferenceIRDFTLayerTest, - ::testing::ValuesIn(generateCombinedParamsForIRDFT()), - ReferenceIRDFTLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_IRDFT_With_Hardcoded_Refs, + ReferenceIRDFTLayerTest, + ::testing::ValuesIn(generateCombinedParamsForIRDFT()), + ReferenceIRDFTLayerTest::getTestCaseName); } // namespace \ No newline at end of file diff --git a/src/plugins/template/tests/functional/op_reference/is_finite.cpp b/src/plugins/template/tests/functional/op_reference/is_finite.cpp index dcd937786e9d26..479cd157038ec8 100644 --- a/src/plugins/template/tests/functional/op_reference/is_finite.cpp +++ b/src/plugins/template/tests/functional/op_reference/is_finite.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/is_finite.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/is_finite.hpp" using namespace ov; using namespace reference_tests; @@ -14,10 +16,10 @@ namespace { struct IsFiniteParams { template IsFiniteParams(const PartialShape& shape, - const element::Type& iType, - const element::Type& oType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const element::Type& oType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(oType), @@ -51,8 +53,8 @@ class ReferenceIsFiniteLayerTest : public testing::TestWithParam private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto is_finite = std::make_shared(in); return std::make_shared(NodeVector{is_finite}, ParameterVector{in}); @@ -70,16 +72,17 @@ std::vector generateParamsForIsFiniteFloat() { std::vector params{ IsFiniteParams(ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{false, true, - true, true, - false, true, - true, false}) - }; + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{false, true, true, true, false, true, true, false})}; return params; } @@ -100,9 +103,8 @@ std::vector generateCombinedParamsForIsFinite() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_IsFinite_With_Hardcoded_Refs, - ReferenceIsFiniteLayerTest, - ::testing::ValuesIn(generateCombinedParamsForIsFinite()), - ReferenceIsFiniteLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_IsFinite_With_Hardcoded_Refs, + ReferenceIsFiniteLayerTest, + ::testing::ValuesIn(generateCombinedParamsForIsFinite()), + ReferenceIsFiniteLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/is_inf.cpp b/src/plugins/template/tests/functional/op_reference/is_inf.cpp index 00437481be4803..83f4660c659255 100644 --- a/src/plugins/template/tests/functional/op_reference/is_inf.cpp +++ b/src/plugins/template/tests/functional/op_reference/is_inf.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/is_inf.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/is_inf.hpp" using namespace ov; using namespace reference_tests; @@ -60,9 +62,9 @@ class ReferenceIsInfLayerTest : public testing::TestWithParam, publ private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type, - op::v10::IsInf::Attributes attrs) { + const element::Type& input_type, + const element::Type& expected_output_type, + op::v10::IsInf::Attributes attrs) { const auto in = std::make_shared(input_type, input_shape); const auto is_inf = std::make_shared(in, attrs); return std::make_shared(NodeVector{is_inf}, ParameterVector{in}); @@ -78,20 +80,20 @@ std::vector generateParamsForIsInfDefault() { using T = typename element_type_traits::value_type; using U = typename element_type_traits::value_type; op::v10::IsInf::Attributes attrs{}; - std::vector params{ - IsInfParams("IsInfDefault", ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{true, false, - false, false, - true, false, - false, false}, - attrs - ) - }; + std::vector params{IsInfParams("IsInfDefault", + ov::PartialShape{8}, + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{true, false, false, false, true, false, false, false}, + attrs)}; return params; } @@ -101,20 +103,20 @@ std::vector generateParamsForIsInfPositive() { using U = typename element_type_traits::value_type; op::v10::IsInf::Attributes attrs{}; attrs.detect_negative = false; - std::vector params{ - IsInfParams("IsInfPositiveOnly", ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{true, false, - false, false, - false, false, - false, false}, - attrs - ) - }; + std::vector params{IsInfParams("IsInfPositiveOnly", + ov::PartialShape{8}, + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{true, false, false, false, false, false, false, false}, + attrs)}; return params; } @@ -124,20 +126,20 @@ std::vector generateParamsForIsInfNegative() { using U = typename element_type_traits::value_type; op::v10::IsInf::Attributes attrs{}; attrs.detect_positive = false; - std::vector params{ - IsInfParams("IsInfNegativeOnly", ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{false, false, - false, false, - true, false, - false, false}, - attrs - ) - }; + std::vector params{IsInfParams("IsInfNegativeOnly", + ov::PartialShape{8}, + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{false, false, false, false, true, false, false, false}, + attrs)}; return params; } @@ -148,20 +150,20 @@ std::vector generateParamsForIsInfNone() { op::v10::IsInf::Attributes attrs{}; attrs.detect_negative = false; attrs.detect_positive = false; - std::vector params{ - IsInfParams("IsInfDetectNone", ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{false, false, - false, false, - false, false, - false, false}, - attrs - ) - }; + std::vector params{IsInfParams("IsInfDetectNone", + ov::PartialShape{8}, + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{false, false, false, false, false, false, false, false}, + attrs)}; return params; } @@ -194,9 +196,8 @@ std::vector generateCombinedParamsForIsInf() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_IsInf_With_Hardcoded_Refs, - ReferenceIsInfLayerTest, - ::testing::ValuesIn(generateCombinedParamsForIsInf()), - ReferenceIsInfLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_IsInf_With_Hardcoded_Refs, + ReferenceIsInfLayerTest, + ::testing::ValuesIn(generateCombinedParamsForIsInf()), + ReferenceIsInfLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/is_nan.cpp b/src/plugins/template/tests/functional/op_reference/is_nan.cpp index edc00e26c11f9c..d8163b0587703c 100644 --- a/src/plugins/template/tests/functional/op_reference/is_nan.cpp +++ b/src/plugins/template/tests/functional/op_reference/is_nan.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/is_nan.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/is_nan.hpp" using namespace ov; using namespace reference_tests; @@ -14,10 +16,10 @@ namespace { struct IsNaNParams { template IsNaNParams(const PartialShape& shape, - const element::Type& iType, - const element::Type& oType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const element::Type& oType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(oType), @@ -51,8 +53,8 @@ class ReferenceIsNaNLayerTest : public testing::TestWithParam, publ private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto is_nan = std::make_shared(in); return std::make_shared(NodeVector{is_nan}, ParameterVector{in}); @@ -68,18 +70,18 @@ std::vector generateParamsForIsNaNFloat() { using T = typename element_type_traits::value_type; using U = typename element_type_traits::value_type; - std::vector params{ - IsNaNParams(ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{false, false, - false, false, - false, false, - false, true}) - }; + std::vector params{IsNaNParams(ov::PartialShape{8}, + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{false, false, false, false, false, false, false, true})}; return params; } @@ -100,9 +102,8 @@ std::vector generateCombinedParamsForIsNaN() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_IsNaN_With_Hardcoded_Refs, - ReferenceIsNaNLayerTest, - ::testing::ValuesIn(generateCombinedParamsForIsNaN()), - ReferenceIsNaNLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_IsNaN_With_Hardcoded_Refs, + ReferenceIsNaNLayerTest, + ::testing::ValuesIn(generateCombinedParamsForIsNaN()), + ReferenceIsNaNLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/less.cpp b/src/plugins/template/tests/functional/op_reference/less.cpp index 0c540020de8700..0ec6fbe0dd2e94 100644 --- a/src/plugins/template/tests/functional/op_reference/less.cpp +++ b/src/plugins/template/tests/functional/op_reference/less.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/less.hpp" + #include -#include "openvino/op/less.hpp" #include "comparison.hpp" using namespace ov; @@ -16,43 +17,43 @@ namespace { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} .compType(ComparisonTypes::LESS) - .input1({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .input2({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .expected({{2, 2}, element::boolean, std::vector {0, 0, 0, 0}}), - Builder {} + .input1({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .input2({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .expected({{2, 2}, element::boolean, std::vector{0, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::LESS) - .input1({{2, 3}, type, std::vector {0, 6, 45, 1, 21, 21}}) - .input2({{2, 3}, type, std::vector {1, 18, 23, 1, 19, 21}}) - .expected({{2, 3}, element::boolean, std::vector {1, 1, 0, 0, 0, 0}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 6, 45, 1, 21, 21}}) + .input2({{2, 3}, type, std::vector{1, 18, 23, 1, 19, 21}}) + .expected({{2, 3}, element::boolean, std::vector{1, 1, 0, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::LESS) - .input1({{1}, type, std::vector {53}}) - .input2({{1}, type, std::vector {53}}) - .expected({{1}, element::boolean, std::vector {0}}), - Builder {} + .input1({{1}, type, std::vector{53}}) + .input2({{1}, type, std::vector{53}}) + .expected({{1}, element::boolean, std::vector{0}}), + Builder{} .compType(ComparisonTypes::LESS) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 11, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {0, 0, 0, 0, 1, 0, 0, 0}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 11, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{0, 0, 0, 0, 1, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::LESS) - .input1({{3, 1, 2}, type, std::vector {2, 1, 4, 1, 3, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{3, 2, 2}, element::boolean, std::vector {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}), - Builder {} + .input1({{3, 1, 2}, type, std::vector{2, 1, 4, 1, 3, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{3, 2, 2}, element::boolean, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::LESS) - .input1({{2, 1, 2, 1}, type, std::vector {2, 1, 4, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {0, 0, 0, 0}})}; + .input1({{2, 1, 2, 1}, type, std::vector{2, 1, 4, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{0, 0, 0, 0}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i32), @@ -66,8 +67,10 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/less_eq.cpp b/src/plugins/template/tests/functional/op_reference/less_eq.cpp index 4e6122dd8bbc4c..183068ac519e93 100644 --- a/src/plugins/template/tests/functional/op_reference/less_eq.cpp +++ b/src/plugins/template/tests/functional/op_reference/less_eq.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/less_eq.hpp" + #include -#include "openvino/op/less_eq.hpp" #include "comparison.hpp" using namespace ov; @@ -16,43 +17,43 @@ namespace { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .input2({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .expected({{2, 2}, element::boolean, std::vector {1, 1, 1, 1}}), - Builder {} + .input1({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .input2({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .expected({{2, 2}, element::boolean, std::vector{1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{2, 3}, type, std::vector {0, 6, 45, 1, 21, 21}}) - .input2({{2, 3}, type, std::vector {1, 18, 23, 1, 19, 21}}) - .expected({{2, 3}, element::boolean, std::vector {1, 1, 0, 1, 0, 1}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 6, 45, 1, 21, 21}}) + .input2({{2, 3}, type, std::vector{1, 18, 23, 1, 19, 21}}) + .expected({{2, 3}, element::boolean, std::vector{1, 1, 0, 1, 0, 1}}), + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{1}, type, std::vector {53}}) - .input2({{1}, type, std::vector {53}}) - .expected({{1}, element::boolean, std::vector {1}}), - Builder {} + .input1({{1}, type, std::vector{53}}) + .input2({{1}, type, std::vector{53}}) + .expected({{1}, element::boolean, std::vector{1}}), + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 11, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {1, 1, 1, 1, 1, 1, 1, 1}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 11, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{1, 1, 1, 1, 1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{3, 1, 2}, type, std::vector {2, 1, 4, 1, 3, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{3, 2, 2}, element::boolean, std::vector {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}}), - Builder {} + .input1({{3, 1, 2}, type, std::vector{2, 1, 4, 1, 3, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{3, 2, 2}, element::boolean, std::vector{0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}}), + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{2, 1, 2, 1}, type, std::vector {2, 1, 4, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {0, 1, 0, 1}})}; + .input1({{2, 1, 2, 1}, type, std::vector{2, 1, 4, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{0, 1, 0, 1}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i32), @@ -66,8 +67,10 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/log.cpp b/src/plugins/template/tests/functional/op_reference/log.cpp index 1c4d8b09892585..792db8892982cc 100644 --- a/src/plugins/template/tests/functional/op_reference/log.cpp +++ b/src/plugins/template/tests/functional/op_reference/log.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/log.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/log.hpp" using namespace ov; using namespace reference_tests; @@ -14,9 +16,9 @@ namespace { struct LogParams { template LogParams(const PartialShape& shape, - const element::Type& iType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -50,8 +52,8 @@ class ReferenceLogLayerTest : public testing::TestWithParam, public C private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto log = std::make_shared(in); return std::make_shared(NodeVector{log}, ParameterVector{in}); @@ -66,38 +68,36 @@ template std::vector generateParamsForLog() { using T = typename element_type_traits::value_type; - std::vector logParams{ - LogParams(ov::PartialShape{8}, - IN_ET, - std::vector{0.125f, 0.25f, 0.5f, 1.f, 2.f, 4.f, 8.f, 16.f}, - std::vector{-2.07944154f, -1.38629436f, -0.69314718f, 0.00000000f, 0.69314718f, 1.38629436f, 2.07944154f, 2.77258872f}) - }; + std::vector logParams{LogParams(ov::PartialShape{8}, + IN_ET, + std::vector{0.125f, 0.25f, 0.5f, 1.f, 2.f, 4.f, 8.f, 16.f}, + std::vector{-2.07944154f, + -1.38629436f, + -0.69314718f, + 0.00000000f, + 0.69314718f, + 1.38629436f, + 2.07944154f, + 2.77258872f})}; return logParams; } - template std::vector generateParamsForLogInt() { using T = typename element_type_traits::value_type; std::vector logParams{ - LogParams(ov::PartialShape{4}, - IN_ET, - std::vector{10, 100, 1000, 10000}, - std::vector{2, 4, 6, 9}) - }; + LogParams(ov::PartialShape{4}, IN_ET, std::vector{10, 100, 1000, 10000}, std::vector{2, 4, 6, 9})}; return logParams; } std::vector generateCombinedParamsForLog() { - const std::vector> allTypeParams{ - generateParamsForLog(), - generateParamsForLog(), - generateParamsForLogInt(), - generateParamsForLogInt(), - generateParamsForLogInt(), - generateParamsForLogInt() - }; + const std::vector> allTypeParams{generateParamsForLog(), + generateParamsForLog(), + generateParamsForLogInt(), + generateParamsForLogInt(), + generateParamsForLogInt(), + generateParamsForLogInt()}; std::vector combinedParams; @@ -108,10 +108,9 @@ std::vector generateCombinedParamsForLog() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Log_With_Hardcoded_Refs, - ReferenceLogLayerTest, - ::testing::ValuesIn(generateCombinedParamsForLog()), - ReferenceLogLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Log_With_Hardcoded_Refs, + ReferenceLogLayerTest, + ::testing::ValuesIn(generateCombinedParamsForLog()), + ReferenceLogLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/log_softmax.cpp b/src/plugins/template/tests/functional/op_reference/log_softmax.cpp index d449e0bcfaf439..1d834f6ff71cfb 100644 --- a/src/plugins/template/tests/functional/op_reference/log_softmax.cpp +++ b/src/plugins/template/tests/functional/op_reference/log_softmax.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/log_softmax.hpp" + #include -#include "openvino/op/log_softmax.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,8 +15,11 @@ using namespace InferenceEngine; namespace { struct LogSoftmaxParams { template - LogSoftmaxParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const int64_t axis) + LogSoftmaxParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const int64_t axis) : axis(axis), pshape(shape), inType(iType), @@ -51,11 +55,13 @@ class ReferenceLogSoftmaxLayerTest : public testing::TestWithParam CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const int64_t axis) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const int64_t axis) { const auto in = std::make_shared(input_type, input_shape); const auto LogSoftmax = std::make_shared(in, axis); - return std::make_shared(NodeVector {LogSoftmax}, ParameterVector {in}); + return std::make_shared(NodeVector{LogSoftmax}, ParameterVector{in}); } }; @@ -67,173 +73,171 @@ template std::vector generateLogSoftmaxFloatParams() { using T = typename element_type_traits::value_type; - std::vector logSoftmaxParams { - LogSoftmaxParams(ov::PartialShape {1}, - IN_ET, - std::vector{1}, - std::vector{0}, - 0), - LogSoftmaxParams(ov::PartialShape {2, 4}, - IN_ET, - std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, - std::vector{-10000., -10000., -10000., -10000., 0., 0., 0., 0.}, - 0), - LogSoftmaxParams(ov::PartialShape {2, 4}, - IN_ET, - std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, - std::vector{-3.4401896, -2.4401896, -1.4401897, -0.4401897, -3.4401896, -2.4401896, -1.4401897, -0.4401897}, - 1), - LogSoftmaxParams(ov::PartialShape {2, 4}, - IN_ET, - std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, - std::vector{-3.4401896, -2.4401896, -1.4401897, -0.4401897, -3.4401896, -2.4401896, -1.4401897, -0.4401897}, - -1), - LogSoftmaxParams(ov::PartialShape {2, 4}, - IN_ET, - std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, - std::vector{-10000., -10000., -10000., -10000., 0., 0., 0., 0.}, - -2), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03}, - 0), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735, - -3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735, - -3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735}, - 1), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596}, - 2), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596}, - -1), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735, - -3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735, - -3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735}, - -2), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03}, - -3) - }; + std::vector logSoftmaxParams{ + LogSoftmaxParams(ov::PartialShape{1}, IN_ET, std::vector{1}, std::vector{0}, 0), + LogSoftmaxParams(ov::PartialShape{2, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, + std::vector{-10000., -10000., -10000., -10000., 0., 0., 0., 0.}, + 0), + LogSoftmaxParams( + ov::PartialShape{2, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, + std::vector< + T>{-3.4401896, -2.4401896, -1.4401897, -0.4401897, -3.4401896, -2.4401896, -1.4401897, -0.4401897}, + 1), + LogSoftmaxParams( + ov::PartialShape{2, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, + std::vector< + T>{-3.4401896, -2.4401896, -1.4401897, -0.4401897, -3.4401896, -2.4401896, -1.4401897, -0.4401897}, + -1), + LogSoftmaxParams(ov::PartialShape{2, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, + std::vector{-10000., -10000., -10000., -10000., 0., 0., 0., 0.}, + -2), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03}, + 0), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735, + -3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735, + -3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735}, + 1), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596}, + 2), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596}, + -1), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735, + -3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735, + -3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735}, + -2), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03}, + -3)}; return logSoftmaxParams; } std::vector generateLogSoftmaxCombinedParams() { - const std::vector> logSoftmaxTypeParams { + const std::vector> logSoftmaxTypeParams{ generateLogSoftmaxFloatParams(), - generateLogSoftmaxFloatParams() - }; + generateLogSoftmaxFloatParams()}; std::vector combinedParams; for (const auto& params : logSoftmaxTypeParams) { @@ -242,7 +246,9 @@ std::vector generateLogSoftmaxCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LogSoftmax_With_Hardcoded_Refs, ReferenceLogSoftmaxLayerTest, - testing::ValuesIn(generateLogSoftmaxCombinedParams()), ReferenceLogSoftmaxLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LogSoftmax_With_Hardcoded_Refs, + ReferenceLogSoftmaxLayerTest, + testing::ValuesIn(generateLogSoftmaxCombinedParams()), + ReferenceLogSoftmaxLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/logical.hpp b/src/plugins/template/tests/functional/op_reference/logical.hpp index f5bd6c0e9a3413..894b262bcb6115 100644 --- a/src/plugins/template/tests/functional/op_reference/logical.hpp +++ b/src/plugins/template/tests/functional/op_reference/logical.hpp @@ -5,7 +5,6 @@ #include #include "base_reference_test.hpp" - #include "openvino/op/logical_and.hpp" #include "openvino/op/logical_not.hpp" #include "openvino/op/logical_or.hpp" @@ -16,12 +15,7 @@ using namespace ov; namespace reference_tests { namespace LogicalOpsRefTestDefinitions { -enum LogicalTypes { - LOGICAL_AND, - LOGICAL_OR, - LOGICAL_XOR, - LOGICAL_NOT -}; +enum LogicalTypes { LOGICAL_AND, LOGICAL_OR, LOGICAL_XOR, LOGICAL_NOT }; struct RefLogicalParams { LogicalTypes opType; @@ -49,7 +43,7 @@ class ReferenceLogicalLayerTest : public testing::TestWithParam CreateFunction(LogicalTypes op_type, const std::vector& inputs) { + static std::shared_ptr CreateFunction(LogicalTypes op_type, + const std::vector& inputs) { ov::ParameterVector params_vec; for (auto& input : inputs) { params_vec.push_back(std::make_shared(input.type, input.shape)); @@ -86,8 +81,8 @@ class ReferenceLogicalLayerTest : public testing::TestWithParam(ov::NodeVector {logical_op}, ov::ParameterVector {params_vec}); + } + return std::make_shared(ov::NodeVector{logical_op}, ov::ParameterVector{params_vec}); } }; } // namespace LogicalOpsRefTestDefinitions diff --git a/src/plugins/template/tests/functional/op_reference/logical_and.cpp b/src/plugins/template/tests/functional/op_reference/logical_and.cpp index 254b3e0c8d86ef..a4ec39b1249d0e 100644 --- a/src/plugins/template/tests/functional/op_reference/logical_and.cpp +++ b/src/plugins/template/tests/functional/op_reference/logical_and.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/logical_and.hpp" + #include -#include "openvino/op/logical_and.hpp" #include "logical.hpp" using namespace ov; @@ -14,26 +15,34 @@ namespace LogicalOpsRefTestDefinitions { namespace { std::vector generateLogicalParams() { - std::vector logicalParams { - Builder {} + std::vector logicalParams{ + Builder{} .opType(LogicalTypes::LOGICAL_AND) - .inputs({{{2, 2}, element::boolean, std::vector {true, false, true, false}}, - {{2, 2}, element::boolean, std::vector {false, true, true, false}}}) - .expected({{2, 2}, element::boolean, std::vector {false, false, true, false}}), - Builder {} + .inputs({{{2, 2}, element::boolean, std::vector{true, false, true, false}}, + {{2, 2}, element::boolean, std::vector{false, true, true, false}}}) + .expected({{2, 2}, element::boolean, std::vector{false, false, true, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_AND) - .inputs({{{2, 1, 2, 1}, element::boolean, std::vector {true, false, true, false}}, - {{1, 1, 2, 1}, element::boolean, std::vector {true, false}}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {true, false, true, false}}), - Builder {} + .inputs({{{2, 1, 2, 1}, element::boolean, std::vector{true, false, true, false}}, + {{1, 1, 2, 1}, element::boolean, std::vector{true, false}}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{true, false, true, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_AND) - .inputs({{{3, 4}, element::boolean, std::vector {true, true, true, true, true, false, true, false, false, true, true, true}}, - {{3, 4}, element::boolean, std::vector {true, true, true, true, true, false, true, false, false, true, true, false}}}) - .expected({{3, 4}, element::boolean, std::vector {true, true, true, true, true, false, true, false, false, true, true, false}})}; + .inputs({{{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, false, true, false, false, true, true, true}}, + {{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, false, true, false, false, true, true, false}}}) + .expected({{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, false, true, false, false, true, true, false}})}; return logicalParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LogicalAnd_With_Hardcoded_Refs, ReferenceLogicalLayerTest, ::testing::ValuesIn(generateLogicalParams()), +INSTANTIATE_TEST_SUITE_P(smoke_LogicalAnd_With_Hardcoded_Refs, + ReferenceLogicalLayerTest, + ::testing::ValuesIn(generateLogicalParams()), ReferenceLogicalLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/logical_not.cpp b/src/plugins/template/tests/functional/op_reference/logical_not.cpp index fb63207d99a6b1..4a596416d856a1 100644 --- a/src/plugins/template/tests/functional/op_reference/logical_not.cpp +++ b/src/plugins/template/tests/functional/op_reference/logical_not.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/logical_not.hpp" + #include -#include "openvino/op/logical_not.hpp" #include "logical.hpp" using namespace ov; @@ -14,15 +15,17 @@ namespace LogicalOpsRefTestDefinitions { namespace { std::vector generateLogicalParams() { - std::vector logicalParams { - Builder {} + std::vector logicalParams{ + Builder{} .opType(LogicalTypes::LOGICAL_NOT) - .inputs({{{2, 2}, element::boolean, std::vector {true, false, true, false}}}) - .expected({{2, 2}, element::boolean, std::vector {false, true, false, true}})}; + .inputs({{{2, 2}, element::boolean, std::vector{true, false, true, false}}}) + .expected({{2, 2}, element::boolean, std::vector{false, true, false, true}})}; return logicalParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LogicalNot_With_Hardcoded_Refs, ReferenceLogicalLayerTest, ::testing::ValuesIn(generateLogicalParams()), +INSTANTIATE_TEST_SUITE_P(smoke_LogicalNot_With_Hardcoded_Refs, + ReferenceLogicalLayerTest, + ::testing::ValuesIn(generateLogicalParams()), ReferenceLogicalLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/logical_or.cpp b/src/plugins/template/tests/functional/op_reference/logical_or.cpp index 34249cfea693e9..db0021acc1f09e 100644 --- a/src/plugins/template/tests/functional/op_reference/logical_or.cpp +++ b/src/plugins/template/tests/functional/op_reference/logical_or.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/logical_or.hpp" + #include -#include "openvino/op/logical_or.hpp" #include "logical.hpp" using namespace ov; @@ -14,26 +15,34 @@ namespace LogicalOpsRefTestDefinitions { namespace { std::vector generateLogicalParams() { - std::vector logicalParams { - Builder {} + std::vector logicalParams{ + Builder{} .opType(LogicalTypes::LOGICAL_OR) - .inputs({{{2, 2}, element::boolean, std::vector {true, false, true, false}}, - {{2, 2}, element::boolean, std::vector {false, true, true, false}}}) - .expected({{2, 2}, element::boolean, std::vector {true, true, true, false}}), - Builder {} + .inputs({{{2, 2}, element::boolean, std::vector{true, false, true, false}}, + {{2, 2}, element::boolean, std::vector{false, true, true, false}}}) + .expected({{2, 2}, element::boolean, std::vector{true, true, true, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_OR) - .inputs({{{2, 1, 2, 1}, element::boolean, std::vector {true, false, true, false}}, - {{1, 1, 2, 1}, element::boolean, std::vector {true, false}}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {true, false, true, false}}), - Builder {} + .inputs({{{2, 1, 2, 1}, element::boolean, std::vector{true, false, true, false}}, + {{1, 1, 2, 1}, element::boolean, std::vector{true, false}}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{true, false, true, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_OR) - .inputs({{{3, 4}, element::boolean, std::vector {true, true, true, true, true, false, true, false, false, true, true, true}}, - {{3, 4}, element::boolean, std::vector {true, true, true, true, true, true, true, false, false, true, true, false}}}) - .expected({{3, 4}, element::boolean, std::vector {true, true, true, true, true, true, true, false, false, true, true, true}})}; + .inputs({{{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, false, true, false, false, true, true, true}}, + {{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, true, true, false, false, true, true, false}}}) + .expected({{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, true, true, false, false, true, true, true}})}; return logicalParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LogicalOr_With_Hardcoded_Refs, ReferenceLogicalLayerTest, ::testing::ValuesIn(generateLogicalParams()), +INSTANTIATE_TEST_SUITE_P(smoke_LogicalOr_With_Hardcoded_Refs, + ReferenceLogicalLayerTest, + ::testing::ValuesIn(generateLogicalParams()), ReferenceLogicalLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/logical_xor.cpp b/src/plugins/template/tests/functional/op_reference/logical_xor.cpp index 30be39f2e77359..20d07a28a482d1 100644 --- a/src/plugins/template/tests/functional/op_reference/logical_xor.cpp +++ b/src/plugins/template/tests/functional/op_reference/logical_xor.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/logical_xor.hpp" + #include -#include "openvino/op/logical_xor.hpp" #include "logical.hpp" using namespace ov; @@ -14,26 +15,35 @@ namespace LogicalOpsRefTestDefinitions { namespace { std::vector generateLogicalParams() { - std::vector logicalParams { - Builder {} + std::vector logicalParams{ + Builder{} .opType(LogicalTypes::LOGICAL_XOR) - .inputs({{{2, 2}, element::boolean, std::vector {true, false, true, false}}, - {{2, 2}, element::boolean, std::vector {false, true, true, false}}}) - .expected({{2, 2}, element::boolean, std::vector {true, true, false, false}}), - Builder {} + .inputs({{{2, 2}, element::boolean, std::vector{true, false, true, false}}, + {{2, 2}, element::boolean, std::vector{false, true, true, false}}}) + .expected({{2, 2}, element::boolean, std::vector{true, true, false, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_XOR) - .inputs({{{2, 1, 2, 1}, element::boolean, std::vector {true, false, true, false}}, - {{1, 1, 2, 1}, element::boolean, std::vector {true, false}}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {false, false, false, false}}), - Builder {} + .inputs({{{2, 1, 2, 1}, element::boolean, std::vector{true, false, true, false}}, + {{1, 1, 2, 1}, element::boolean, std::vector{true, false}}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{false, false, false, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_XOR) - .inputs({{{3, 4}, element::boolean, std::vector {true, true, true, true, true, false, true, false, false, true, true, true}}, - {{3, 4}, element::boolean, std::vector {true, true, true, true, true, true, true, false, false, true, true, false}}}) - .expected({{3, 4}, element::boolean, std::vector {false, false, false, false, false, true, false, false, false, false, false, true}})}; + .inputs({{{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, false, true, false, false, true, true, true}}, + {{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, true, true, false, false, true, true, false}}}) + .expected( + {{3, 4}, + element::boolean, + std::vector{false, false, false, false, false, true, false, false, false, false, false, true}})}; return logicalParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LogicalOr_With_Hardcoded_Refs, ReferenceLogicalLayerTest, ::testing::ValuesIn(generateLogicalParams()), +INSTANTIATE_TEST_SUITE_P(smoke_LogicalOr_With_Hardcoded_Refs, + ReferenceLogicalLayerTest, + ::testing::ValuesIn(generateLogicalParams()), ReferenceLogicalLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/loop.cpp b/src/plugins/template/tests/functional/op_reference/loop.cpp index 3e7f9ad63b51bf..7ff49b7173f9ab 100644 --- a/src/plugins/template/tests/functional/op_reference/loop.cpp +++ b/src/plugins/template/tests/functional/op_reference/loop.cpp @@ -8,14 +8,11 @@ #include #include "base_reference_test.hpp" -#include "functional_test_utils/skip_tests_config.hpp" #include "common_test_utils/common_utils.hpp" +#include "functional_test_utils/skip_tests_config.hpp" namespace { -enum LOOP_IN_TYPE { - INVARIANT, - MERGED -}; +enum LOOP_IN_TYPE { INVARIANT, MERGED }; struct LoopFunctionalBase { virtual std::shared_ptr create_function(const std::vector& loop_inputs, @@ -49,8 +46,8 @@ struct LoopDynamicInputs : public LoopFunctionalBase { // Body auto sum = std::make_shared(Xi, Yi); auto Zo = std::make_shared(sum, M_body); - auto body = std::make_shared(ov::OutputVector{body_condition, Zo}, - ov::ParameterVector{Xi, Yi, M_body}); + auto body = + std::make_shared(ov::OutputVector{body_condition, Zo}, ov::ParameterVector{Xi, Yi, M_body}); auto loop = std::make_shared(trip_count, exec_condition); loop->set_function(body); @@ -72,10 +69,10 @@ struct LoopParams { const std::vector& loop_inputs, const std::vector& expected_results, const std::string& test_case_name) - : function(functional), - inputs(loop_inputs), - expected_results(expected_results), - test_case_name(test_case_name) {} + : function(functional), + inputs(loop_inputs), + expected_results(expected_results), + test_case_name(test_case_name) {} std::shared_ptr function; std::vector inputs; @@ -109,23 +106,22 @@ TEST_P(ReferenceLoopLayerTest, TensorIteratorWithHardcodedRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_TensorIterator_With_Hardcoded_Refs, - ReferenceLoopLayerTest, - ::testing::Values( - LoopParams( - std::make_shared(), - std::vector{ - reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{0, 1, 2, 3}), - reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{5, 4, 3, 2})}, - // 5*(0+1)*(0+1)*(0+1) = 5 - // 4*(1+2)*(1+2)*(1+2) = 108 - // 3*(2+3)*(2+3)*(2+3) = 375 - // 2*(3+4)*(3+4)*(3+4) = 686 - std::vector{ - reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{5, 108, 375, 686})}, - "loop_dynamic_inputs")), - ReferenceLoopLayerTest::getTestCaseName); + smoke_TensorIterator_With_Hardcoded_Refs, + ReferenceLoopLayerTest, + ::testing::Values(LoopParams( + std::make_shared(), + std::vector{ + reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{0, 1, 2, 3}), + reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{5, 4, 3, 2})}, + // 5*(0+1)*(0+1)*(0+1) = 5 + // 4*(1+2)*(1+2)*(1+2) = 108 + // 3*(2+3)*(2+3)*(2+3) = 375 + // 2*(3+4)*(3+4)*(3+4) = 686 + std::vector{ + reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{5, 108, 375, 686})}, + "loop_dynamic_inputs")), + ReferenceLoopLayerTest::getTestCaseName); struct LoopStaticInputs : public LoopFunctionalBase { std::shared_ptr create_function(const std::vector& loop_inputs, @@ -146,7 +142,8 @@ struct LoopStaticInputs : public LoopFunctionalBase { body_params.emplace_back(std::make_shared(net_type, pshape)); } - const auto body_condition_const = std::make_shared(ov::element::boolean, ov::Shape{1}, true); + const auto body_condition_const = + std::make_shared(ov::element::boolean, ov::Shape{1}, true); const auto exec_condition = std::make_shared(ov::element::boolean, ov::Shape{1}, true); std::shared_ptr trip_count_input; trip_count_input = std::make_shared(ov::element::i64, ov::Shape{1}, trip_count); @@ -157,8 +154,7 @@ struct LoopStaticInputs : public LoopFunctionalBase { Zo = std::make_shared(body_params[i], Zo); } - const auto body = std::make_shared(ov::OutputVector{body_condition_const, Zo}, - body_params); + const auto body = std::make_shared(ov::OutputVector{body_condition_const, Zo}, body_params); const auto loop = std::make_shared(trip_count_input, exec_condition); loop->set_function(body); @@ -184,27 +180,27 @@ struct LoopStaticInputs : public LoopFunctionalBase { const auto result0 = std::make_shared(out0); const auto result1 = std::make_shared(out1); const auto result2 = std::make_shared(out2); - const auto function = std::make_shared(ov::ResultVector{result0, result1, result2}, loop_params, "loop"); + const auto function = + std::make_shared(ov::ResultVector{result0, result1, result2}, loop_params, "loop"); return function; } }; struct LoopStaticParams { - LoopStaticParams( - const std::shared_ptr& functional, - const std::vector& loop_inputs, - const std::vector& expected_results, - const int64_t& trip_count, - const std::vector& loop_in_type, - const ov::element::Type& net_type, - const std::string& test_case_name) - : function(functional), - inputs(loop_inputs), - expected_results(expected_results), - trip_count(trip_count), - loop_in_type(loop_in_type), - net_type(net_type), - test_case_name(test_case_name) {} + LoopStaticParams(const std::shared_ptr& functional, + const std::vector& loop_inputs, + const std::vector& expected_results, + const int64_t& trip_count, + const std::vector& loop_in_type, + const ov::element::Type& net_type, + const std::string& test_case_name) + : function(functional), + inputs(loop_inputs), + expected_results(expected_results), + trip_count(trip_count), + loop_in_type(loop_in_type), + net_type(net_type), + test_case_name(test_case_name) {} std::shared_ptr function; std::vector inputs; @@ -215,7 +211,8 @@ struct LoopStaticParams { std::string test_case_name; }; -class ReferenceLoopLayerStaticTest : public testing::TestWithParam, public reference_tests::CommonReferenceTest { +class ReferenceLoopLayerStaticTest : public testing::TestWithParam, + public reference_tests::CommonReferenceTest { public: void SetUp() override { SKIP_IF_CURRENT_TEST_IS_DISABLED() @@ -262,138 +259,110 @@ TEST_P(ReferenceLoopLayerStaticTest, CompareWithRefs) { template std::vector generateParams() { using T = typename ov::element_type_traits::value_type; - std::vector params { + std::vector params{ LoopStaticParams( - std::make_shared(), - {reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2}), - reference_tests::Tensor( - ET, - {1, 1, 1}, - std::vector{7}), - reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2})}, - {reference_tests::Tensor( - ov::element::Type_t::boolean, - {1}, - std::vector{1}), - reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11}), - reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11})}, - 1, - {LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::MERGED}, - ET, - "loop_for_common"), + std::make_shared(), + {reference_tests::Tensor(ET, {10, 1, 10}, std::vector{7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, + 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, + 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, + 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, + 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, + 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2}), + reference_tests::Tensor(ET, {1, 1, 1}, std::vector{7}), + reference_tests::Tensor(ET, {10, 1, 10}, std::vector{7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, + 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, + 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, + 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, + 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, + 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2})}, + {reference_tests::Tensor(ov::element::Type_t::boolean, {1}, std::vector{1}), + reference_tests::Tensor( + ET, + {10, 1, 10}, + std::vector{21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11}), + reference_tests::Tensor( + ET, + {10, 1, 10}, + std::vector{21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11})}, + 1, + {LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::MERGED}, + ET, + "loop_for_common"), LoopStaticParams( - std::make_shared(), - {reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2}), - reference_tests::Tensor( - ET, - {1, 1, 1}, - std::vector{7}), - reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2})}, - {reference_tests::Tensor( - ov::element::Type_t::boolean, - {1}, - std::vector{1}), - reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, - 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, - 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47}), - reference_tests::Tensor( - ET, - {10, 5, 10}, - std::vector{ - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, - 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, - 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, - - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 23, 14, 17, 32, 35, 26, 29, 20, 23, 14, - 33, 21, 25, 45, 49, 37, 41, 29, 33, 21, 43, 28, 33, 58, 63, 48, 53, 38, 43, 28, - 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 17, 32, 35, 26, 29, 20, 23, 14, 17, 32, 25, 45, 49, 37, 41, 29, 33, 21, 25, 45, - 33, 58, 63, 48, 53, 38, 43, 28, 33, 58, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, - - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, - 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, - 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, - - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 23, 14, 17, 32, 35, 26, 29, 20, 23, 14, - 33, 21, 25, 45, 49, 37, 41, 29, 33, 21, 43, 28, 33, 58, 63, 48, 53, 38, 43, 28, - 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 17, 32, 35, 26, 29, 20, 23, 14, 17, 32, 25, 45, 49, 37, 41, 29, 33, 21, 25, 45, - 33, 58, 63, 48, 53, 38, 43, 28, 33, 58, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, - - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, - 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, - 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47})}, - 5, - {LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::MERGED}, - ET, - "loop_for_common"), + std::make_shared(), + {reference_tests::Tensor(ET, {10, 1, 10}, std::vector{7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, + 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, + 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, + 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, + 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, + 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2}), + reference_tests::Tensor(ET, {1, 1, 1}, std::vector{7}), + reference_tests::Tensor(ET, {10, 1, 10}, std::vector{7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, + 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, + 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, + 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, + 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, + 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2})}, + {reference_tests::Tensor(ov::element::Type_t::boolean, {1}, std::vector{1}), + reference_tests::Tensor( + ET, + {10, 1, 10}, + std::vector{77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, + 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, + 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, + 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, + 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47}), + reference_tests::Tensor( + ET, + {10, 5, 10}, + std::vector{21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, + 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, + 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, + 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, + + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 23, 14, 17, 32, 35, 26, 29, 20, 23, 14, + 33, 21, 25, 45, 49, 37, 41, 29, 33, 21, 43, 28, 33, 58, 63, 48, 53, 38, 43, 28, + 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 17, 32, 35, 26, 29, 20, 23, 14, 17, 32, 25, 45, 49, 37, 41, 29, 33, 21, 25, 45, + 33, 58, 63, 48, 53, 38, 43, 28, 33, 58, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, + + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, + 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, + 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, + 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, + + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 23, 14, 17, 32, 35, 26, 29, 20, 23, 14, + 33, 21, 25, 45, 49, 37, 41, 29, 33, 21, 43, 28, 33, 58, 63, 48, 53, 38, 43, 28, + 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 17, 32, 35, 26, 29, 20, 23, 14, 17, 32, 25, 45, 49, 37, 41, 29, 33, 21, 25, 45, + 33, 58, 63, 48, 53, 38, 43, 28, 33, 58, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, + + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, + 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, + 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, + 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47})}, + 5, + {LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::MERGED}, + ET, + "loop_for_common"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -414,6 +383,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Loop_With_Hardcoded_Refs, ReferenceLoopLayerStaticTest, - testing::ValuesIn(generateCombinedParams()), ReferenceLoopLayerStaticTest::getTestCaseName); -} +INSTANTIATE_TEST_SUITE_P(smoke_Loop_With_Hardcoded_Refs, + ReferenceLoopLayerStaticTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceLoopLayerStaticTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/lrn.cpp b/src/plugins/template/tests/functional/op_reference/lrn.cpp index 273ec0d31c361e..4e18d69e1fa119 100644 --- a/src/plugins/template/tests/functional/op_reference/lrn.cpp +++ b/src/plugins/template/tests/functional/op_reference/lrn.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/lrn.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/lrn.hpp" using namespace reference_tests; using namespace ov; @@ -115,12 +116,12 @@ class ReferenceLRNLayerTest : public testing::TestWithParam, public C private: static std::shared_ptr CreateFunction(const Shape& input_shape, - const element::Type_t& input_type, - const float& alpah, - const float& beta, - const float& bias, - const size_t& size, - const std::shared_ptr& axes) { + const element::Type_t& input_type, + const float& alpah, + const float& beta, + const float& bias, + const size_t& size, + const std::shared_ptr& axes) { auto in = std::make_shared(input_type, input_shape); std::shared_ptr lrn; @@ -161,7 +162,10 @@ std::vector generateParamsForLRN() { 0.5669467f, 0.7784989f, 0.7720487f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, NULL), // lrn_across_h LRNParams(Shape{2, 3, 2, 1}, @@ -181,7 +185,10 @@ std::vector generateParamsForLRN() { 0.7448453f, 0.6711560f, 0.7382717f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{1}, std::vector{2})), // lrn_across_hw LRNParams(Shape{2, 3, 2, 1}, @@ -201,7 +208,10 @@ std::vector generateParamsForLRN() { 1.2813632f, 1.1572751f, 1.2730026f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{2}, std::vector{2, 3})), // lrn_across_all_dims LRNParams(Shape{2, 3, 2, 1}, @@ -221,7 +231,10 @@ std::vector generateParamsForLRN() { 2.0256331f, 2.4576957f, 2.7034652f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{4}, std::vector{0, 1, 2, 3})), // lrn_across_nw LRNParams(Shape{2, 3, 2, 1}, @@ -241,7 +254,10 @@ std::vector generateParamsForLRN() { 1.6164477f, 1.5877683f, 1.5608464f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{2}, std::vector{0, 3})), // lrn_across_empty LRNParams(Shape{2, 3, 2, 1}, @@ -261,7 +277,10 @@ std::vector generateParamsForLRN() { 0.5761660f, 0.5763904f, 0.5765567f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{0}, std::vector{})), // lrn_6D_across_2_axes LRNParams(Shape{2, 3, 2, 2, 1, 1}, @@ -273,7 +292,10 @@ std::vector generateParamsForLRN() { 0.9149914f, 1.0674900f, 0.7213357f, 0.8115027f, 0.9016696f, 0.9918366f, 0.7656109f, 0.8294119f, 0.8932127f, 0.9570137f, 0.7892218f, 0.8385482f, 0.8878745f, 0.9372009f, 0.8038679f, 0.8440613f, 0.8842546f, 0.9244481f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{2}, std::vector{2, 3})), // lrn_2d_across_empty LRNParams(Shape{12}, @@ -293,9 +315,12 @@ std::vector generateParamsForLRN() { 0.5761660f, 0.5763904f, 0.5765566f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{0}, std::vector{})), - // lrn_2d_across_empty + // lrn_2d_across_empty LRNParams(Shape{6, 2}, Shape{6, 2}, ET, @@ -324,7 +349,10 @@ std::vector generateParamsForLRN() { -0.3425926f, 0.3559732f, -0.7039225f}, - 0.0002, 0.5, 2.0, 3, + 0.0002, + 0.5, + 2.0, + 3, std::make_shared(element::Type_t::i64, Shape{1}, std::vector{0})), }; @@ -332,10 +360,8 @@ std::vector generateParamsForLRN() { } std::vector generateCombinedParamsForLRN() { - const std::vector> allTypeParams{ - generateParamsForLRN(), - generateParamsForLRN() - }; + const std::vector> allTypeParams{generateParamsForLRN(), + generateParamsForLRN()}; std::vector combinedParams; @@ -346,10 +372,9 @@ std::vector generateCombinedParamsForLRN() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_LRN_With_Hardcoded_Refs, - ReferenceLRNLayerTest, - ::testing::ValuesIn(generateCombinedParamsForLRN()), - ReferenceLRNLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LRN_With_Hardcoded_Refs, + ReferenceLRNLayerTest, + ::testing::ValuesIn(generateCombinedParamsForLRN()), + ReferenceLRNLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/lstm_cell.cpp b/src/plugins/template/tests/functional/op_reference/lstm_cell.cpp index 22c7cf71fb6697..8df731e9f6f459 100644 --- a/src/plugins/template/tests/functional/op_reference/lstm_cell.cpp +++ b/src/plugins/template/tests/functional/op_reference/lstm_cell.cpp @@ -4,9 +4,9 @@ #include -#include "openvino/opsets/opset4.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset4.hpp" using namespace reference_tests; using namespace ov; @@ -159,18 +159,17 @@ class ReferenceLSTMCellTestBiasClip : public ReferenceLSTMCellTest { const auto C_t = std::make_shared(params.C_t.type, params.C_t.shape); const auto B = std::make_shared(params.B.type, params.B.shape); - const auto lstm_cell = - std::make_shared(X, - H_t, - C_t, - W, - R, - B, - params.hiddenSize, - std::vector{"sigmoid", "tanh", "tanh"}, - std::vector{}, - std::vector{}, - clip_threshold); + const auto lstm_cell = std::make_shared(X, + H_t, + C_t, + W, + R, + B, + params.hiddenSize, + std::vector{"sigmoid", "tanh", "tanh"}, + std::vector{}, + std::vector{}, + clip_threshold); auto function = std::make_shared(lstm_cell->outputs(), ParameterVector{X, H_t, C_t, W, R, B}); return function; @@ -243,7 +242,13 @@ class ReferenceLSTMCellV1TestBiasClip : public ReferenceLSTMCellTestBiasClip { threshold = 1e-1f; auto params = GetParam(); function = CreateFunction(params); - inputData = {params.X.data, params.H_t.data, params.C_t.data, params.W.data, params.R.data, params.B.data, params.P.data}; + inputData = {params.X.data, + params.H_t.data, + params.C_t.data, + params.W.data, + params.R.data, + params.B.data, + params.P.data}; refOutData = {params.Ho.data, params.Co.data}; } @@ -259,21 +264,20 @@ class ReferenceLSTMCellV1TestBiasClip : public ReferenceLSTMCellTestBiasClip { const auto B = std::make_shared(params.B.type, params.B.shape); const auto P = std::make_shared(params.P.type, params.P.shape); - const auto lstm_cell = - std::make_shared(X, - H_t, - C_t, - W, - R, - B, - P, - params.hiddenSize, - op::LSTMWeightsFormat::FICO, - std::vector{"sigmoid", "tanh", "tanh"}, - std::vector{}, - std::vector{}, - clip_threshold, - false); + const auto lstm_cell = std::make_shared(X, + H_t, + C_t, + W, + R, + B, + P, + params.hiddenSize, + op::LSTMWeightsFormat::FICO, + std::vector{"sigmoid", "tanh", "tanh"}, + std::vector{}, + std::vector{}, + clip_threshold, + false); auto function = std::make_shared(lstm_cell->outputs(), ParameterVector{X, H_t, C_t, W, R, B, P}); return function; @@ -295,43 +299,59 @@ TEST_P(ReferenceLSTMCellV1TestBiasClip, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector(4 * 3, 0.f))) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81457126f, 0.61109227f, 0.769522f, 0.52239674f, 0.4324641f, 0.63183f})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.4444952f, 0.9635685f, 1.2875274f, 0.8053419f, 0.7184521f, 0.95803297f})) - .testcaseName("lstm_cell_zero_bias_default_attrs") - }; + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, {4 * 3}, std::vector(4 * 3, 0.f))) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81457126f, 0.61109227f, 0.769522f, 0.52239674f, 0.4324641f, 0.63183f})) + .Co(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{1.4444952f, 0.9635685f, 1.2875274f, 0.8053419f, 0.7184521f, 0.95803297f})) + .testcaseName("lstm_cell_zero_bias_default_attrs")}; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -348,64 +368,81 @@ std::vector generateCombinedParams() { template std::vector generateParamsBiasDefaultAttrs() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector{1.07393714f, - 1.15248052f, - 1.16671345f, - 0.21450312f, - 1.2380678f, - 1.51688835f, - 0.46718366f, - 0.91810346f, - 1.1274234f, - 0.51022074f, - 1.11389844f, - 0.74174305f})) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81014400720596313, - 0.76665538549423218, - 0.82509011030197144, - 0.6479143500328064, - 0.66586339473724365, - 0.74838578701019287})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.6800162792205811, - 1.1150213479995728, - 1.4578367471694946, - 1.0649888515472412, - 0.93761754035949707, - 1.3659683465957642})) - .testcaseName("lstm_cell_bias_default_attrs"), + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, + {4 * 3}, + std::vector{1.07393714f, + 1.15248052f, + 1.16671345f, + 0.21450312f, + 1.2380678f, + 1.51688835f, + 0.46718366f, + 0.91810346f, + 1.1274234f, + 0.51022074f, + 1.11389844f, + 0.74174305f})) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.81014400720596313, + 0.76665538549423218, + 0.82509011030197144, + 0.6479143500328064, + 0.66586339473724365, + 0.74838578701019287})) + .Co(reference_tests::Tensor(ET, + {2, 3}, + std::vector{1.6800162792205811, + 1.1150213479995728, + 1.4578367471694946, + 1.0649888515472412, + 0.93761754035949707, + 1.3659683465957642})) + .testcaseName("lstm_cell_bias_default_attrs"), }; return params; } std::vector generateCombinedParamsBiasDefaultAttrs() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsBiasDefaultAttrs(), generateParamsBiasDefaultAttrs(), generateParamsBiasDefaultAttrs(), @@ -422,64 +459,81 @@ std::vector generateCombinedParamsBiasDefaultAttrs() { template std::vector generateParamsBiasClip() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector{1.07393714f, - 1.15248052f, - 1.16671345f, - 0.21450312f, - 1.2380678f, - 1.51688835f, - 0.46718366f, - 0.91810346f, - 1.1274234f, - 0.51022074f, - 1.11389844f, - 0.74174305f})) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81014400720596313, - 0.76665538549423218, - 0.82387429475784302, - 0.6479143500328064, - 0.66586339473724365, - 0.74838578701019287})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.6800162792205811, - 1.1150213479995728, - 1.4510968923568726, - 1.0649888515472412, - 0.93761754035949707, - 1.3659683465957642})) - .testcaseName("lstm_cell_bias_clip"), + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, + {4 * 3}, + std::vector{1.07393714f, + 1.15248052f, + 1.16671345f, + 0.21450312f, + 1.2380678f, + 1.51688835f, + 0.46718366f, + 0.91810346f, + 1.1274234f, + 0.51022074f, + 1.11389844f, + 0.74174305f})) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.81014400720596313, + 0.76665538549423218, + 0.82387429475784302, + 0.6479143500328064, + 0.66586339473724365, + 0.74838578701019287})) + .Co(reference_tests::Tensor(ET, + {2, 3}, + std::vector{1.6800162792205811, + 1.1150213479995728, + 1.4510968923568726, + 1.0649888515472412, + 0.93761754035949707, + 1.3659683465957642})) + .testcaseName("lstm_cell_bias_clip"), }; return params; } std::vector generateCombinedParamsBiasClip() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsBiasClip(), generateParamsBiasClip(), generateParamsBiasClip(), @@ -493,55 +547,77 @@ std::vector generateCombinedParamsBiasClip() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, ReferenceLSTMCellTest, - testing::ValuesIn(generateCombinedParams()), ReferenceLSTMCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, + ReferenceLSTMCellTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceLSTMCellTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, ReferenceLSTMCellTestBiasDefaultAttrs, - testing::ValuesIn(generateCombinedParamsBiasDefaultAttrs()), ReferenceLSTMCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, + ReferenceLSTMCellTestBiasDefaultAttrs, + testing::ValuesIn(generateCombinedParamsBiasDefaultAttrs()), + ReferenceLSTMCellTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, ReferenceLSTMCellTestBiasClip, - testing::ValuesIn(generateCombinedParamsBiasClip()), ReferenceLSTMCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, + ReferenceLSTMCellTestBiasClip, + testing::ValuesIn(generateCombinedParamsBiasClip()), + ReferenceLSTMCellTest::getTestCaseName); template std::vector generateParamsV1() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector(4 * 3, 0.f))) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81457126f, 0.61109227f, 0.769522f, 0.52239674f, 0.4324641f, 0.63183f})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.4444952f, 0.9635685f, 1.2875274f, 0.8053419f, 0.7184521f, 0.95803297f})) - .testcaseName("lstm_cell_v1_zero_bias_default_attrs") - }; + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, {4 * 3}, std::vector(4 * 3, 0.f))) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81457126f, 0.61109227f, 0.769522f, 0.52239674f, 0.4324641f, 0.63183f})) + .Co(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{1.4444952f, 0.9635685f, 1.2875274f, 0.8053419f, 0.7184521f, 0.95803297f})) + .testcaseName("lstm_cell_v1_zero_bias_default_attrs")}; return params; } std::vector generateCombinedParamsV1() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsV1(), generateParamsV1(), generateParamsV1(), @@ -558,64 +634,81 @@ std::vector generateCombinedParamsV1() { template std::vector generateParamsBiasDefaultAttrsV1() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector{1.07393714f, - 1.15248052f, - 1.16671345f, - 0.21450312f, - 1.2380678f, - 1.51688835f, - 0.46718366f, - 0.91810346f, - 1.1274234f, - 0.51022074f, - 1.11389844f, - 0.74174305f})) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81014400720596313, - 0.76665538549423218, - 0.82509011030197144, - 0.6479143500328064, - 0.66586339473724365, - 0.74838578701019287})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.6800162792205811, - 1.1150213479995728, - 1.4578367471694946, - 1.0649888515472412, - 0.93761754035949707, - 1.3659683465957642})) - .testcaseName("lstm_cell_v1_bias_default_attrs"), + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, + {4 * 3}, + std::vector{1.07393714f, + 1.15248052f, + 1.16671345f, + 0.21450312f, + 1.2380678f, + 1.51688835f, + 0.46718366f, + 0.91810346f, + 1.1274234f, + 0.51022074f, + 1.11389844f, + 0.74174305f})) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.81014400720596313, + 0.76665538549423218, + 0.82509011030197144, + 0.6479143500328064, + 0.66586339473724365, + 0.74838578701019287})) + .Co(reference_tests::Tensor(ET, + {2, 3}, + std::vector{1.6800162792205811, + 1.1150213479995728, + 1.4578367471694946, + 1.0649888515472412, + 0.93761754035949707, + 1.3659683465957642})) + .testcaseName("lstm_cell_v1_bias_default_attrs"), }; return params; } std::vector generateCombinedParamsBiasDefaultAttrsV1() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsBiasDefaultAttrsV1(), generateParamsBiasDefaultAttrsV1(), generateParamsBiasDefaultAttrsV1(), @@ -632,64 +725,81 @@ std::vector generateCombinedParamsBiasDefaultAttrsV1() { template std::vector generateParamsBiasClipV1() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector{1.07393714f, - 1.15248052f, - 1.16671345f, - 0.21450312f, - 1.2380678f, - 1.51688835f, - 0.46718366f, - 0.91810346f, - 1.1274234f, - 0.51022074f, - 1.11389844f, - 0.74174305f})) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81014400720596313, - 0.76665538549423218, - 0.82387429475784302, - 0.6479143500328064, - 0.66586339473724365, - 0.74838578701019287})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.6800162792205811, - 1.1150213479995728, - 1.4510968923568726, - 1.0649888515472412, - 0.93761754035949707, - 1.3659683465957642})) - .testcaseName("lstm_cell_v1_bias_clip"), + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, + {4 * 3}, + std::vector{1.07393714f, + 1.15248052f, + 1.16671345f, + 0.21450312f, + 1.2380678f, + 1.51688835f, + 0.46718366f, + 0.91810346f, + 1.1274234f, + 0.51022074f, + 1.11389844f, + 0.74174305f})) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.81014400720596313, + 0.76665538549423218, + 0.82387429475784302, + 0.6479143500328064, + 0.66586339473724365, + 0.74838578701019287})) + .Co(reference_tests::Tensor(ET, + {2, 3}, + std::vector{1.6800162792205811, + 1.1150213479995728, + 1.4510968923568726, + 1.0649888515472412, + 0.93761754035949707, + 1.3659683465957642})) + .testcaseName("lstm_cell_v1_bias_clip"), }; return params; } std::vector generateCombinedParamsBiasClipV1() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsBiasClipV1(), generateParamsBiasClipV1(), generateParamsBiasClipV1(), @@ -703,12 +813,18 @@ std::vector generateCombinedParamsBiasClipV1() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, ReferenceLSTMCellV1Test, - testing::ValuesIn(generateCombinedParamsV1()), ReferenceLSTMCellV1Test::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, ReferenceLSTMCellV1TestBiasDefaultAttrs, - testing::ValuesIn(generateCombinedParamsBiasDefaultAttrsV1()), ReferenceLSTMCellV1Test::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, ReferenceLSTMCellV1TestBiasClip, - testing::ValuesIn(generateCombinedParamsBiasClipV1()), ReferenceLSTMCellV1Test::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, + ReferenceLSTMCellV1Test, + testing::ValuesIn(generateCombinedParamsV1()), + ReferenceLSTMCellV1Test::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, + ReferenceLSTMCellV1TestBiasDefaultAttrs, + testing::ValuesIn(generateCombinedParamsBiasDefaultAttrsV1()), + ReferenceLSTMCellV1Test::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, + ReferenceLSTMCellV1TestBiasClip, + testing::ValuesIn(generateCombinedParamsBiasClipV1()), + ReferenceLSTMCellV1Test::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/lstm_sequence.cpp b/src/plugins/template/tests/functional/op_reference/lstm_sequence.cpp index 027dddf4572d32..9e13293e9ab6d0 100644 --- a/src/plugins/template/tests/functional/op_reference/lstm_sequence.cpp +++ b/src/plugins/template/tests/functional/op_reference/lstm_sequence.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/lstm_sequence.hpp" + #include -#include "openvino/op/lstm_sequence.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,42 +14,57 @@ using namespace ov; namespace { struct LSTMSequenceParams { template - LSTMSequenceParams( - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const float clip, const op::RecurrentSequenceDirection& lstm_direction, - const element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& C_tValues, - const std::vector& S_tValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, - const std::vector& YValues, const std::vector& HoValues, const std::vector& CoValues, - const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - clip(clip), lstm_direction(lstm_direction), iType(iType), oType(iType), - testcaseName(testcaseName) { - numDirections = (lstm_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; + LSTMSequenceParams(const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const float clip, + const op::RecurrentSequenceDirection& lstm_direction, + const element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& C_tValues, + const std::vector& S_tValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::vector& CoValues, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + clip(clip), + lstm_direction(lstm_direction), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + numDirections = (lstm_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; - Shape XShape = Shape{batchSize, seqLength, inputSize}; - Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape C_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape S_tShape = Shape{batchSize}; - Shape WShape = Shape{numDirections, 4 * hiddenSize, inputSize}; - Shape RShape = Shape{numDirections, 4 * hiddenSize, hiddenSize}; - Shape BShape = Shape{numDirections, 4 * hiddenSize}; - Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; - Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; - Shape CoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape XShape = Shape{batchSize, seqLength, inputSize}; + Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape C_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape S_tShape = Shape{batchSize}; + Shape WShape = Shape{numDirections, 4 * hiddenSize, inputSize}; + Shape RShape = Shape{numDirections, 4 * hiddenSize, hiddenSize}; + Shape BShape = Shape{numDirections, 4 * hiddenSize}; + Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; + Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape CoShape = Shape{batchSize, numDirections, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); - S_t = reference_tests::Tensor(S_tShape, element::Type_t::i64, S_tValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - Co = reference_tests::Tensor(CoShape, oType, CoValues); - } + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); + S_t = reference_tests::Tensor(S_tShape, element::Type_t::i64, S_tValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + Co = reference_tests::Tensor(CoShape, oType, CoValues); + } size_t batchSize; size_t inputSize; @@ -75,44 +91,62 @@ struct LSTMSequenceParams { struct LSTMSequenceV1Params { template - LSTMSequenceV1Params( - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const float clip, const bool input_forget, const op::RecurrentSequenceDirection& lstm_direction, - const element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& C_tValues, - const std::vector& S_tValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, const std::vector& PValues, - const std::vector& YValues, const std::vector& HoValues, const std::vector& CoValues, - const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - clip(clip), input_forget(input_forget), lstm_direction(lstm_direction), iType(iType), oType(iType), - testcaseName(testcaseName) { - numDirections = (lstm_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; + LSTMSequenceV1Params(const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const float clip, + const bool input_forget, + const op::RecurrentSequenceDirection& lstm_direction, + const element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& C_tValues, + const std::vector& S_tValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& PValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::vector& CoValues, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + clip(clip), + input_forget(input_forget), + lstm_direction(lstm_direction), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + numDirections = (lstm_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; - Shape XShape = Shape{batchSize, seqLength, inputSize}; - Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape C_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape S_tShape = Shape{batchSize}; - Shape WShape = Shape{numDirections, 4 * hiddenSize, inputSize}; - Shape RShape = Shape{numDirections, 4 * hiddenSize, hiddenSize}; - Shape BShape = Shape{numDirections, 4 * hiddenSize}; - Shape PShape = Shape{numDirections, 3 * hiddenSize}; - Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; - Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; - Shape CoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape XShape = Shape{batchSize, seqLength, inputSize}; + Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape C_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape S_tShape = Shape{batchSize}; + Shape WShape = Shape{numDirections, 4 * hiddenSize, inputSize}; + Shape RShape = Shape{numDirections, 4 * hiddenSize, hiddenSize}; + Shape BShape = Shape{numDirections, 4 * hiddenSize}; + Shape PShape = Shape{numDirections, 3 * hiddenSize}; + Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; + Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape CoShape = Shape{batchSize, numDirections, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); - S_t = reference_tests::Tensor(S_tShape, element::Type_t::i64, S_tValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - P = reference_tests::Tensor(PShape, iType, PValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - Co = reference_tests::Tensor(CoShape, oType, CoValues); - } + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); + S_t = reference_tests::Tensor(S_tShape, element::Type_t::i64, S_tValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + P = reference_tests::Tensor(PShape, iType, PValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + Co = reference_tests::Tensor(CoShape, oType, CoValues); + } size_t batchSize; size_t inputSize; @@ -144,7 +178,13 @@ class ReferenceLSTMSequenceTest : public testing::TestWithParam(lstm_sequence->outputs(), ParameterVector{X, H_t, C_t, S_t, W, R, B, P}); + auto function = + std::make_shared(lstm_sequence->outputs(), ParameterVector{X, H_t, C_t, S_t, W, R, B, P}); return function; } }; @@ -279,815 +327,970 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ LSTMSequenceParams( - 5, 10, 10, 10, - 0.7f, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{ + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, std::vector{ 0.528016, 0.668187, 0.668186, 0.635471, 0.668187, 0.659096, 0.666861, 0.666715, 0.668138, 0.668186, - 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, - 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, + 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, + 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, 0.551576, 0.664629, 0.663703, 0.592106, 0.664652, 0.615579, 0.638092, 0.637163, 0.656733, 0.663751, 0.554596, 0.656917, 0.655047, 0.582718, 0.656967, 0.601233, 0.621878, 0.620939, 0.643723, 0.65514, 0.556574, 0.643984, 0.641397, 0.575854, 0.644055, 0.589658, 0.606642, 0.605821, 0.627796, 0.641522, 0.557878, 0.628081, 0.625301, 0.570987, 0.628158, 0.580903, 0.593915, 0.593262, 0.611954, 0.625433, 0.558742, 0.612216, 0.609684, 0.567605, 0.612287, 0.574556, 0.584071, 0.583581, 0.598219, 0.609803, - 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, - 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, - 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, - 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, - 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, + 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, + 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, + 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, + 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, + 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, + 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, + 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, 0.637519, 0.598314, 0.617618, 0.610903, 0.588883, 0.618381, 0.640604, 0.612099, 0.609772, 0.641672, 0.621298, 0.587406, 0.602959, 0.597357, 0.580333, 0.603611, 0.624467, 0.598338, 0.596436, 0.625592, - 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, + 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, 0.593511, 0.573381, 0.581898, 0.578717, 0.569797, 0.582278, 0.595758, 0.579264, 0.578207, 0.596577, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, + 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, + 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, 0.667915, 0.667737, 0.667963, 0.603963, 0.665981, 0.668052, 0.668006, 0.668007, 0.652525, 0.585315, - 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, + 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, 0.660409, 0.658471, 0.661057, 0.582484, 0.648575, 0.662479, 0.661698, 0.661709, 0.621887, 0.572305, - 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, - 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, - 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, - 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, - 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, + 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, + 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, + 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, + 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, + 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, + 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, 0.668139, 0.668063, 0.668139, 0.667082, 0.653793, 0.663397, 0.640434, 0.668175, 0.667092, 0.571849, 0.667538, 0.666978, 0.667544, 0.663011, 0.639734, 0.654459, 0.624289, 0.667925, 0.663042, 0.5682, - 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, - 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, - 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, + 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, + 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, + 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, 0.627845, 0.622696, 0.627915, 0.608056, 0.584968, 0.595763, 0.577763, 0.634345, 0.608125, 0.562048, - 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, + 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, 0.598256, 0.594491, 0.598309, 0.584924, 0.572127, 0.577836, 0.568532, 0.603413, 0.584966, 0.561173, 0.587362, 0.584504, 0.587403, 0.577445, 0.568392, 0.572381, 0.565918, 0.591359, 0.577475, 0.560938, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, - 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, - 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, - 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, - 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, - 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, - 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, + 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, + 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, + 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, + 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, + 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, + 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, + 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, 0.596018, 0.597785, 0.578369, 0.586822, 0.573683, 0.563901, 0.588076, 0.565458, 0.608505, 0.612324, - 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, - 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, - 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, - 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, - 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), + 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, + 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, + 0.585993, 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, + 0.572642, 0.586082, 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, + 0.583345, 0.568079, 0.561569, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, + 0.564137, 0.582163, 0.572127, 0.560781, 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, + 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, + 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, + 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, + 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, + 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), LSTMSequenceParams( - 5, 10, 10, 10, - 0.7f, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{ + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, + std::vector{ + 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, + 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, 0.558742, 0.612216, 0.609684, 0.567605, 0.612287, 0.574556, 0.584071, 0.583581, 0.598219, 0.609803, 0.557878, 0.628081, 0.625301, 0.570987, 0.628158, 0.580903, 0.593915, 0.593262, 0.611954, 0.625433, 0.556574, 0.643984, 0.641397, 0.575854, 0.644055, 0.589658, 0.606642, 0.605821, 0.627796, 0.641522, 0.554596, 0.656917, 0.655047, 0.582718, 0.656967, 0.601233, 0.621878, 0.620939, 0.643723, 0.65514, 0.551576, 0.664629, 0.663703, 0.592106, 0.664652, 0.615579, 0.638092, 0.637163, 0.656733, 0.663751, - 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, - 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, + 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, + 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, 0.528016, 0.668187, 0.668186, 0.635471, 0.668187, 0.659096, 0.666861, 0.666715, 0.668138, 0.668186, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, + 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, 0.593511, 0.573381, 0.581898, 0.578717, 0.569797, 0.582278, 0.595758, 0.579264, 0.578207, 0.596577, - 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, + 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, 0.621298, 0.587406, 0.602959, 0.597357, 0.580333, 0.603611, 0.624467, 0.598338, 0.596436, 0.625592, 0.637519, 0.598314, 0.617618, 0.610903, 0.588883, 0.618381, 0.640604, 0.612099, 0.609772, 0.641672, - 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, - 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, - 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, - 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, - 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, - 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, - 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, - 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, - 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, + 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, + 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, + 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, + 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, + 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, + 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, + 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, + 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, + 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, + 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, + 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, 0.660409, 0.658471, 0.661057, 0.582484, 0.648575, 0.662479, 0.661698, 0.661709, 0.621887, 0.572305, - 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, + 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, 0.667915, 0.667737, 0.667963, 0.603963, 0.665981, 0.668052, 0.668006, 0.668007, 0.652525, 0.585315, - 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, + 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, 0.587362, 0.584504, 0.587403, 0.577445, 0.568392, 0.572381, 0.565918, 0.591359, 0.577475, 0.560938, 0.598256, 0.594491, 0.598309, 0.584924, 0.572127, 0.577836, 0.568532, 0.603413, 0.584966, 0.561173, - 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, + 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, 0.627845, 0.622696, 0.627915, 0.608056, 0.584968, 0.595763, 0.577763, 0.634345, 0.608125, 0.562048, - 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, - 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, - 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, + 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, + 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, + 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, 0.667538, 0.666978, 0.667544, 0.663011, 0.639734, 0.654459, 0.624289, 0.667925, 0.663042, 0.5682, 0.668139, 0.668063, 0.668139, 0.667082, 0.653793, 0.663397, 0.640434, 0.668175, 0.667092, 0.571849, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567, - 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, + 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567, + 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, 0.596018, 0.597785, 0.578369, 0.586822, 0.573683, 0.563901, 0.588076, 0.565458, 0.608505, 0.612324, - 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, - 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, - 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, - 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, - 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, - 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, - 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, - 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, - 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, - 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, - 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), + 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, + 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, + 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, + 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, + 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, + 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, + 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187}, + std::vector{0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, + 0.585993, 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, + 0.572642, 0.586082, 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, + 0.583345, 0.568079, 0.561569, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, + 0.564137, 0.582163, 0.572127, 0.560781, 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, + 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, + 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, + 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, + 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, + 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), LSTMSequenceParams( - 5, 10, 10, 10, - 0.f, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 10, + 0.f, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, - std::vector{ - -5, 3.90155, -3.69293, -4.60241, 3.26436, 0.320779, 4.5631, -0.380737, 4.23738, -1.26079, - -3.45027, 3.92344, -4.7321, -2.08498, -1.01256, 3.07289, 1.27094, 4.07925, 0.563973, 3.39919, - -4.49512, 3.06235, 4.30816, -1.3597, 1.90948, -3.70685, 3.32686, -1.81646, 2.37202, 0.967696, - -1.36293, 2.94971, 1.98481, 3.21879, 3.99466, 3.31899, 4.09958, 4.74914, 1.5612, 3.1199, - -3.97256, -2.62472, -1.20655, 1.99236, -0.150548, -0.847778, 1.38662, 2.5929, 0.575229, 1.93455, - 4.13259, -4.75387, 3.37378, -1.16795, -2.01229, -4.93703, -0.624426, 2.37937, -1.2424, -0.0675053, - -4.8596, -2.50563, -1.52865, 2.96687, 4.38399, -3.99478, 2.35403, 4.76437, 2.05886, 4.51765, - 4.27848, -0.899691, -1.61905, 2.69108, -1.65352, -4.17313, 3.98558, 2.87335, 2.17466, -0.560098, - 2.50892, 1.57898, -1.39303, -1.21677, 1.49632, -4.44363, -4.21741, -4.08097, 3.05105, -4.34693, - -2.75681, -3.47867, 1.80591, -3.74041, -2.42642, -0.620324, -3.90332, -1.85434, -1.49268, 2.61143, - -4.01149, 4.3146, -1.73921, -0.733643, -2.29319, 2.8811, -0.46676, -4.16764, -4.29623, -1.70251, - -3.07895, 3.37865, -4.38315, 0.542347, 0.706112, -0.378897, 4.48829, -1.55226, 3.84449, -0.689599, - 4.9448, 3.00503, 4.41634, -1.2052, -0.945752, -2.13112, -0.494659, 2.65111, 0.798992, -1.21877, - 1.22393, 2.39173, 4.13383, 0.321036, 0.178213, -3.97413, -3.7833, 1.43697, -0.540356, -4.23675, - -3.47431, -4.20492, 3.79371, -3.38526, 4.22951, -4.96421, 3.02602, -1.96467, -2.55246, 2.68211, - 2.03482, 3.86176, 4.13142, -2.74689, -0.785165, -3.34138, -2.89165, 3.39898, 4.1545, 1.81591, - -0.907431, -2.77872, 3.353, 2.76737, 2.37346, 3.58702, 4.72511, -0.900406, 0.97014, 2.38442, - -2.3329, 2.63133, 4.30503, 3.74689, -3.83837, 4.67289, -1.97013, 1.09016, -3.32243, 3.58426, - 2.26392, -4.34882, 0.180985, 0.954856, -0.420779, 0.922418, -1.80545, 3.19832, -4.07261, -3.2313, - -2.79288, -0.259067, 4.17452, 4.91536, 1.04214, 4.20558, -1.33364, -4.92198, 1.55017, -3.31947, - -0.0354189, 2.90804, 3.17961, -1.33237, -3.71257, -3.02883, -4.79104, 1.33544, -0.213819, -2.87557, - -2.34522, -3.11141, 3.8981, 2.16143, -4.31427, -2.54362, 4.20355, -2.95095, -0.341185, 2.63071, - 0.323663, 0.510221, -2.64869, -2.24021, -4.83154, -0.775629, -4.53002, -4.408, -1.81016, -0.569383, - -3.31418, -1.98672, -0.505968, -0.269187, 2.04221, 2.0064, 0.936495, 4.72935, 1.62178, 3.77815, - -0.856647, 2.98075, -3.62022, -2.38874, -2.73203, 0.32452, 1.94716, -2.56023, -3.04901, 2.90142, - -0.946198, -0.649191, 1.26384, 1.78817, -0.685465, -2.04822, 4.97285, -3.02725, 0.579597, -0.268873, - -4.11244, -1.8748, 0.986787, -4.50772, -1.32017, -3.71768, -4.74007, 2.32116, -2.36806, 2.1148, - 1.77435, 3.20644, 2.91006, 1.0576, 0.040031, -0.693013, -3.99159, -0.134746, -0.996052, 0.871714, - -0.558411, -2.66077, 1.34212, -2.70768, -2.48549, 4.78571, -0.533973, -4.19112, -3.80203, -0.372218, - 2.78486, -1.01506, 1.24482, 2.98445, -0.054502, -4.6262, 2.19206, 1.93343, -1.84538, 3.36576, - -4.59602, 1.29602, -4.78253, 2.41768, -1.03034, 0.195816, -0.357983, 1.74115, 3.50352, -1.8395, - -1.84175, -3.3264, 1.84545, 3.18232, -3.17197, -4.65516, 0.099389, 2.78295, 1.16561, 4.40189, - -2.72039, 2.82907, -0.886233, 1.94296, -2.49201, 0.0732732, -2.1904, -2.81447, 4.23764, 2.78202, - -2.40743, -2.72875, 2.93405, -3.2296, -2.05866, 3.17168, -0.537993, 3.49845, 4.39583, -3.02873, - 4.25922, -0.988387, -0.319124, -2.75173, 2.13604, 1.40662, 4.13165, -0.0455708, -2.61541, 1.80269, - 1.47976, 2.68583, 1.17727, 2.07096, 1.70281, -0.164106, 4.14009, -4.72156, 4.03386, -0.540462, - 0.445455, -4.80477, 3.62873, 1.34778, -0.00214738, -1.15734, -4.95873, 2.35589, -2.48324, 4.71877, - -4.07758, -0.347755, 1.31999, -1.13152, -3.42124, -0.213052, 0.381509, 4.51867, 1.8423, -0.422192, - -0.373053, -3.20722, 4.84911, 4.98759, 1.53754, 3.11106, -1.74677, -4.38349, -3.607, -2.97331, - -4.59993, 2.04576, -3.01871, -2.4555, 3.51632, 1.57353, 3.06249, -1.84659, 3.07473, 3.85288, - 1.85531, 2.96839, 3.75157, -1.82426, 3.49344, 3.04875, 0.71311, -3.9376, 2.54977, 2.07647, - -3.20233, 3.50968, 3.24609, 4.12168, 3.55772, -2.85005, -1.62315, -4.60564, -2.6492, -3.75128, - -2.22564, -0.612792, 3.59931, -1.77079, 4.87547, 4.65284, 1.9526, 1.70281, -4.63869, 2.85457, - 0.288541, 1.72943, -0.736331, -4.60023, 1.45358, 0.686768, 2.04933, 2.03743, -2.74135, 4.84682, - -3.81892, -2.94531, 4.53125, 4.34582, -1.61202, 4.303, -3.96169, -3.74095, -0.587597, 1.23201, - 1.07801, -3.29982, -1.67119, -3.5092, 4.58204, -4.3539, -3.8294, -0.393197, -1.27755, 4.51992, - 0.799879, -3.65947, -4.4236, 1.55178, 2.10673, -0.952616, 1.60253, 3.44643, 4.88377, 4.55128, - 2.33666, -2.0583, 2.05126, 0.00725121, -1.64708, 0.236305, 3.96222, 4.37011, -0.541235, 2.26144, - 3.06963, -3.04004, 0.46284, -3.50942, -3.12654, -1.16702, -4.42878, 1.78286, 3.87648, -1.56109, - -2.42598, -3.80421, -0.981378, -1.63223, -4.18565, 1.30126, 0.627183, -4.24035, -4.25213, 5}, - std::vector{ - -5, 0.0972095, -3.16646, 3.08769, 4.37785, -4.70394, 2.84984, -3.36123, -0.661491, 0.742674, - -2.82977, 3.30679, -2.0046, -1.39169, 3.69357, -4.87822, 1.75331, -0.187543, 4.77267, -2.89035, - -2.86541, 4.43989, -1.73837, 4.86129, -0.626666, 4.65384, -2.42069, 2.59966, -3.07773, -2.17051, - 2.69538, -4.91818, -1.47175, -2.66442, -1.14894, -3.90875, -0.92652, -0.946207, 2.70024, 3.4187, - -1.06892, -0.336707, -3.95977, -3.09231, 1.72681, -0.253682, 3.01543, -2.52343, 2.41461, 1.73951, - 1.55908, -2.88157, 0.895772, 2.83656, -0.0438242, -3.9921, 3.78771, 1.16734, 1.89495, 4.71639, - -0.788449, -4.285, -3.09649, -2.73812, -4.50129, -3.22373, 0.570888, 4.57888, 4.49166, -0.0809164, - -3.61267, -2.40318, 0.749356, 4.85626, -3.93755, -0.299189, -4.53363, -2.2065, 0.998577, -4.88086, - -4.95235, -4.83644, -0.938169, -3.2432, -3.98636, -0.724817, 1.77318, 0.215689, -1.7268, 0.475434, - 2.16854, -0.953869, 0.724856, 3.98419, -2.91751, 3.49012, -2.84873, -3.42912, -1.53297, 5}, - std::vector{ - -5, -2.4224, 0.545224, 2.07068, -0.174741, 4.84283, 0.469625, -1.36484, -2.49666, 1.16077, - -2.47798, 1.30443, 4.90657, -4.86712, 2.60958, -3.6434, 4.98959, 2.83648, 3.12445, 1.24863, - -3.56188, 1.18263, 4.00651, -4.49285, -3.35389, 3.84102, -0.692219, 4.58475, -2.85036, -2.88143, - 3.93052, 2.39646, -2.43019, -1.74484, 1.43614, 4.831, 1.03788, 0.298718, -0.686032, -0.304259, - -2.28994, -3.89952, -1.95116, -4.86558, 1.41202, -4.93245, -2.05543, 2.04177, -4.60741, -1.50938, - 3.88719, 1.83697, -4.37124, 1.66286, 1.39415, 3.97862, -3.03259, -0.518552, 0.380681, 4.66685, - 4.75549, -1.81382, -4.49654, -2.51648, 4.04178, -4.34012, -0.0679991, -2.20335, 2.7089, 3.73041, - 4.24063, 0.901985, 3.52631, 4.06229, -1.28391, -4.74323, -3.84049, 3.54115, -3.26689, -2.21037, - -2.83436, -3.75905, -3.71528, 3.58726, 4.65168, -2.66566, -1.87998, 1.95093, 3.66591, -3.2642, - 4.71373, -1.11216, -0.158811, 3.29267, -4.30107, -0.782312, -3.3017, 2.70345, 4.31324, 5}, + std::vector{-5, 3.90155, -3.69293, -4.60241, 3.26436, 0.320779, 4.5631, -0.380737, + 4.23738, -1.26079, -3.45027, 3.92344, -4.7321, -2.08498, -1.01256, 3.07289, + 1.27094, 4.07925, 0.563973, 3.39919, -4.49512, 3.06235, 4.30816, -1.3597, + 1.90948, -3.70685, 3.32686, -1.81646, 2.37202, 0.967696, -1.36293, 2.94971, + 1.98481, 3.21879, 3.99466, 3.31899, 4.09958, 4.74914, 1.5612, 3.1199, + -3.97256, -2.62472, -1.20655, 1.99236, -0.150548, -0.847778, 1.38662, 2.5929, + 0.575229, 1.93455, 4.13259, -4.75387, 3.37378, -1.16795, -2.01229, -4.93703, + -0.624426, 2.37937, -1.2424, -0.0675053, -4.8596, -2.50563, -1.52865, 2.96687, + 4.38399, -3.99478, 2.35403, 4.76437, 2.05886, 4.51765, 4.27848, -0.899691, + -1.61905, 2.69108, -1.65352, -4.17313, 3.98558, 2.87335, 2.17466, -0.560098, + 2.50892, 1.57898, -1.39303, -1.21677, 1.49632, -4.44363, -4.21741, -4.08097, + 3.05105, -4.34693, -2.75681, -3.47867, 1.80591, -3.74041, -2.42642, -0.620324, + -3.90332, -1.85434, -1.49268, 2.61143, -4.01149, 4.3146, -1.73921, -0.733643, + -2.29319, 2.8811, -0.46676, -4.16764, -4.29623, -1.70251, -3.07895, 3.37865, + -4.38315, 0.542347, 0.706112, -0.378897, 4.48829, -1.55226, 3.84449, -0.689599, + 4.9448, 3.00503, 4.41634, -1.2052, -0.945752, -2.13112, -0.494659, 2.65111, + 0.798992, -1.21877, 1.22393, 2.39173, 4.13383, 0.321036, 0.178213, -3.97413, + -3.7833, 1.43697, -0.540356, -4.23675, -3.47431, -4.20492, 3.79371, -3.38526, + 4.22951, -4.96421, 3.02602, -1.96467, -2.55246, 2.68211, 2.03482, 3.86176, + 4.13142, -2.74689, -0.785165, -3.34138, -2.89165, 3.39898, 4.1545, 1.81591, + -0.907431, -2.77872, 3.353, 2.76737, 2.37346, 3.58702, 4.72511, -0.900406, + 0.97014, 2.38442, -2.3329, 2.63133, 4.30503, 3.74689, -3.83837, 4.67289, + -1.97013, 1.09016, -3.32243, 3.58426, 2.26392, -4.34882, 0.180985, 0.954856, + -0.420779, 0.922418, -1.80545, 3.19832, -4.07261, -3.2313, -2.79288, -0.259067, + 4.17452, 4.91536, 1.04214, 4.20558, -1.33364, -4.92198, 1.55017, -3.31947, + -0.0354189, 2.90804, 3.17961, -1.33237, -3.71257, -3.02883, -4.79104, 1.33544, + -0.213819, -2.87557, -2.34522, -3.11141, 3.8981, 2.16143, -4.31427, -2.54362, + 4.20355, -2.95095, -0.341185, 2.63071, 0.323663, 0.510221, -2.64869, -2.24021, + -4.83154, -0.775629, -4.53002, -4.408, -1.81016, -0.569383, -3.31418, -1.98672, + -0.505968, -0.269187, 2.04221, 2.0064, 0.936495, 4.72935, 1.62178, 3.77815, + -0.856647, 2.98075, -3.62022, -2.38874, -2.73203, 0.32452, 1.94716, -2.56023, + -3.04901, 2.90142, -0.946198, -0.649191, 1.26384, 1.78817, -0.685465, -2.04822, + 4.97285, -3.02725, 0.579597, -0.268873, -4.11244, -1.8748, 0.986787, -4.50772, + -1.32017, -3.71768, -4.74007, 2.32116, -2.36806, 2.1148, 1.77435, 3.20644, + 2.91006, 1.0576, 0.040031, -0.693013, -3.99159, -0.134746, -0.996052, 0.871714, + -0.558411, -2.66077, 1.34212, -2.70768, -2.48549, 4.78571, -0.533973, -4.19112, + -3.80203, -0.372218, 2.78486, -1.01506, 1.24482, 2.98445, -0.054502, -4.6262, + 2.19206, 1.93343, -1.84538, 3.36576, -4.59602, 1.29602, -4.78253, 2.41768, + -1.03034, 0.195816, -0.357983, 1.74115, 3.50352, -1.8395, -1.84175, -3.3264, + 1.84545, 3.18232, -3.17197, -4.65516, 0.099389, 2.78295, 1.16561, 4.40189, + -2.72039, 2.82907, -0.886233, 1.94296, -2.49201, 0.0732732, -2.1904, -2.81447, + 4.23764, 2.78202, -2.40743, -2.72875, 2.93405, -3.2296, -2.05866, 3.17168, + -0.537993, 3.49845, 4.39583, -3.02873, 4.25922, -0.988387, -0.319124, -2.75173, + 2.13604, 1.40662, 4.13165, -0.0455708, -2.61541, 1.80269, 1.47976, 2.68583, + 1.17727, 2.07096, 1.70281, -0.164106, 4.14009, -4.72156, 4.03386, -0.540462, + 0.445455, -4.80477, 3.62873, 1.34778, -0.00214738, -1.15734, -4.95873, 2.35589, + -2.48324, 4.71877, -4.07758, -0.347755, 1.31999, -1.13152, -3.42124, -0.213052, + 0.381509, 4.51867, 1.8423, -0.422192, -0.373053, -3.20722, 4.84911, 4.98759, + 1.53754, 3.11106, -1.74677, -4.38349, -3.607, -2.97331, -4.59993, 2.04576, + -3.01871, -2.4555, 3.51632, 1.57353, 3.06249, -1.84659, 3.07473, 3.85288, + 1.85531, 2.96839, 3.75157, -1.82426, 3.49344, 3.04875, 0.71311, -3.9376, + 2.54977, 2.07647, -3.20233, 3.50968, 3.24609, 4.12168, 3.55772, -2.85005, + -1.62315, -4.60564, -2.6492, -3.75128, -2.22564, -0.612792, 3.59931, -1.77079, + 4.87547, 4.65284, 1.9526, 1.70281, -4.63869, 2.85457, 0.288541, 1.72943, + -0.736331, -4.60023, 1.45358, 0.686768, 2.04933, 2.03743, -2.74135, 4.84682, + -3.81892, -2.94531, 4.53125, 4.34582, -1.61202, 4.303, -3.96169, -3.74095, + -0.587597, 1.23201, 1.07801, -3.29982, -1.67119, -3.5092, 4.58204, -4.3539, + -3.8294, -0.393197, -1.27755, 4.51992, 0.799879, -3.65947, -4.4236, 1.55178, + 2.10673, -0.952616, 1.60253, 3.44643, 4.88377, 4.55128, 2.33666, -2.0583, + 2.05126, 0.00725121, -1.64708, 0.236305, 3.96222, 4.37011, -0.541235, 2.26144, + 3.06963, -3.04004, 0.46284, -3.50942, -3.12654, -1.16702, -4.42878, 1.78286, + 3.87648, -1.56109, -2.42598, -3.80421, -0.981378, -1.63223, -4.18565, 1.30126, + 0.627183, -4.24035, -4.25213, 5}, + std::vector{-5, 0.0972095, -3.16646, 3.08769, 4.37785, -4.70394, 2.84984, -3.36123, + -0.661491, 0.742674, -2.82977, 3.30679, -2.0046, -1.39169, 3.69357, -4.87822, + 1.75331, -0.187543, 4.77267, -2.89035, -2.86541, 4.43989, -1.73837, 4.86129, + -0.626666, 4.65384, -2.42069, 2.59966, -3.07773, -2.17051, 2.69538, -4.91818, + -1.47175, -2.66442, -1.14894, -3.90875, -0.92652, -0.946207, 2.70024, 3.4187, + -1.06892, -0.336707, -3.95977, -3.09231, 1.72681, -0.253682, 3.01543, -2.52343, + 2.41461, 1.73951, 1.55908, -2.88157, 0.895772, 2.83656, -0.0438242, -3.9921, + 3.78771, 1.16734, 1.89495, 4.71639, -0.788449, -4.285, -3.09649, -2.73812, + -4.50129, -3.22373, 0.570888, 4.57888, 4.49166, -0.0809164, -3.61267, -2.40318, + 0.749356, 4.85626, -3.93755, -0.299189, -4.53363, -2.2065, 0.998577, -4.88086, + -4.95235, -4.83644, -0.938169, -3.2432, -3.98636, -0.724817, 1.77318, 0.215689, + -1.7268, 0.475434, 2.16854, -0.953869, 0.724856, 3.98419, -2.91751, 3.49012, + -2.84873, -3.42912, -1.53297, 5}, + std::vector{-5, -2.4224, 0.545224, 2.07068, -0.174741, 4.84283, 0.469625, -1.36484, + -2.49666, 1.16077, -2.47798, 1.30443, 4.90657, -4.86712, 2.60958, -3.6434, + 4.98959, 2.83648, 3.12445, 1.24863, -3.56188, 1.18263, 4.00651, -4.49285, + -3.35389, 3.84102, -0.692219, 4.58475, -2.85036, -2.88143, 3.93052, 2.39646, + -2.43019, -1.74484, 1.43614, 4.831, 1.03788, 0.298718, -0.686032, -0.304259, + -2.28994, -3.89952, -1.95116, -4.86558, 1.41202, -4.93245, -2.05543, 2.04177, + -4.60741, -1.50938, 3.88719, 1.83697, -4.37124, 1.66286, 1.39415, 3.97862, + -3.03259, -0.518552, 0.380681, 4.66685, 4.75549, -1.81382, -4.49654, -2.51648, + 4.04178, -4.34012, -0.0679991, -2.20335, 2.7089, 3.73041, 4.24063, 0.901985, + 3.52631, 4.06229, -1.28391, -4.74323, -3.84049, 3.54115, -3.26689, -2.21037, + -2.83436, -3.75905, -3.71528, 3.58726, 4.65168, -2.66566, -1.87998, 1.95093, + 3.66591, -3.2642, 4.71373, -1.11216, -0.158811, 3.29267, -4.30107, -0.782312, + -3.3017, 2.70345, 4.31324, 5}, std::vector{10, 10, 10, 10, 10}, std::vector{ - -5, 1.38574, -3.40488, 1.59498, -1.40479, -0.774824, 0.776861, 4.44599, 4.65645, -0.93456, - -2.73502, 3.51855, 4.47696, 2.91625, -0.68445, 4.43112, -4.38335, 3.58399, -3.5086, 0.863423, - -0.279341, 2.84091, 3.83352, -2.69488, 2.11292, -4.86518, 1.38034, 1.30028, -1.84802, 4.05115, - 1.67509, 4.59603, 2.46173, 1.70552, -2.21902, 4.04495, 1.18181, -2.28113, -4.71689, -3.04267, - 0.500298, -2.41982, 3.09957, -2.96136, 3.4832, -4.11859, -3.75488, -3.0709, 1.24288, -1.92552, - 1.90494, 3.41518, 1.08902, 2.44889, 3.9638, 3.99164, -3.69309, -2.63514, 3.04926, 3.2098, - -0.405537, 3.22924, 4.65977, 2.24535, -1.10242, -3.97405, 3.67443, 2.69645, 3.40125, -3.05413, - 2.16447, 3.45673, -0.00307435, -4.73115, 3.10638, 2.40497, 4.16993, -1.29241, -2.06006, 0.470756, - 0.781379, -2.77629, 0.291053, -0.862092, 0.863825, -2.31703, 4.10805, 2.96997, -4.90259, 4.54135, - 0.149612, 3.08602, -2.13883, -3.62432, -2.40104, -2.07502, -4.83612, 3.99756, 2.82135, -0.395894, - 4.39348, 0.466077, 0.766771, 2.01238, 2.06508, 0.772249, 1.9867, -0.996579, 2.48071, 4.49585, - 0.453517, -4.17035, 3.7106, 3.36282, 3.23191, -0.640585, 1.38488, -2.17163, 0.652199, -0.158743, - 4.6801, -0.926323, -2.0441, 4.05972, 1.53695, -1.47499, -3.02639, -2.46746, 2.02894, 3.84978, - 3.51725, 4.88996, -1.55536, -2.95742, 2.67589, -0.955491, -2.58142, -1.12036, -1.63169, -3.3286, - 0.909692, -4.98742, 2.3819, -3.80322, 2.35674, -2.01539, -1.54806, -0.301092, 4.52245, 0.48912, - 0.349015, -4.47653, -3.93302, -4.539, 4.10146, -0.21952, -4.79841, 4.41982, 1.43739, 1.89926, - 2.67474, 2.62216, -0.913088, -4.2081, 3.61542, -3.64835, 1.87344, 0.211608, 3.65209, -4.61966, - 3.15605, 0.0621908, -4.82205, -1.12782, 1.66538, 2.10551, -0.21663, -1.87744, 3.8985, -1.33132, - 2.94648, -4.89908, 1.08219, -1.82947, 1.3488, -0.839479, 0.424618, 0.108287, 3.44509, 1.66413, - 1.10641, 1.12783, 2.57802, 0.222069, 0.469913, 1.64298, 4.05762, 2.89772, 0.158175, 2.14327, - 0.0127615, 4.38472, 1.37834, 3.20256, -4.69572, 3.79924, -0.31191, 3.94988, -2.49268, -3.9734, - -1.95347, -1.11895, 2.22331, -4.87892, -1.7993, -3.93962, 0.940251, 1.50669, 4.12202, 1.14476, - -3.22335, -4.6922, 0.274547, 0.786363, 4.96083, -3.72688, -0.46743, 1.34387, 3.52815, 0.378364, - 0.989814, -4.81342, -4.99949, -2.57458, -4.8473, 3.61751, -0.291682, -4.45674, -3.86048, 4.55838, - -0.558553, 4.22434, 0.485826, 3.02256, -4.18217, -0.970154, -2.29033, -3.17236, -3.24192, -1.19776, - -1.10376, 2.74642, 2.92208, -0.253459, -0.727743, -2.6816, 2.05987, 0.821414, 2.55421, 1.73239, - 1.07334, -0.51151, -4.08995, 4.54727, 0.354294, 1.32332, -0.95764, -0.890992, -2.10241, -2.70027, - -3.80798, -4.92614, 1.72164, 4.90619, 0.68811, -2.84043, 0.228619, 3.06368, 1.88669, 4.06624, - -0.317901, 4.32894, 3.31458, -3.78791, -4.13413, -0.720673, -4.2847, 2.5743, -2.0607, -4.7294, - -1.1922, -4.25132, 2.51276, -2.46105, 3.63289, -2.9029, -3.89352, -4.56467, 4.42607, 4.82693, - -2.69463, 4.51783, -0.907243, -2.78669, 4.18723, 2.34626, 3.26836, -2.76921, 4.75613, -1.25286, - -1.87767, 3.64592, -3.43697, -3.65555, -2.30538, 2.84627, -2.97604, 1.01567, -1.38899, -3.59646, - 1.65457, 1.07598, 0.107017, -4.40483, -3.71999, 4.20983, 0.778437, 4.03383, 1.31396, 3.58678, - 4.77689, 0.578005, -2.15946, -4.90681, 1.4671, 2.04727, -4.43527, -1.89183, 3.54344, 3.0036, - 3.81351, -0.304046, 4.08728, -1.53035, 0.84424, 3.17114, 2.83768, -0.247921, -1.93513, -4.63661, - -1.12005, 1.45256, -1.15546, 1.60745, -3.76519, 3.94909, 1.43606, -3.87999, 1.78168, 0.370893, - 2.32649, -0.945226, 3.86596, -4.42396, 0.844734, -2.1054, 0.0782569, 2.11735, 3.4132, 1.88877, - -3.23712, 2.91202, 2.16514, 2.07883, 1.37829, -3.31629, 2.28908, 3.98293, -0.77331, -0.164568, - -3.97808, -1.30991, 3.64372, 4.19263, 3.90947, -1.78475, 3.94366, 4.18793, -4.11379, 3.91526, - 1.33598, -0.0962256, 4.72887, -1.53884, 3.28632, -1.22307, 1.04336, -1.78493, 4.46535, 2.2445, - 3.79802, -1.44113, 2.9843, -3.40275, 4.31126, 1.63422, -4.32046, 4.21314, 4.49346, 2.26706, - -4.63838, -2.81771, -3.23518, -0.494282, 1.80663, -0.345847, -4.71775, -4.64164, -1.17283, 1.11853, - -1.94206, 3.73188, 3.61315, 0.36183, -2.94746, 2.7314, -4.61468, 3.86121, 0.19202, 1.18747, - 4.02233, -3.69848, 1.33929, 2.94477, 1.80769, -2.99931, -4.77907, 0.0433281, 2.8262, -4.34346, - 0.171945, -2.70003, -1.17702, -3.16753, -0.665832, -0.493026, 3.40444, -2.0408, 3.98367, -3.76943, - 3.89665, 4.78787, 2.40015, -1.24947, 0.991205, 2.93423, -4.86143, 3.17028, -2.26548, 1.03663, - 4.61205, 4.75579, 4.99013, 4.23479, -4.45891, -2.65092, -3.90674, -3.53842, 0.178697, 2.23177, - -4.97903, -2.10417, -3.41522, -1.52118, -4.1973, 0.196365, -3.07567, 2.6714, 0.0329277, 1.86999, - -3.85877, -1.00351, -1.47763, -1.39762, -1.54178, 3.08322, -3.18606, 2.445, -3.89596, -1.96158, - 0.0700858, 0.518499, -3.63671, -0.617976, 0.341244, 2.04532, 3.65188, 2.35683, -0.89304, 0.0257487, - -1.54115, -0.860534, 2.32265, -3.83482, -2.42048, 2.69591, 4.02649, -1.87481, 4.63578, 0.771746, - 4.82279, -1.68132, 2.46822, 4.48127, -2.72111, -0.355886, 0.266078, -4.89841, -0.850352, 2.77856, - 0.429384, 3.58205, 3.09831, 4.72246, -2.40146, -2.7575, 4.35845, -1.53977, -2.47573, 1.727, - 1.54918, -3.72806, -1.09464, 0.902036, -3.65559, -2.55986, -3.64498, -2.5337, -4.78799, 2.46949, - -3.26495, -2.32184, 0.154838, -4.15034, -3.54186, 2.08248, 3.73156, -1.08542, 3.89507, 4.29175, - 4.46461, -4.04293, 2.00413, 1.75029, -2.7672, -0.584663, 3.17988, 3.9949, -1.16367, 2.6852, - 0.136113, 3.24949, 1.48249, -1.75121, 2.93909, -3.09163, 0.826285, 2.60739, -1.63573, 3.22668, - 0.00300903, 0.575604, -0.267615, -4.62369, -3.98882, 3.31384, -3.84641, -0.164339, -1.9838, 3.45511, - -1.04323, 3.56878, 3.3694, -4.81446, 1.85392, 1.59741, 4.2085, 1.54342, -1.25854, -0.0477599, - 4.83944, 3.41224, -4.87642, 3.34542, 4.34374, 1.68048, -4.17476, -3.99847, -1.0523, -4.77302, - -3.79443, -1.23287, -2.90961, -3.20999, 1.85511, 2.06811, -2.20368, -1.81411, -2.62059, 1.88005, - -3.17691, -2.90064, -3.11477, 1.7461, -3.02032, -4.01402, -4.87155, -2.7408, 2.13552, 3.60602, - -3.68662, 3.94441, 1.75357, 3.18497, -2.67031, 3.28189, 0.764719, 1.62342, -1.16762, -4.59845, - 0.336623, 2.26649, 3.89547, 2.07511, 2.93817, -1.03081, 3.30557, 0.72491, 3.1453, 0.769547, - -2.92608, 0.13144, -0.0691925, -4.07191, 4.01141, -3.50862, -0.749251, -3.21837, 1.06989, 3.97227, - 1.54475, 4.78368, -3.18741, 4.10281, 3.61094, -2.81927, 4.0446, -0.688241, -0.195357, -1.89505, - 1.3421, 3.13891, -0.625937, -3.07901, 0.676794, -4.31063, 0.110105, 0.219899, 3.43871, 3.34377, - 3.90145, -2.36654, 3.87301, -3.27531, 2.66387, -4.84057, 4.20739, -0.915956, 2.33027, 2.63642, - 1.31649, -3.45589, 3.61696, 1.39562, 1.50066, 0.953228, 2.33703, -1.74775, 1.90994, 0.158689, - 2.00179, 1.97409, -0.447395, 3.93314, 0.379663, -3.20044, -4.63811, 3.33694, -2.92811, -0.334244, - -1.82335, -1.99341, -2.38105, -3.42019, 4.49144, 4.50581, 0.146444, -4.01907, 2.76861, 2.54542, - -4.88271, 4.25518, 3.71932, -2.67843, -4.61096, 2.49717, 3.22838, 2.91755, 2.81098, -0.212338, - -4.09407, 3.46949, -0.264652, 0.653515, 0.510898, 1.74902, -0.615688, 0.225622, 3.35548, 2.3847, - 0.542832, -1.47433, 2.86275, -3.14377, -3.10022, 4.98831, 1.61969, 0.994205, 3.34565, -2.12893, - -2.35919, 0.905238, -0.847957, -3.33345, -0.448516, 1.31451, 3.56578, -4.07352, -0.694577, -3.23525, - 1.98038, 4.05222, 0.15182, 2.11475, -4.91253, -2.83372, -0.800172, -0.797281, 4.91775, 0.71457, - 2.64354, -4.37525, 3.93947, 4.29284, 0.376963, 0.483439, -1.20476, 1.54934, -1.60458, -2.03934, - 3.17352, 1.84459, -0.57479, 2.83865, 4.82469, -0.00921004, -3.30157, -3.63386, -3.94658, 1.96984, - 4.15967, 3.75591, -0.538282, -1.32521, 0.128334, -0.57577, 0.96914, 1.10537, 2.45218, 2.8899, - 1.61422, 1.46003, 2.45143, 1.49513, 0.761625, -3.07383, 0.554756, 4.26704, 0.702351, 5}, - std::vector{ - -5, -2.76745, -3.36272, 0.786832, -0.536305, -2.6808, 2.75696, -2.38186, -2.97924, -1.8377, - -1.8783, -2.34573, 1.51361, -0.429618, -0.165277, -4.11843, 2.8142, 2.19643, 4.21874, 1.96632, - -1.04831, -3.02755, 3.21475, -0.624601, 2.22647, 0.583331, -3.05985, -2.92969, 4.40203, 4.96686, - -2.67395, 0.58967, 1.75651, 3.90978, -2.32869, -0.251364, -0.076078, -2.76866, 3.98696, -3.89213, - -0.84402, -0.84834, -3.69578, -2.08657, -3.91955, 4.22513, -3.88648, -1.39718, -0.026567, 1.30207, - 2.68671, 1.60689, 3.78493, -1.1378, -1.50906, 4.42047, 1.11537, 3.98267, -0.826257, 0.65135, - -3.50771, 3.93109, 1.36732, -2.45974, -1.47327, 0.772411, 2.65195, 3.03698, -0.592716, -0.558972, - 3.40876, 3.26508, -3.91006, 0.147352, 4.54504, 0.695234, 4.9661, -0.64909, 1.45945, 3.82606, - -4.26746, 2.80674, 3.86749, -0.115914, -2.02211, -3.06485, 2.15541, -0.715792, 0.966579, -1.59997, - -4.06261, 0.592467, -0.94068, -2.1352, 2.87121, 4.68889, -4.91329, 0.299997, -1.02383, 1.62808, - 3.77503, -3.10425, -3.31658, 2.88163, -4.02717, 2.43578, 2.97519, -2.72692, -2.94946, -4.62235, - 0.938072, -3.56148, 4.96502, -4.73707, 3.46557, -0.84019, 4.05851, 0.971805, 3.67174, 0.272782, - 3.11246, -3.17549, 0.703277, -1.83248, -2.66066, 1.93464, 0.505384, 2.92792, 4.47033, 0.221046, - 0.757135, 2.87319, -2.95227, -3.87443, 3.22101, -3.01482, -3.17032, 1.28237, -4.21317, -0.735796, - -3.95619, 2.21906, 1.35044, 2.38934, 3.73366, -2.37152, -1.21153, 2.32514, -2.52731, -1.27155, - -3.50355, -3.01653, -2.55113, 1.53067, -0.114533, 0.0749606, -1.90288, -4.09761, -2.89037, -2.07762, - -4.15337, 4.51941, 4.96817, 1.81584, -2.77298, -3.77737, 0.511126, -3.95519, 0.312086, 2.07223, - 0.682299, -1.93266, -2.17914, -0.747721, -1.33989, -4.1225, 2.73361, 1.20164, 2.0721, 0.616006, - -2.14654, -1.09562, 2.69654, -1.29804, -3.06921, 0.918753, -0.960092, -2.76928, -4.81197, -0.228397, - 2.9628, -3.62481, -0.877274, -0.636959, -2.77519, 1.92274, -2.71535, 0.823748, 0.0571949, -2.80894, - -2.93044, 2.44277, 3.72529, -1.39665, 0.419583, -0.735395, 0.141612, 4.91315, -1.85428, 3.59253, - 4.63525, -4.308, -4.04851, -4.52805, 3.46887, -3.40928, 1.49532, -4.29342, 0.864934, -4.68825, - -4.24461, 4.62154, 0.258795, -1.59565, -4.96134, -1.42749, -1.41203, -4.28422, -1.34112, 0.776945, - -4.04485, -3.96018, 0.580818, -4.41352, 1.14779, -4.36729, 3.8481, -1.66048, -0.950351, 3.57762, - -2.33159, 1.01822, 1.35339, 4.7311, -4.59032, 3.43969, -0.238646, -1.39467, -0.329268, 3.23937, - -0.284994, -3.59913, -2.26108, -0.378409, -3.475, -0.160139, -0.838942, 0.527827, -1.51829, -2.46392, - 1.89068, -4.46563, -2.60946, 3.53656, -2.20977, -0.851908, -2.42698, -2.03249, -0.938796, 2.09651, - -0.967279, -2.06681, -4.58985, 3.24781, -2.63077, 4.56093, 3.17359, -2.34826, 1.58482, -4.12192, - -2.55048, -3.4803, 0.631562, -4.64767, 4.07145, -4.89086, -3.90578, 0.794496, 3.11944, 0.274388, - -0.802882, -0.72629, 2.55014, -2.86997, 4.11855, 1.10845, 0.782459, -4.91899, 2.37826, -1.77523, - -3.23982, -1.69375, -0.837184, 1.1934, -1.10572, -1.22483, 4.71149, 2.96609, -0.676543, -3.31718, - -3.692, -2.9575, -3.52942, 0.411185, -2.41244, -0.401702, -1.8739, -0.132347, 1.13978, -4.45176, - 0.169302, 3.5423, 3.94282, 1.60127, -4.07808, 2.34236, -0.781839, -2.74102, 4.48042, -4.34059, - -1.30121, -0.93276, 1.11985, -3.90853, -0.286499, -1.01405, -2.77668, 0.288616, -4.16595, -2.3096, - -2.44363, 1.24341, 3.73431, -0.00587227, -4.89328, 4.75827, -4.9217, 3.8995, 2.46474, 3.20115, - 1.39757, 3.46744, 3.32388, -1.17844, 2.83398, -1.88155, -3.75103, -2.30867, -1.46387, 2.3986, - 0.291228, -0.924614, -0.466735, -2.32718, -1.59271, 3.8981, -3.37128, 1.54383, 3.21023, -4.46146, - 3.65466, 2.02678, 4.93931, -4.48006, -4.70468, -0.0110495, -4.34515, 2.66921, -2.4087, 3.08708, - 4.72305, 3.14726, -2.3531, 0.719721, -2.08273, -4.30752, -3.36451, 0.7731, 0.323962, -2.62083, - 0.261967, -3.56867, 2.00299, 0.649599, 1.86126, 1.56565, 3.74213, 0.474407, -0.946149, -0.476581, - -2.64906, -1.82586, -3.98376, -4.55005, 2.38571, -3.62565, -0.934082, -1.81757, -1.77204, -3.26355, - 4.35017, 3.13568, 0.702371, -3.24041, 0.0219689, 2.41334, -1.23636, 3.9868, 4.02405, -1.44978, - 0.281016, 4.02714, -3.745, -0.925299, 0.628337, 4.63236, -3.27555, 4.35052, 3.93893, -1.18177, - 3.12756, 2.48858, -3.78877, 3.23341, -2.12903, -3.78299, -2.97581, -0.814401, -4.27898, 0.582629, - 1.62196, 2.45058, 1.58468, 3.9512, 4.54651, -0.556351, 2.948, 1.81753, -3.51936, -0.504748, - -3.25792, 3.13386, -0.620701, 4.71377, 3.99684, -3.2282, 3.46386, -2.72125, -1.49549, -3.83636, - -4.7897, 0.78226, 2.3058, -4.82898, -2.61577, -4.87581, 2.31266, 1.67058, -0.312257, -0.545391, - -3.86117, -4.92605, -0.722609, -0.144248, -4.35181, 0.483898, -3.27626, 0.600822, -0.846488, 1.54249, - 4.67917, 0.773491, 0.335107, 0.391722, -1.57747, 3.65133, -0.816687, -3.66164, 0.3431, -2.17813, - -4.99742, -4.13003, -4.34429, 3.15146, 0.477193, -3.18597, 4.0696, -3.04081, -0.751688, -2.3623, - 2.81943, 1.98781, 1.14407, 2.95467, 0.0443827, -1.67868, -2.85497, -3.04549, 0.0620073, 0.179388, - -3.74709, 4.28623, 3.73272, 2.019, 1.88438, -1.20996, -2.34781, 0.800072, 4.22213, 3.82745, - 0.660494, -0.233822, -3.85401, -1.10944, 1.61249, -2.75312, -0.620572, -2.36705, -4.35225, -4.28065, - -0.369473, -0.675064, 4.98128, -3.40084, -0.158063, -1.81529, 0.0704487, -4.2162, 2.33253, 0.775176, - 4.70129, -0.44329, -0.804775, -4.39479, -0.857478, 0.173731, 2.117, -1.91569, 0.661488, -3.72608, - 3.21041, -0.309079, -1.20312, -1.04395, -3.59398, 0.6059, 2.61891, 4.45666, -4.75106, 3.21227, - 1.7304, -2.32413, 3.76143, 3.02153, -3.54336, -0.34727, 4.84026, -0.198416, -3.46508, -0.201522, - 3.50927, -1.84184, -2.48124, -0.669658, -4.94919, -3.52275, 1.42435, 3.78537, -3.23707, -4.68775, - 2.3794, -4.965, 3.11321, -1.14157, 3.72124, -1.05859, -0.206402, 0.79939, 4.87222, 0.225406, - 4.48362, -2.90358, 1.55703, 1.98258, 2.35008, 3.94249, 2.61202, -3.53563, 1.82492, -2.68085, - -0.527339, 3.24015, 3.29355, 1.34272, -1.10936, -2.71789, 3.91075, -2.14601, -0.396423, -3.01396, - 0.340825, -4.43331, -4.90419, 3.48833, -3.20166, 2.02417, -1.30311, 1.58947, -3.03143, 3.37555, - -1.96399, 1.02333, -3.52225, -1.53211, 0.12215, -1.34119, -0.846173, -0.635141, 4.67665, -0.405799, - 3.8426, 0.339217, -1.40732, 2.20983, 0.573309, 0.977476, -1.76888, -1.02265, 2.32694, 0.677431, - -4.85236, 3.18685, -2.53947, 1.13715, 4.96326, -0.793396, 1.19392, 2.5294, 2.75801, -4.3221, - 3.15646, -1.48667, -4.94554, -3.23913, 4.02479, -2.08067, 0.183081, -4.38464, -2.46221, -4.73904, - -0.697342, -4.85434, 4.90753, 2.70221, -1.31093, -4.60081, -3.58929, 3.71782, -1.75827, 0.163215, - -3.75722, 1.62284, -1.24612, 1.14538, 2.96385, -4.10806, -0.186223, 2.97828, -3.48557, 0.912886, - -2.47933, -0.141892, 1.38328, -1.35453, 0.0855794, -0.420718, 2.81809, -1.58504, -3.24831, -3.06183, - -1.00012, -3.06554, 1.15852, -4.66011, -1.68974, 2.15275, -4.81303, -1.0497, 4.24721, 0.752416, - -2.9178, 2.80425, -4.72424, -4.04212, 1.70999, 4.54444, 2.7805, -0.316397, -2.46779, 3.17646, - 0.187879, 1.74938, 3.01256, -3.66057, 2.37244, 2.91338, 2.67634, -2.33103, -1.07969, 1.37713, - -3.45046, 1.41599, -2.58735, 1.66767, 0.978738, -1.99731, -1.185, 4.02593, -3.86151, 3.34423, - 3.45627, -3.98229, 4.22739, -3.05438, -4.33193, 3.05151, 4.80124, 4.1618, -3.6186, -4.59032, - 4.59652, -1.2784, -1.30989, -3.37153, 2.88972, -4.98978, 0.866851, 2.13723, -1.54307, -2.96314, - -0.727502, 1.31068, 0.444759, 1.69446, 2.77479, -1.25197, -0.59404, -3.28619, -2.14284, 4.55701, - -1.99698, -4.1932, 1.98522, 0.330638, 4.14927, -1.58213, -1.19538, -2.64269, -4.77377, -4.50282, - 2.11742, 1.85531, -1.0953, -4.23724, 0.736428, -3.5851, 1.48482, 0.141458, -1.86905, 3.5453, - -2.82172, -3.05134, -3.75254, 4.95023, -1.05753, 1.91518, -3.26179, 4.54684, -4.10982, -1.89519, - 1.14695, 1.47464, 1.4862, -4.79501, -4.77577, -2.36627, 0.19994, 3.35062, 1.23547, 5}, - std::vector{ - -5, -4.90212, 2.04852, -4.06222, -2.05556, 1.71858, 4.89697, -3.57399, 3.22732, -1.36818, - -3.74683, -4.60178, 0.196569, 1.58981, -3.29433, -2.98955, 2.02674, 1.8465, -1.85874, -2.1893, - 4.83577, 1.90244, 2.07352, 0.598257, 3.49708, 1.4686, 0.754768, 1.94554, 3.96111, 0.133566, - -3.82646, 4.88763, 0.229708, -2.03485, 3.4875, 1.79253, -0.38706, -2.65237, 0.100763, -2.15537, - 1.71114, 4.87242, -0.449133, 3.7298, -4.50384, 0.0434988, -4.31846, -4.79365, -2.04677, -4.72319, - 1.47757, 1.06105, 3.82314, 3.14707, 4.1567, 1.89765, 4.28057, 3.15959, 1.97148, 3.77296, - 2.90827, 3.08369, 4.84089, -1.83596, 2.32062, -4.18992, 1.58745, 0.212731, -3.36909, -1.486, - 2.07869, -1.65644, 1.39901, 1.31554, 1.7938, 4.02885, -1.31798, 0.48152, -0.964317, 5}, - std::vector{ - -0.999909, -5.07626e-11, 4.13326e-13, 5.835e-05, -1.30828e-35, 0.761594, -3.42026e-22, -1.13159e-30, -4.18379e-13, 0.821244, - -0.999909, -5.07626e-11, 0.49691, 0.000728936, 6.90693e-27, 0.963522, -9.60537e-09, -0.997578, -0.0213497, 5.66025e-14, - -0.999928, 2.69134e-08, 4.40231e-06, -6.96162e-19, 0.511536, 0.287868, -0.762594, -0.997594, -0.9476, 0.76483, - -0.999465, 1.57167e-10, 0.49691, -3.00368e-17, -1.50091e-08, 0.785706, -0.368554, -0.997594, -0.981176, -0.761575, - -7.99627e-07, 9.21166e-05, 0.332835, 4.10511e-31, -9.42096e-13, 0.378887, -0.00455473, 2.21606e-11, -0.997432, 1.16333e-05, - -8.98809e-32, 3.03724e-15, 0.25859, -0.000176827, -0.954949, 2.55493e-17, -0.983461, 9.09049e-13, -0.980796, 0.784393, - -0.000793236, 2.55449e-20, 5.38752e-09, -9.86419e-35, -1.94761e-19, 1.83397e-12, -0.988398, 3.78249e-10, -0.997432, 0.771463, - -3.52882e-15, 1.21005e-16, 0.000182383, -4.34274e-08, -0.594177, 1.33054e-06, -0.920454, 0.76128, -0.999382, 0.000389586, - -9.19733e-06, 4.3138e-07, 1.41793e-21, -0.761594, 0.305402, 0.000580937, -0.531783, -1.00171e-05, 5.83801e-30, 0.0243704, - -1.23107e-30, 0.00725055, 0.76182, 1.27929e-05, 1.58846e-07, -0.680477, -5.73051e-15, 6.33457e-20, 0.000288991, 0.00312473, - 0.761596, -0.000445729, 2.03617e-09, 5.11049e-30, 0.964028, -1.18563e-22, 3.80413e-32, -1.97169e-18, -0.759971, -1.27976e-07, - 0.74886, -0.000445729, 0.805263, -1.49589e-10, 0.641535, -1.41323e-07, 1.47308e-24, -4.77803e-13, -5.96046e-08, -1.95598e-10, - -0.581045, -0.00103914, 0.805263, 1.64052e-14, 0.00323384, 1.15601e-13, 6.4162e-14, 2.77607e-22, 0.0497418, 5.30151e-18, - -0.329421, -2.57703e-06, 0.963854, -1.01966e-13, -1.18368e-08, 6.02313e-09, 0.114898, 9.46065e-13, 0.761594, 2.13439e-08, - 0.523866, 0.761529, 0.760565, -0.00461076, 0.00150048, -0.00174691, -0.436961, 5.48788e-11, 2.41781e-14, 2.19602e-08, - -6.14432e-17, 8.04105e-14, -3.89646e-18, -0.00379894, 3.63214e-16, -0.616305, 0.964023, 5.81763e-07, 1.09818e-06, 2.19604e-08, - -0.87856, -0.354106, -0.715297, -1.65026e-20, 6.05625e-17, 2.48927e-05, 1.96127e-05, 1.41168e-23, 5.4023e-07, 0.761544, - -3.06545e-19, -7.18136e-08, -1.8746e-07, -1.47835e-07, 1.34948e-07, 0.761594, 0.999987, 3.23361e-26, 1.28856e-06, 0.761618, - -0.892197, 1.36596e-19, 6.65404e-09, -2.64782e-09, 0.766419, -0.998266, 0.000204802, 1.00874e-08, -4.23892e-11, 2.38972e-09, - -0.901095, 0.00314948, 0.156432, -3.46747e-21, 0.766474, -4.19696e-07, 0.00359662, 0.985378, 1.26476e-26, 1.36917e-06, - -8.30729e-05, 1.09966e-09, 3.39125e-24, -2.54402e-09, -0.0224086, 0.999078, -8.56764e-17, 2.17593e-09, -5.3338e-18, -2.09897e-25, - -0.731555, 1.0058e-09, 1.80811e-06, -7.35442e-08, 5.03322e-18, 0.99907, 5.06163e-08, 0.998803, -3.31849e-14, -0.314541, - 6.56072e-06, 2.3231e-05, -0.734035, -0.801636, 0.761566, 1.44226e-12, -0.521044, 0.998576, 2.04797e-08, -0.999782, - 8.46822e-16, 0.236769, -1.06652e-14, -0.000473771, 0.964, 1.61872e-15, -0.918253, -6.50992e-10, 1.19996e-09, -0.976642, - -1.74187e-06, 2.59573e-19, -2.2928e-13, -8.87904e-17, 0.148158, 4.75517e-15, -0.98799, -6.50965e-10, -0.761594, 0.760215, - 0.000518275, 0.434619, -0.0692393, -0.761594, 0.274058, 6.53858e-08, -0.998366, -3.22841e-06, 1.72996e-06, 0.963795, - -0.735883, -1.68637e-22, 0.00299617, -2.95948e-14, -0.754872, 0.964028, -0.832263, 2.96769e-05, -1.3113e-06, 0.761594, - 1.00882e-20, -0.700681, 0.251888, -1.44631e-16, -5.78152e-16, 0.964028, -3.13362e-09, 2.38789e-16, -1.29541e-06, -4.12287e-11, - 3.57653e-37, -0.953416, -0.00116461, 4.51481e-11, 0.000654999, -9.88477e-13, -8.25559e-09, 3.24498e-11, 0.631349, -2.22783e-15, - 0.00463415, -0.218827, -3.33063e-20, 2.62387e-15, 0.000655749, -0.761594, -9.3791e-19, 3.55914e-07, 1.21115e-10, 8.51853e-05, - 0.746421, -0.203347, 0.964016, -0.675211, -0.757478, 4.1336e-13, 1.31125e-14, -0.752869, -3.40686e-11, -9.04177e-20, - 0.761593, -0.203337, 0.761593, 4.32757e-13, 0.761594, 1.12104e-12, 1.10405e-22, 2.21747e-11, -0.761594, -0.000232199, - -7.34674e-20, -0.761592, 1.12101e-05, 0.96248, 1.05897e-15, -0.961035, 0.995049, 0.714666, -0.11871, 0.252246, - -3.96402e-21, -0.116561, -2.34864e-11, 1.73253e-05, 6.71033e-11, -0.761585, 0.964016, 5.67781e-08, -0.00572334, 0.76158, - -0.520498, 5.11946e-09, -1.68016e-05, 7.55615e-09, 0.959448, -2.85015e-19, 0.753059, 4.49821e-06, 1.60358e-10, 3.66218e-21, - -2.05996e-14, 9.10536e-05, 0.443528, 0.000286103, 1.1389e-16, -0.332143, 0.000106997, 1.66753e-09, -0.761594, 7.13778e-13, - -0.71679, -0.761576, 0.754419, 0.000282388, -0.762039, 9.84022e-09, -0.0872869, 7.7548e-11, 6.80808e-09, 2.60995e-08, - 4.78222e-09, -0.501957, 0.762282, -0.753946, -1.47174e-09, -0.964027, -0.7082, -0.963465, -9.54667e-13, 3.02122e-08, - 7.1591e-12, 6.3354e-14, 2.94622e-22, -0.940787, -6.09716e-15, -2.65188e-14, -0.0115473, -0.758209, 6.95914e-17, 0.760974, - 0.140932, 4.35034e-05, 0.760892, -0.632027, -0.76149, 2.15703e-11, 0.777049, -0.00238567, 5.3589e-28, 0.760506, - -8.19313e-13, -0.99918, -1.76353e-09, -3.25938e-08, 3.69808e-14, 5.13777e-15, -0.992067, 3.2008e-13, -4.27895e-35, -0.00033198, - -2.22583e-14, 2.33933e-18, -1.83076e-06, -2.05328e-23, 0.335589, 6.74499e-20, -0.993734, 3.25956e-15, -0.76157, 0.761592, - -1.39733e-26, 3.51873e-08, -0.000449794, 0.753596, 6.14397e-06, -0.0399566, 6.81031e-16, -1.4436e-16, 6.54251e-37, 6.25711e-16, - -0.751923, 1.76327e-06, -0.759611, -5.82387e-22, -3.55939e-10, 2.0026e-05, 1.42291e-08, 0.00127849, -0.761586, 0.920489, - -0.0123201, 1.49775e-11, -0.759593, 0.760956, -1.59088e-19, 1.89399e-06, 1.41353e-17, -3.71678e-07, -7.58637e-09, 4.56301e-13, - -0.76173, 6.38001e-12, -3.26879e-12, 2.54147e-19, 0.00349909, 1.94641e-15, 0.000533218, -0.680174, -0.798763, -0.749397, - -1.51134e-16, 0.76157, -0.758462, 0.212695, 2.33021e-17, 1.62019e-15, -5.34576e-05, -2.0166e-15, -0.0958154, -3.4894e-05, - 1.54693e-09, 0.761228, -0.045171, -0.654946, 0.658682, 0.000900979, -0.0121633, -9.55765e-07, -5.83339e-07, -0.697058, - 3.12132e-18, 0.599694, -2.41771e-11, 0.128772, 0.0345568, 0.0222523, -3.01504e-23, -1.42109e-23, 1.32333e-13, 5.34001e-15, - -6.2253e-22, 8.88893e-22, 0.000599919, -6.13229e-19, 9.45362e-05, 1.03827e-16, -0.00543732, -9.86013e-09, -0.761408, 0.214137, - -8.00209e-24, 0.679937, 0.917833, -1.34199e-10, 1.89431e-07, -0.761594, -0.0442637, -0.000217974, 0.00476938, 0.0246565, - -5.376e-08, 0.784315, 0.00101343, 0.0946926, 0.980865, -0.761594, -0.707944, -4.73592e-12, 4.01193e-13, 1.73187e-07, - 0.000424088, 2.85811e-08, 3.59465e-08, -0.472002, 0.867616, -0.757693, -2.0641e-10, -0.994265, -9.17776e-06, 5.91256e-15, - 0.963968, 0.31226, 0.0461947, 1.10725e-08, 2.92814e-07, -5.24128e-08, -0.00704819, -7.04583e-10, -0.000118595, -0.760989, - 0.761239, 0.312348, 0.0461707, -4.89262e-06, 0.762134, 0.0216284, 4.89744e-20, -0.705499, -0.0105222, -2.47122e-06, - -0.0353277, -0.529026, 0.0371158, 0.0910813, 0.964028, 0.761582, 0.0233926, -2.56495e-19, 2.55893e-06, -4.6058e-09, - 0.0361859, 0.947518, 0.645797, -1.36319e-07, 1.11416e-06, -0.000967128, 1.71085e-06, -3.83432e-05, -4.46048e-12, 1.68634e-09, - 3.07729e-10, 0.0198492, 0.055882, -1.79771e-09, -2.43386e-18, -0.228931, 0.760035, -0.761594, -0.393895, 0.761594, - 0.761594, 0.0695398, -2.10839e-05, -0.761593, -0.761593, -7.67992e-12, -0.000156758, -0.761546, -7.03448e-14, -1.32276e-19, - -9.58347e-39, 4.26105e-18, -5.41441e-05, 4.03958e-17, 4.40911e-16, -0.747015, -0.879764, 2.22597e-08, -0.0910139, 0.999823, - 0.999852, -0.946979, 4.04764e-10, 1.04581e-21, 1.30145e-14, 9.21577e-17, -0.000708233, 0.761594, 3.99524e-13, 9.18395e-17, - 8.95967e-25, 6.11501e-20, 0.00901172, -2.49613e-41, -1.17426e-18, 3.85668e-09, -0.0678945, 7.0955e-16, -0.761593, 0.792416, - 0.999844, 0.441572, 0.00697713, 5.52616e-05, 2.76337e-24, 0.0128815, -8.97325e-09, 0.0575689, -9.19902e-17, 0.79131, - 0.90745, 0.442877, 1.65895e-09, -9.49956e-12, -0.761592, 0.759226, -0.788664, 0.428198, 4.22296e-08, 0.960446, - -3.30814e-05, -7.32391e-11, -0.761195, 0.761591, -0.11482, 0.00328929, -0.751446, -0.0329113, -2.38419e-07, -0.742049, - -0.761814, 2.28806e-08, 9.20868e-10, 7.83398e-05, 0.163255, 0.693679, 0.0233387, -0.0002779, -0.00744079, 0.761594, - -1.92574e-35, -6.19079e-15, 0.841117, 3.61402e-15, 7.29652e-05, -3.43512e-15, 2.44003e-10, 5.02575e-21, -0.575338, 0.760067, - -7.58183e-07, -0.411779, 0.937771, -5.07946e-26, -0.0015457, 0.625772, -0.128913, 7.19112e-12, -0.483728, 5.19518e-07, - 2.4981e-17, -2.77282e-10, -6.1325e-23, 4.02951e-22, -0.55648, 0.627102, -6.88607e-19, 9.6838e-17, -0.0142015, 1.0327e-05, - -0.761481, 3.44292e-08, -0.644774, 5.99614e-06, -2.4661e-12, 0.939834, -0.732183, 0.758408, -0.406918, 0.761563, - 0.624331, 0.959323, -0.757392, 0.00112301, 0.0215218, -7.76243e-10, -6.42156e-20, -3.81184e-11, 2.64018e-18, -0.00122851, - -9.04986e-17, 0.959198, -0.180509, 8.1107e-09, 4.4799e-16, -0.761594, 0.761594, -3.2702e-11, 6.12426e-16, -7.52802e-11, - 0.727842, 0.736519, 0.00697721, 0.00189766, 0.65557, -8.23888e-06, 1.19768e-19, -0.628732, 4.50315e-07, -0.596042, - -0.130076, -0.0570775, -0.758032, -0.720559, 0.329393, -0.000139915, -7.64476e-11, -1.93167e-30, 8.91504e-10, -5.52299e-08, - -0.00538237, -1.59122e-08, -4.0649e-14, -0.747447, 0.871613, 4.90251e-14, 0.760524, 0.623387, 0.761594, -0.963604, - -0.761594, -0.760084, 0.76159, -0.726583, 0.783823, 2.00219e-05, 1.12777e-06, 1.49013e-16, 0.761591, -0.625537, - 2.84003e-10, 4.32528e-16, 2.39073e-07, -6.75822e-06, 2.44769e-23, -1.39062e-07, 0.768824, -0.000734329, -1.18028e-08, -9.31533e-16, - 1.32778e-09, -5.24861e-07, 0.7686, 1.34084e-06, -0.0222266, -0.775352, 0.000264648, -2.44784e-27, -8.62503e-05, -0.523765, - 8.05469e-07, -8.00327e-17, 1.0076e-08, 0.655086, 1.12223e-07, -2.45992e-13, 0.761594, -0.000735076, -3.16667e-21, -1.0616e-12, - 0.999911, 6.67684e-10, -0.386663, 9.55342e-24, 0.000750192, -3.04876e-14, 1.69092e-13, 2.57222e-30, -0.886215, -8.85092e-18, - -0.999066, -0.992009, -9.64733e-07, 0.999793, 0.999959, -4.526e-09, -0.993717, 6.25306e-09, 1.5415e-21, 0.761594, - -5.23755e-08, -0.827688, -0, 5.99811e-22, 0.999958, -0.580146, -6.79704e-17, 1.83394e-07, 1.31284e-13, 3.62265e-10, - 0.35334, -0.00903121, -0.991192, 7.53642e-07, -0.00913154, -1.29673e-06, -1.76794e-11, 1.83017e-07, -0.000150782, 0.761551, - -0.739773, -0.268164, -0.991253, 0.761593, -8.46913e-07, 4.02483e-07, -0.0547462, -0.0433184, -0.0128592, -0.000826936, - 3.57959e-13, -0.073303, 2.14562e-10, 7.38332e-11, 0.00409962, 0.724394, -1.16275e-22, 1.63268e-25, -1.47741e-05, 3.33773e-08, - -7.77931e-12, 2.71497e-08, 3.42017e-05, 0.761594, -2.43217e-13, -6.87127e-23, -0.761548, 7.04828e-08, -0.761307, 1.3015e-07, - -0.00537324, 1.27446e-16, 0.763627, 4.22074e-15, -8.45132e-18, 0.00159667, 0.756707, 0.129373, -0.964029, 0.761554, - 3.34318e-14, 3.74157e-15, 0.763626, 4.1317e-22, -0.734039, 4.81716e-07, 0.753698, 0.758801, -0.995055, -0.76151, - 1.11652e-10, 1.10396e-07, 0.761582, 0.761191, -0.949494, 4.12621e-08, -0.0185743, -5.64389e-13, 1.35275e-28, -0.761587, - -2.38573e-16, -3.53137e-05, -0.438905, 0.0134316, 4.40739e-11, -3.01366e-05, -1.38874e-32, -3.77945e-21, 0.0780586, 1.6805e-13, - 0.751234, -0.803057, 0.811984, 7.895e-05, 0.761593, -0.00119532, -5.48256e-06, 0.757714, 0.761594, -0.761511, - -1.92404e-24, -1.41394e-08, 0.983753, 4.33593e-18, 6.11314e-09, -0.000849993, -0.96402, -3.8176e-18, -1.24685e-14, 8.03048e-05, - 0.994964, 0.130676, 0.922726, 1.28861e-07, 0.761594, -6.48442e-30, -0.761584, 0.761594, -3.41314e-14, -1.08584e-06, - 0.963591, 0.130676, 0.542119, -0.725731, 0.761583, -1.63707e-11, 2.25863e-17, 0.766755, -0.761594, -9.47899e-06, - 0.760034, 0.0996578, 0.757886, -0.761808, -0.000816665, -0.000733465, 0.761594, 0.670761, -4.79781e-25, -3.77769e-09, - -0.071795, -2.09178e-29, -2.96662e-22, -5.45929e-22, 4.72562e-14, 2.23143e-12, 2.66405e-05, 0.948048, -5.47349e-07, 0.761064, - -0.071795, -1.62295e-13, -2.48377e-11, 0.000322916, 1.0934e-18, 0.745943, 0.000203257, 2.9748e-09, 2.94779e-09, 0.000904395, - -1.33357e-12, -0.761594, 4.154e-08, 0.761365, -1.23576e-05, -0.118402, 0.758765, 8.3947e-11, 0.757683, 0.00091744, - 6.04679e-13, -8.36692e-05, -7.73738e-13, -0.964028, -2.87151e-05, -0.964027, -0.761415, 2.8511e-12, 0.982895, 0.000913338, - 0.761594, -5.61929e-05, -4.03471e-09, -9.05792e-10, -2.44896e-14, -0.761593, -1.53072e-14, 4.80451e-06, 4.97845e-05, 2.61901e-17}, - std::vector{ - -1.23107e-30, 0.00725055, 0.76182, 1.27929e-05, 1.58846e-07, -0.680477, -5.73051e-15, 6.33457e-20, 0.000288991, 0.00312473, - 0.761596, -0.000445729, 2.03617e-09, 5.11049e-30, 0.964028, -1.18563e-22, 3.80413e-32, -1.97169e-18, -0.759971, -1.27976e-07, - 0.00463415, -0.218827, -3.33063e-20, 2.62387e-15, 0.000655749, -0.761594, -9.3791e-19, 3.55914e-07, 1.21115e-10, 8.51853e-05, - 0.746421, -0.203347, 0.964016, -0.675211, -0.757478, 4.1336e-13, 1.31125e-14, -0.752869, -3.40686e-11, -9.04177e-20, - -6.2253e-22, 8.88893e-22, 0.000599919, -6.13229e-19, 9.45362e-05, 1.03827e-16, -0.00543732, -9.86013e-09, -0.761408, 0.214137, - -8.00209e-24, 0.679937, 0.917833, -1.34199e-10, 1.89431e-07, -0.761594, -0.0442637, -0.000217974, 0.00476938, 0.0246565, - -0.761481, 3.44292e-08, -0.644774, 5.99614e-06, -2.4661e-12, 0.939834, -0.732183, 0.758408, -0.406918, 0.761563, - 0.624331, 0.959323, -0.757392, 0.00112301, 0.0215218, -7.76243e-10, -6.42156e-20, -3.81184e-11, 2.64018e-18, -0.00122851, - -2.38573e-16, -3.53137e-05, -0.438905, 0.0134316, 4.40739e-11, -3.01366e-05, -1.38874e-32, -3.77945e-21, 0.0780586, 1.6805e-13, - 0.751234, -0.803057, 0.811984, 7.895e-05, 0.761593, -0.00119532, -5.48256e-06, 0.757714, 0.761594, -0.761511}, - std::vector{ - -1.14805e-14, 0.00725081, 1.00065, 1.27929e-05, 1.29939, -0.999801, -5.73051e-15, 3.93105e-11, 1.9999, 0.0243762, - 1, -0.000445729, 2.03617e-09, 5.11049e-30, 2, -1.67708e-22, 1, -0.0034493, -1, -0.591546, - 0.00463418, -2.86822, -0.230709, 0.0172415, 0.000655749, -1, -3.072e-06, 0.746059, 7.45091e-09, 8.51853e-05, - 0.965889, -0.206222, 1.99984, -0.999999, -0.990272, 1.11695e-12, 0.0222863, -0.979547, -2, -1.01401, - -0.999991, 0.976968, 1, -3.63016e-07, 0.0208492, 3.42118e-07, -0.00543741, -9.86013e-09, -0.999558, 0.219696, - -1.00056, 0.828996, 1.99999, -2.98023e-07, 1.61781e-05, -1, -0.044346, -1.00563, 0.099386, 0.0246731, - -0.999731, 3.44351e-08, -0.766302, 5.99614e-06, -0.087751, 1.73662, -0.999998, 1, -0.431925, 0.999926, - 0.732687, 1.93734, -0.99007, 1.41437, 0.0215275, -7.76243e-10, -1.4114e-06, -1.2676, 9.7866e-11, -0.999843, - -0.0294529, -3.65437e-05, -0.470874, 0.998836, 1.19728e-05, -3.01366e-05, -1.90968e-25, -2.75275e-07, 0.0782207, 0.000366083, - 0.975781, -1.10725, 1.13283, 7.895e-05, 1, -0.00119563, -0.99991, 0.990824, 1, -1}), + -5, 1.38574, -3.40488, 1.59498, -1.40479, -0.774824, 0.776861, 4.44599, 4.65645, + -0.93456, -2.73502, 3.51855, 4.47696, 2.91625, -0.68445, 4.43112, -4.38335, 3.58399, + -3.5086, 0.863423, -0.279341, 2.84091, 3.83352, -2.69488, 2.11292, -4.86518, 1.38034, + 1.30028, -1.84802, 4.05115, 1.67509, 4.59603, 2.46173, 1.70552, -2.21902, 4.04495, + 1.18181, -2.28113, -4.71689, -3.04267, 0.500298, -2.41982, 3.09957, -2.96136, 3.4832, + -4.11859, -3.75488, -3.0709, 1.24288, -1.92552, 1.90494, 3.41518, 1.08902, 2.44889, + 3.9638, 3.99164, -3.69309, -2.63514, 3.04926, 3.2098, -0.405537, 3.22924, 4.65977, + 2.24535, -1.10242, -3.97405, 3.67443, 2.69645, 3.40125, -3.05413, 2.16447, 3.45673, + -0.00307435, -4.73115, 3.10638, 2.40497, 4.16993, -1.29241, -2.06006, 0.470756, 0.781379, + -2.77629, 0.291053, -0.862092, 0.863825, -2.31703, 4.10805, 2.96997, -4.90259, 4.54135, + 0.149612, 3.08602, -2.13883, -3.62432, -2.40104, -2.07502, -4.83612, 3.99756, 2.82135, + -0.395894, 4.39348, 0.466077, 0.766771, 2.01238, 2.06508, 0.772249, 1.9867, -0.996579, + 2.48071, 4.49585, 0.453517, -4.17035, 3.7106, 3.36282, 3.23191, -0.640585, 1.38488, + -2.17163, 0.652199, -0.158743, 4.6801, -0.926323, -2.0441, 4.05972, 1.53695, -1.47499, + -3.02639, -2.46746, 2.02894, 3.84978, 3.51725, 4.88996, -1.55536, -2.95742, 2.67589, + -0.955491, -2.58142, -1.12036, -1.63169, -3.3286, 0.909692, -4.98742, 2.3819, -3.80322, + 2.35674, -2.01539, -1.54806, -0.301092, 4.52245, 0.48912, 0.349015, -4.47653, -3.93302, + -4.539, 4.10146, -0.21952, -4.79841, 4.41982, 1.43739, 1.89926, 2.67474, 2.62216, + -0.913088, -4.2081, 3.61542, -3.64835, 1.87344, 0.211608, 3.65209, -4.61966, 3.15605, + 0.0621908, -4.82205, -1.12782, 1.66538, 2.10551, -0.21663, -1.87744, 3.8985, -1.33132, + 2.94648, -4.89908, 1.08219, -1.82947, 1.3488, -0.839479, 0.424618, 0.108287, 3.44509, + 1.66413, 1.10641, 1.12783, 2.57802, 0.222069, 0.469913, 1.64298, 4.05762, 2.89772, + 0.158175, 2.14327, 0.0127615, 4.38472, 1.37834, 3.20256, -4.69572, 3.79924, -0.31191, + 3.94988, -2.49268, -3.9734, -1.95347, -1.11895, 2.22331, -4.87892, -1.7993, -3.93962, + 0.940251, 1.50669, 4.12202, 1.14476, -3.22335, -4.6922, 0.274547, 0.786363, 4.96083, + -3.72688, -0.46743, 1.34387, 3.52815, 0.378364, 0.989814, -4.81342, -4.99949, -2.57458, + -4.8473, 3.61751, -0.291682, -4.45674, -3.86048, 4.55838, -0.558553, 4.22434, 0.485826, + 3.02256, -4.18217, -0.970154, -2.29033, -3.17236, -3.24192, -1.19776, -1.10376, 2.74642, + 2.92208, -0.253459, -0.727743, -2.6816, 2.05987, 0.821414, 2.55421, 1.73239, 1.07334, + -0.51151, -4.08995, 4.54727, 0.354294, 1.32332, -0.95764, -0.890992, -2.10241, -2.70027, + -3.80798, -4.92614, 1.72164, 4.90619, 0.68811, -2.84043, 0.228619, 3.06368, 1.88669, + 4.06624, -0.317901, 4.32894, 3.31458, -3.78791, -4.13413, -0.720673, -4.2847, 2.5743, + -2.0607, -4.7294, -1.1922, -4.25132, 2.51276, -2.46105, 3.63289, -2.9029, -3.89352, + -4.56467, 4.42607, 4.82693, -2.69463, 4.51783, -0.907243, -2.78669, 4.18723, 2.34626, + 3.26836, -2.76921, 4.75613, -1.25286, -1.87767, 3.64592, -3.43697, -3.65555, -2.30538, + 2.84627, -2.97604, 1.01567, -1.38899, -3.59646, 1.65457, 1.07598, 0.107017, -4.40483, + -3.71999, 4.20983, 0.778437, 4.03383, 1.31396, 3.58678, 4.77689, 0.578005, -2.15946, + -4.90681, 1.4671, 2.04727, -4.43527, -1.89183, 3.54344, 3.0036, 3.81351, -0.304046, + 4.08728, -1.53035, 0.84424, 3.17114, 2.83768, -0.247921, -1.93513, -4.63661, -1.12005, + 1.45256, -1.15546, 1.60745, -3.76519, 3.94909, 1.43606, -3.87999, 1.78168, 0.370893, + 2.32649, -0.945226, 3.86596, -4.42396, 0.844734, -2.1054, 0.0782569, 2.11735, 3.4132, + 1.88877, -3.23712, 2.91202, 2.16514, 2.07883, 1.37829, -3.31629, 2.28908, 3.98293, + -0.77331, -0.164568, -3.97808, -1.30991, 3.64372, 4.19263, 3.90947, -1.78475, 3.94366, + 4.18793, -4.11379, 3.91526, 1.33598, -0.0962256, 4.72887, -1.53884, 3.28632, -1.22307, + 1.04336, -1.78493, 4.46535, 2.2445, 3.79802, -1.44113, 2.9843, -3.40275, 4.31126, + 1.63422, -4.32046, 4.21314, 4.49346, 2.26706, -4.63838, -2.81771, -3.23518, -0.494282, + 1.80663, -0.345847, -4.71775, -4.64164, -1.17283, 1.11853, -1.94206, 3.73188, 3.61315, + 0.36183, -2.94746, 2.7314, -4.61468, 3.86121, 0.19202, 1.18747, 4.02233, -3.69848, + 1.33929, 2.94477, 1.80769, -2.99931, -4.77907, 0.0433281, 2.8262, -4.34346, 0.171945, + -2.70003, -1.17702, -3.16753, -0.665832, -0.493026, 3.40444, -2.0408, 3.98367, -3.76943, + 3.89665, 4.78787, 2.40015, -1.24947, 0.991205, 2.93423, -4.86143, 3.17028, -2.26548, + 1.03663, 4.61205, 4.75579, 4.99013, 4.23479, -4.45891, -2.65092, -3.90674, -3.53842, + 0.178697, 2.23177, -4.97903, -2.10417, -3.41522, -1.52118, -4.1973, 0.196365, -3.07567, + 2.6714, 0.0329277, 1.86999, -3.85877, -1.00351, -1.47763, -1.39762, -1.54178, 3.08322, + -3.18606, 2.445, -3.89596, -1.96158, 0.0700858, 0.518499, -3.63671, -0.617976, 0.341244, + 2.04532, 3.65188, 2.35683, -0.89304, 0.0257487, -1.54115, -0.860534, 2.32265, -3.83482, + -2.42048, 2.69591, 4.02649, -1.87481, 4.63578, 0.771746, 4.82279, -1.68132, 2.46822, + 4.48127, -2.72111, -0.355886, 0.266078, -4.89841, -0.850352, 2.77856, 0.429384, 3.58205, + 3.09831, 4.72246, -2.40146, -2.7575, 4.35845, -1.53977, -2.47573, 1.727, 1.54918, + -3.72806, -1.09464, 0.902036, -3.65559, -2.55986, -3.64498, -2.5337, -4.78799, 2.46949, + -3.26495, -2.32184, 0.154838, -4.15034, -3.54186, 2.08248, 3.73156, -1.08542, 3.89507, + 4.29175, 4.46461, -4.04293, 2.00413, 1.75029, -2.7672, -0.584663, 3.17988, 3.9949, + -1.16367, 2.6852, 0.136113, 3.24949, 1.48249, -1.75121, 2.93909, -3.09163, 0.826285, + 2.60739, -1.63573, 3.22668, 0.00300903, 0.575604, -0.267615, -4.62369, -3.98882, 3.31384, + -3.84641, -0.164339, -1.9838, 3.45511, -1.04323, 3.56878, 3.3694, -4.81446, 1.85392, + 1.59741, 4.2085, 1.54342, -1.25854, -0.0477599, 4.83944, 3.41224, -4.87642, 3.34542, + 4.34374, 1.68048, -4.17476, -3.99847, -1.0523, -4.77302, -3.79443, -1.23287, -2.90961, + -3.20999, 1.85511, 2.06811, -2.20368, -1.81411, -2.62059, 1.88005, -3.17691, -2.90064, + -3.11477, 1.7461, -3.02032, -4.01402, -4.87155, -2.7408, 2.13552, 3.60602, -3.68662, + 3.94441, 1.75357, 3.18497, -2.67031, 3.28189, 0.764719, 1.62342, -1.16762, -4.59845, + 0.336623, 2.26649, 3.89547, 2.07511, 2.93817, -1.03081, 3.30557, 0.72491, 3.1453, + 0.769547, -2.92608, 0.13144, -0.0691925, -4.07191, 4.01141, -3.50862, -0.749251, -3.21837, + 1.06989, 3.97227, 1.54475, 4.78368, -3.18741, 4.10281, 3.61094, -2.81927, 4.0446, + -0.688241, -0.195357, -1.89505, 1.3421, 3.13891, -0.625937, -3.07901, 0.676794, -4.31063, + 0.110105, 0.219899, 3.43871, 3.34377, 3.90145, -2.36654, 3.87301, -3.27531, 2.66387, + -4.84057, 4.20739, -0.915956, 2.33027, 2.63642, 1.31649, -3.45589, 3.61696, 1.39562, + 1.50066, 0.953228, 2.33703, -1.74775, 1.90994, 0.158689, 2.00179, 1.97409, -0.447395, + 3.93314, 0.379663, -3.20044, -4.63811, 3.33694, -2.92811, -0.334244, -1.82335, -1.99341, + -2.38105, -3.42019, 4.49144, 4.50581, 0.146444, -4.01907, 2.76861, 2.54542, -4.88271, + 4.25518, 3.71932, -2.67843, -4.61096, 2.49717, 3.22838, 2.91755, 2.81098, -0.212338, + -4.09407, 3.46949, -0.264652, 0.653515, 0.510898, 1.74902, -0.615688, 0.225622, 3.35548, + 2.3847, 0.542832, -1.47433, 2.86275, -3.14377, -3.10022, 4.98831, 1.61969, 0.994205, + 3.34565, -2.12893, -2.35919, 0.905238, -0.847957, -3.33345, -0.448516, 1.31451, 3.56578, + -4.07352, -0.694577, -3.23525, 1.98038, 4.05222, 0.15182, 2.11475, -4.91253, -2.83372, + -0.800172, -0.797281, 4.91775, 0.71457, 2.64354, -4.37525, 3.93947, 4.29284, 0.376963, + 0.483439, -1.20476, 1.54934, -1.60458, -2.03934, 3.17352, 1.84459, -0.57479, 2.83865, + 4.82469, -0.00921004, -3.30157, -3.63386, -3.94658, 1.96984, 4.15967, 3.75591, -0.538282, + -1.32521, 0.128334, -0.57577, 0.96914, 1.10537, 2.45218, 2.8899, 1.61422, 1.46003, + 2.45143, 1.49513, 0.761625, -3.07383, 0.554756, 4.26704, 0.702351, 5}, + std::vector{ + -5, -2.76745, -3.36272, 0.786832, -0.536305, -2.6808, 2.75696, -2.38186, -2.97924, + -1.8377, -1.8783, -2.34573, 1.51361, -0.429618, -0.165277, -4.11843, 2.8142, 2.19643, + 4.21874, 1.96632, -1.04831, -3.02755, 3.21475, -0.624601, 2.22647, 0.583331, -3.05985, + -2.92969, 4.40203, 4.96686, -2.67395, 0.58967, 1.75651, 3.90978, -2.32869, -0.251364, + -0.076078, -2.76866, 3.98696, -3.89213, -0.84402, -0.84834, -3.69578, -2.08657, -3.91955, + 4.22513, -3.88648, -1.39718, -0.026567, 1.30207, 2.68671, 1.60689, 3.78493, -1.1378, + -1.50906, 4.42047, 1.11537, 3.98267, -0.826257, 0.65135, -3.50771, 3.93109, 1.36732, + -2.45974, -1.47327, 0.772411, 2.65195, 3.03698, -0.592716, -0.558972, 3.40876, 3.26508, + -3.91006, 0.147352, 4.54504, 0.695234, 4.9661, -0.64909, 1.45945, 3.82606, -4.26746, + 2.80674, 3.86749, -0.115914, -2.02211, -3.06485, 2.15541, -0.715792, 0.966579, -1.59997, + -4.06261, 0.592467, -0.94068, -2.1352, 2.87121, 4.68889, -4.91329, 0.299997, -1.02383, + 1.62808, 3.77503, -3.10425, -3.31658, 2.88163, -4.02717, 2.43578, 2.97519, -2.72692, + -2.94946, -4.62235, 0.938072, -3.56148, 4.96502, -4.73707, 3.46557, -0.84019, 4.05851, + 0.971805, 3.67174, 0.272782, 3.11246, -3.17549, 0.703277, -1.83248, -2.66066, 1.93464, + 0.505384, 2.92792, 4.47033, 0.221046, 0.757135, 2.87319, -2.95227, -3.87443, 3.22101, + -3.01482, -3.17032, 1.28237, -4.21317, -0.735796, -3.95619, 2.21906, 1.35044, 2.38934, + 3.73366, -2.37152, -1.21153, 2.32514, -2.52731, -1.27155, -3.50355, -3.01653, -2.55113, + 1.53067, -0.114533, 0.0749606, -1.90288, -4.09761, -2.89037, -2.07762, -4.15337, 4.51941, + 4.96817, 1.81584, -2.77298, -3.77737, 0.511126, -3.95519, 0.312086, 2.07223, 0.682299, + -1.93266, -2.17914, -0.747721, -1.33989, -4.1225, 2.73361, 1.20164, 2.0721, 0.616006, + -2.14654, -1.09562, 2.69654, -1.29804, -3.06921, 0.918753, -0.960092, -2.76928, -4.81197, + -0.228397, 2.9628, -3.62481, -0.877274, -0.636959, -2.77519, 1.92274, -2.71535, 0.823748, + 0.0571949, -2.80894, -2.93044, 2.44277, 3.72529, -1.39665, 0.419583, -0.735395, 0.141612, + 4.91315, -1.85428, 3.59253, 4.63525, -4.308, -4.04851, -4.52805, 3.46887, -3.40928, + 1.49532, -4.29342, 0.864934, -4.68825, -4.24461, 4.62154, 0.258795, -1.59565, -4.96134, + -1.42749, -1.41203, -4.28422, -1.34112, 0.776945, -4.04485, -3.96018, 0.580818, -4.41352, + 1.14779, -4.36729, 3.8481, -1.66048, -0.950351, 3.57762, -2.33159, 1.01822, 1.35339, + 4.7311, -4.59032, 3.43969, -0.238646, -1.39467, -0.329268, 3.23937, -0.284994, -3.59913, + -2.26108, -0.378409, -3.475, -0.160139, -0.838942, 0.527827, -1.51829, -2.46392, 1.89068, + -4.46563, -2.60946, 3.53656, -2.20977, -0.851908, -2.42698, -2.03249, -0.938796, 2.09651, + -0.967279, -2.06681, -4.58985, 3.24781, -2.63077, 4.56093, 3.17359, -2.34826, 1.58482, + -4.12192, -2.55048, -3.4803, 0.631562, -4.64767, 4.07145, -4.89086, -3.90578, 0.794496, + 3.11944, 0.274388, -0.802882, -0.72629, 2.55014, -2.86997, 4.11855, 1.10845, 0.782459, + -4.91899, 2.37826, -1.77523, -3.23982, -1.69375, -0.837184, 1.1934, -1.10572, -1.22483, + 4.71149, 2.96609, -0.676543, -3.31718, -3.692, -2.9575, -3.52942, 0.411185, -2.41244, + -0.401702, -1.8739, -0.132347, 1.13978, -4.45176, 0.169302, 3.5423, 3.94282, 1.60127, + -4.07808, 2.34236, -0.781839, -2.74102, 4.48042, -4.34059, -1.30121, -0.93276, 1.11985, + -3.90853, -0.286499, -1.01405, -2.77668, 0.288616, -4.16595, -2.3096, -2.44363, 1.24341, + 3.73431, -0.00587227, -4.89328, 4.75827, -4.9217, 3.8995, 2.46474, 3.20115, 1.39757, + 3.46744, 3.32388, -1.17844, 2.83398, -1.88155, -3.75103, -2.30867, -1.46387, 2.3986, + 0.291228, -0.924614, -0.466735, -2.32718, -1.59271, 3.8981, -3.37128, 1.54383, 3.21023, + -4.46146, 3.65466, 2.02678, 4.93931, -4.48006, -4.70468, -0.0110495, -4.34515, 2.66921, + -2.4087, 3.08708, 4.72305, 3.14726, -2.3531, 0.719721, -2.08273, -4.30752, -3.36451, + 0.7731, 0.323962, -2.62083, 0.261967, -3.56867, 2.00299, 0.649599, 1.86126, 1.56565, + 3.74213, 0.474407, -0.946149, -0.476581, -2.64906, -1.82586, -3.98376, -4.55005, 2.38571, + -3.62565, -0.934082, -1.81757, -1.77204, -3.26355, 4.35017, 3.13568, 0.702371, -3.24041, + 0.0219689, 2.41334, -1.23636, 3.9868, 4.02405, -1.44978, 0.281016, 4.02714, -3.745, + -0.925299, 0.628337, 4.63236, -3.27555, 4.35052, 3.93893, -1.18177, 3.12756, 2.48858, + -3.78877, 3.23341, -2.12903, -3.78299, -2.97581, -0.814401, -4.27898, 0.582629, 1.62196, + 2.45058, 1.58468, 3.9512, 4.54651, -0.556351, 2.948, 1.81753, -3.51936, -0.504748, + -3.25792, 3.13386, -0.620701, 4.71377, 3.99684, -3.2282, 3.46386, -2.72125, -1.49549, + -3.83636, -4.7897, 0.78226, 2.3058, -4.82898, -2.61577, -4.87581, 2.31266, 1.67058, + -0.312257, -0.545391, -3.86117, -4.92605, -0.722609, -0.144248, -4.35181, 0.483898, -3.27626, + 0.600822, -0.846488, 1.54249, 4.67917, 0.773491, 0.335107, 0.391722, -1.57747, 3.65133, + -0.816687, -3.66164, 0.3431, -2.17813, -4.99742, -4.13003, -4.34429, 3.15146, 0.477193, + -3.18597, 4.0696, -3.04081, -0.751688, -2.3623, 2.81943, 1.98781, 1.14407, 2.95467, + 0.0443827, -1.67868, -2.85497, -3.04549, 0.0620073, 0.179388, -3.74709, 4.28623, 3.73272, + 2.019, 1.88438, -1.20996, -2.34781, 0.800072, 4.22213, 3.82745, 0.660494, -0.233822, + -3.85401, -1.10944, 1.61249, -2.75312, -0.620572, -2.36705, -4.35225, -4.28065, -0.369473, + -0.675064, 4.98128, -3.40084, -0.158063, -1.81529, 0.0704487, -4.2162, 2.33253, 0.775176, + 4.70129, -0.44329, -0.804775, -4.39479, -0.857478, 0.173731, 2.117, -1.91569, 0.661488, + -3.72608, 3.21041, -0.309079, -1.20312, -1.04395, -3.59398, 0.6059, 2.61891, 4.45666, + -4.75106, 3.21227, 1.7304, -2.32413, 3.76143, 3.02153, -3.54336, -0.34727, 4.84026, + -0.198416, -3.46508, -0.201522, 3.50927, -1.84184, -2.48124, -0.669658, -4.94919, -3.52275, + 1.42435, 3.78537, -3.23707, -4.68775, 2.3794, -4.965, 3.11321, -1.14157, 3.72124, + -1.05859, -0.206402, 0.79939, 4.87222, 0.225406, 4.48362, -2.90358, 1.55703, 1.98258, + 2.35008, 3.94249, 2.61202, -3.53563, 1.82492, -2.68085, -0.527339, 3.24015, 3.29355, + 1.34272, -1.10936, -2.71789, 3.91075, -2.14601, -0.396423, -3.01396, 0.340825, -4.43331, + -4.90419, 3.48833, -3.20166, 2.02417, -1.30311, 1.58947, -3.03143, 3.37555, -1.96399, + 1.02333, -3.52225, -1.53211, 0.12215, -1.34119, -0.846173, -0.635141, 4.67665, -0.405799, + 3.8426, 0.339217, -1.40732, 2.20983, 0.573309, 0.977476, -1.76888, -1.02265, 2.32694, + 0.677431, -4.85236, 3.18685, -2.53947, 1.13715, 4.96326, -0.793396, 1.19392, 2.5294, + 2.75801, -4.3221, 3.15646, -1.48667, -4.94554, -3.23913, 4.02479, -2.08067, 0.183081, + -4.38464, -2.46221, -4.73904, -0.697342, -4.85434, 4.90753, 2.70221, -1.31093, -4.60081, + -3.58929, 3.71782, -1.75827, 0.163215, -3.75722, 1.62284, -1.24612, 1.14538, 2.96385, + -4.10806, -0.186223, 2.97828, -3.48557, 0.912886, -2.47933, -0.141892, 1.38328, -1.35453, + 0.0855794, -0.420718, 2.81809, -1.58504, -3.24831, -3.06183, -1.00012, -3.06554, 1.15852, + -4.66011, -1.68974, 2.15275, -4.81303, -1.0497, 4.24721, 0.752416, -2.9178, 2.80425, + -4.72424, -4.04212, 1.70999, 4.54444, 2.7805, -0.316397, -2.46779, 3.17646, 0.187879, + 1.74938, 3.01256, -3.66057, 2.37244, 2.91338, 2.67634, -2.33103, -1.07969, 1.37713, + -3.45046, 1.41599, -2.58735, 1.66767, 0.978738, -1.99731, -1.185, 4.02593, -3.86151, + 3.34423, 3.45627, -3.98229, 4.22739, -3.05438, -4.33193, 3.05151, 4.80124, 4.1618, + -3.6186, -4.59032, 4.59652, -1.2784, -1.30989, -3.37153, 2.88972, -4.98978, 0.866851, + 2.13723, -1.54307, -2.96314, -0.727502, 1.31068, 0.444759, 1.69446, 2.77479, -1.25197, + -0.59404, -3.28619, -2.14284, 4.55701, -1.99698, -4.1932, 1.98522, 0.330638, 4.14927, + -1.58213, -1.19538, -2.64269, -4.77377, -4.50282, 2.11742, 1.85531, -1.0953, -4.23724, + 0.736428, -3.5851, 1.48482, 0.141458, -1.86905, 3.5453, -2.82172, -3.05134, -3.75254, + 4.95023, -1.05753, 1.91518, -3.26179, 4.54684, -4.10982, -1.89519, 1.14695, 1.47464, + 1.4862, -4.79501, -4.77577, -2.36627, 0.19994, 3.35062, 1.23547, 5}, + std::vector{-5, -4.90212, 2.04852, -4.06222, -2.05556, 1.71858, 4.89697, -3.57399, 3.22732, + -1.36818, -3.74683, -4.60178, 0.196569, 1.58981, -3.29433, -2.98955, 2.02674, 1.8465, + -1.85874, -2.1893, 4.83577, 1.90244, 2.07352, 0.598257, 3.49708, 1.4686, 0.754768, + 1.94554, 3.96111, 0.133566, -3.82646, 4.88763, 0.229708, -2.03485, 3.4875, 1.79253, + -0.38706, -2.65237, 0.100763, -2.15537, 1.71114, 4.87242, -0.449133, 3.7298, -4.50384, + 0.0434988, -4.31846, -4.79365, -2.04677, -4.72319, 1.47757, 1.06105, 3.82314, 3.14707, + 4.1567, 1.89765, 4.28057, 3.15959, 1.97148, 3.77296, 2.90827, 3.08369, 4.84089, + -1.83596, 2.32062, -4.18992, 1.58745, 0.212731, -3.36909, -1.486, 2.07869, -1.65644, + 1.39901, 1.31554, 1.7938, 4.02885, -1.31798, 0.48152, -0.964317, 5}, + std::vector{ + -0.999909, -5.07626e-11, 4.13326e-13, 5.835e-05, -1.30828e-35, 0.761594, -3.42026e-22, + -1.13159e-30, -4.18379e-13, 0.821244, -0.999909, -5.07626e-11, 0.49691, 0.000728936, + 6.90693e-27, 0.963522, -9.60537e-09, -0.997578, -0.0213497, 5.66025e-14, -0.999928, + 2.69134e-08, 4.40231e-06, -6.96162e-19, 0.511536, 0.287868, -0.762594, -0.997594, + -0.9476, 0.76483, -0.999465, 1.57167e-10, 0.49691, -3.00368e-17, -1.50091e-08, + 0.785706, -0.368554, -0.997594, -0.981176, -0.761575, -7.99627e-07, 9.21166e-05, + 0.332835, 4.10511e-31, -9.42096e-13, 0.378887, -0.00455473, 2.21606e-11, -0.997432, + 1.16333e-05, -8.98809e-32, 3.03724e-15, 0.25859, -0.000176827, -0.954949, 2.55493e-17, + -0.983461, 9.09049e-13, -0.980796, 0.784393, -0.000793236, 2.55449e-20, 5.38752e-09, + -9.86419e-35, -1.94761e-19, 1.83397e-12, -0.988398, 3.78249e-10, -0.997432, 0.771463, + -3.52882e-15, 1.21005e-16, 0.000182383, -4.34274e-08, -0.594177, 1.33054e-06, -0.920454, + 0.76128, -0.999382, 0.000389586, -9.19733e-06, 4.3138e-07, 1.41793e-21, -0.761594, + 0.305402, 0.000580937, -0.531783, -1.00171e-05, 5.83801e-30, 0.0243704, -1.23107e-30, + 0.00725055, 0.76182, 1.27929e-05, 1.58846e-07, -0.680477, -5.73051e-15, 6.33457e-20, + 0.000288991, 0.00312473, 0.761596, -0.000445729, 2.03617e-09, 5.11049e-30, 0.964028, + -1.18563e-22, 3.80413e-32, -1.97169e-18, -0.759971, -1.27976e-07, 0.74886, -0.000445729, + 0.805263, -1.49589e-10, 0.641535, -1.41323e-07, 1.47308e-24, -4.77803e-13, -5.96046e-08, + -1.95598e-10, -0.581045, -0.00103914, 0.805263, 1.64052e-14, 0.00323384, 1.15601e-13, + 6.4162e-14, 2.77607e-22, 0.0497418, 5.30151e-18, -0.329421, -2.57703e-06, 0.963854, + -1.01966e-13, -1.18368e-08, 6.02313e-09, 0.114898, 9.46065e-13, 0.761594, 2.13439e-08, + 0.523866, 0.761529, 0.760565, -0.00461076, 0.00150048, -0.00174691, -0.436961, + 5.48788e-11, 2.41781e-14, 2.19602e-08, -6.14432e-17, 8.04105e-14, -3.89646e-18, -0.00379894, + 3.63214e-16, -0.616305, 0.964023, 5.81763e-07, 1.09818e-06, 2.19604e-08, -0.87856, + -0.354106, -0.715297, -1.65026e-20, 6.05625e-17, 2.48927e-05, 1.96127e-05, 1.41168e-23, + 5.4023e-07, 0.761544, -3.06545e-19, -7.18136e-08, -1.8746e-07, -1.47835e-07, 1.34948e-07, + 0.761594, 0.999987, 3.23361e-26, 1.28856e-06, 0.761618, -0.892197, 1.36596e-19, + 6.65404e-09, -2.64782e-09, 0.766419, -0.998266, 0.000204802, 1.00874e-08, -4.23892e-11, + 2.38972e-09, -0.901095, 0.00314948, 0.156432, -3.46747e-21, 0.766474, -4.19696e-07, + 0.00359662, 0.985378, 1.26476e-26, 1.36917e-06, -8.30729e-05, 1.09966e-09, 3.39125e-24, + -2.54402e-09, -0.0224086, 0.999078, -8.56764e-17, 2.17593e-09, -5.3338e-18, -2.09897e-25, + -0.731555, 1.0058e-09, 1.80811e-06, -7.35442e-08, 5.03322e-18, 0.99907, 5.06163e-08, + 0.998803, -3.31849e-14, -0.314541, 6.56072e-06, 2.3231e-05, -0.734035, -0.801636, + 0.761566, 1.44226e-12, -0.521044, 0.998576, 2.04797e-08, -0.999782, 8.46822e-16, + 0.236769, -1.06652e-14, -0.000473771, 0.964, 1.61872e-15, -0.918253, -6.50992e-10, + 1.19996e-09, -0.976642, -1.74187e-06, 2.59573e-19, -2.2928e-13, -8.87904e-17, 0.148158, + 4.75517e-15, -0.98799, -6.50965e-10, -0.761594, 0.760215, 0.000518275, 0.434619, + -0.0692393, -0.761594, 0.274058, 6.53858e-08, -0.998366, -3.22841e-06, 1.72996e-06, + 0.963795, -0.735883, -1.68637e-22, 0.00299617, -2.95948e-14, -0.754872, 0.964028, + -0.832263, 2.96769e-05, -1.3113e-06, 0.761594, 1.00882e-20, -0.700681, 0.251888, + -1.44631e-16, -5.78152e-16, 0.964028, -3.13362e-09, 2.38789e-16, -1.29541e-06, -4.12287e-11, + 3.57653e-37, -0.953416, -0.00116461, 4.51481e-11, 0.000654999, -9.88477e-13, -8.25559e-09, + 3.24498e-11, 0.631349, -2.22783e-15, 0.00463415, -0.218827, -3.33063e-20, 2.62387e-15, + 0.000655749, -0.761594, -9.3791e-19, 3.55914e-07, 1.21115e-10, 8.51853e-05, 0.746421, + -0.203347, 0.964016, -0.675211, -0.757478, 4.1336e-13, 1.31125e-14, -0.752869, + -3.40686e-11, -9.04177e-20, 0.761593, -0.203337, 0.761593, 4.32757e-13, 0.761594, + 1.12104e-12, 1.10405e-22, 2.21747e-11, -0.761594, -0.000232199, -7.34674e-20, -0.761592, + 1.12101e-05, 0.96248, 1.05897e-15, -0.961035, 0.995049, 0.714666, -0.11871, + 0.252246, -3.96402e-21, -0.116561, -2.34864e-11, 1.73253e-05, 6.71033e-11, -0.761585, + 0.964016, 5.67781e-08, -0.00572334, 0.76158, -0.520498, 5.11946e-09, -1.68016e-05, + 7.55615e-09, 0.959448, -2.85015e-19, 0.753059, 4.49821e-06, 1.60358e-10, 3.66218e-21, + -2.05996e-14, 9.10536e-05, 0.443528, 0.000286103, 1.1389e-16, -0.332143, 0.000106997, + 1.66753e-09, -0.761594, 7.13778e-13, -0.71679, -0.761576, 0.754419, 0.000282388, + -0.762039, 9.84022e-09, -0.0872869, 7.7548e-11, 6.80808e-09, 2.60995e-08, 4.78222e-09, + -0.501957, 0.762282, -0.753946, -1.47174e-09, -0.964027, -0.7082, -0.963465, + -9.54667e-13, 3.02122e-08, 7.1591e-12, 6.3354e-14, 2.94622e-22, -0.940787, -6.09716e-15, + -2.65188e-14, -0.0115473, -0.758209, 6.95914e-17, 0.760974, 0.140932, 4.35034e-05, + 0.760892, -0.632027, -0.76149, 2.15703e-11, 0.777049, -0.00238567, 5.3589e-28, + 0.760506, -8.19313e-13, -0.99918, -1.76353e-09, -3.25938e-08, 3.69808e-14, 5.13777e-15, + -0.992067, 3.2008e-13, -4.27895e-35, -0.00033198, -2.22583e-14, 2.33933e-18, -1.83076e-06, + -2.05328e-23, 0.335589, 6.74499e-20, -0.993734, 3.25956e-15, -0.76157, 0.761592, + -1.39733e-26, 3.51873e-08, -0.000449794, 0.753596, 6.14397e-06, -0.0399566, 6.81031e-16, + -1.4436e-16, 6.54251e-37, 6.25711e-16, -0.751923, 1.76327e-06, -0.759611, -5.82387e-22, + -3.55939e-10, 2.0026e-05, 1.42291e-08, 0.00127849, -0.761586, 0.920489, -0.0123201, + 1.49775e-11, -0.759593, 0.760956, -1.59088e-19, 1.89399e-06, 1.41353e-17, -3.71678e-07, + -7.58637e-09, 4.56301e-13, -0.76173, 6.38001e-12, -3.26879e-12, 2.54147e-19, 0.00349909, + 1.94641e-15, 0.000533218, -0.680174, -0.798763, -0.749397, -1.51134e-16, 0.76157, + -0.758462, 0.212695, 2.33021e-17, 1.62019e-15, -5.34576e-05, -2.0166e-15, -0.0958154, + -3.4894e-05, 1.54693e-09, 0.761228, -0.045171, -0.654946, 0.658682, 0.000900979, + -0.0121633, -9.55765e-07, -5.83339e-07, -0.697058, 3.12132e-18, 0.599694, -2.41771e-11, + 0.128772, 0.0345568, 0.0222523, -3.01504e-23, -1.42109e-23, 1.32333e-13, 5.34001e-15, + -6.2253e-22, 8.88893e-22, 0.000599919, -6.13229e-19, 9.45362e-05, 1.03827e-16, -0.00543732, + -9.86013e-09, -0.761408, 0.214137, -8.00209e-24, 0.679937, 0.917833, -1.34199e-10, + 1.89431e-07, -0.761594, -0.0442637, -0.000217974, 0.00476938, 0.0246565, -5.376e-08, + 0.784315, 0.00101343, 0.0946926, 0.980865, -0.761594, -0.707944, -4.73592e-12, + 4.01193e-13, 1.73187e-07, 0.000424088, 2.85811e-08, 3.59465e-08, -0.472002, 0.867616, + -0.757693, -2.0641e-10, -0.994265, -9.17776e-06, 5.91256e-15, 0.963968, 0.31226, + 0.0461947, 1.10725e-08, 2.92814e-07, -5.24128e-08, -0.00704819, -7.04583e-10, -0.000118595, + -0.760989, 0.761239, 0.312348, 0.0461707, -4.89262e-06, 0.762134, 0.0216284, + 4.89744e-20, -0.705499, -0.0105222, -2.47122e-06, -0.0353277, -0.529026, 0.0371158, + 0.0910813, 0.964028, 0.761582, 0.0233926, -2.56495e-19, 2.55893e-06, -4.6058e-09, + 0.0361859, 0.947518, 0.645797, -1.36319e-07, 1.11416e-06, -0.000967128, 1.71085e-06, + -3.83432e-05, -4.46048e-12, 1.68634e-09, 3.07729e-10, 0.0198492, 0.055882, -1.79771e-09, + -2.43386e-18, -0.228931, 0.760035, -0.761594, -0.393895, 0.761594, 0.761594, + 0.0695398, -2.10839e-05, -0.761593, -0.761593, -7.67992e-12, -0.000156758, -0.761546, + -7.03448e-14, -1.32276e-19, -9.58347e-39, 4.26105e-18, -5.41441e-05, 4.03958e-17, 4.40911e-16, + -0.747015, -0.879764, 2.22597e-08, -0.0910139, 0.999823, 0.999852, -0.946979, + 4.04764e-10, 1.04581e-21, 1.30145e-14, 9.21577e-17, -0.000708233, 0.761594, 3.99524e-13, + 9.18395e-17, 8.95967e-25, 6.11501e-20, 0.00901172, -2.49613e-41, -1.17426e-18, 3.85668e-09, + -0.0678945, 7.0955e-16, -0.761593, 0.792416, 0.999844, 0.441572, 0.00697713, + 5.52616e-05, 2.76337e-24, 0.0128815, -8.97325e-09, 0.0575689, -9.19902e-17, 0.79131, + 0.90745, 0.442877, 1.65895e-09, -9.49956e-12, -0.761592, 0.759226, -0.788664, + 0.428198, 4.22296e-08, 0.960446, -3.30814e-05, -7.32391e-11, -0.761195, 0.761591, + -0.11482, 0.00328929, -0.751446, -0.0329113, -2.38419e-07, -0.742049, -0.761814, + 2.28806e-08, 9.20868e-10, 7.83398e-05, 0.163255, 0.693679, 0.0233387, -0.0002779, + -0.00744079, 0.761594, -1.92574e-35, -6.19079e-15, 0.841117, 3.61402e-15, 7.29652e-05, + -3.43512e-15, 2.44003e-10, 5.02575e-21, -0.575338, 0.760067, -7.58183e-07, -0.411779, + 0.937771, -5.07946e-26, -0.0015457, 0.625772, -0.128913, 7.19112e-12, -0.483728, + 5.19518e-07, 2.4981e-17, -2.77282e-10, -6.1325e-23, 4.02951e-22, -0.55648, 0.627102, + -6.88607e-19, 9.6838e-17, -0.0142015, 1.0327e-05, -0.761481, 3.44292e-08, -0.644774, + 5.99614e-06, -2.4661e-12, 0.939834, -0.732183, 0.758408, -0.406918, 0.761563, + 0.624331, 0.959323, -0.757392, 0.00112301, 0.0215218, -7.76243e-10, -6.42156e-20, + -3.81184e-11, 2.64018e-18, -0.00122851, -9.04986e-17, 0.959198, -0.180509, 8.1107e-09, + 4.4799e-16, -0.761594, 0.761594, -3.2702e-11, 6.12426e-16, -7.52802e-11, 0.727842, + 0.736519, 0.00697721, 0.00189766, 0.65557, -8.23888e-06, 1.19768e-19, -0.628732, + 4.50315e-07, -0.596042, -0.130076, -0.0570775, -0.758032, -0.720559, 0.329393, + -0.000139915, -7.64476e-11, -1.93167e-30, 8.91504e-10, -5.52299e-08, -0.00538237, -1.59122e-08, + -4.0649e-14, -0.747447, 0.871613, 4.90251e-14, 0.760524, 0.623387, 0.761594, + -0.963604, -0.761594, -0.760084, 0.76159, -0.726583, 0.783823, 2.00219e-05, + 1.12777e-06, 1.49013e-16, 0.761591, -0.625537, 2.84003e-10, 4.32528e-16, 2.39073e-07, + -6.75822e-06, 2.44769e-23, -1.39062e-07, 0.768824, -0.000734329, -1.18028e-08, -9.31533e-16, + 1.32778e-09, -5.24861e-07, 0.7686, 1.34084e-06, -0.0222266, -0.775352, 0.000264648, + -2.44784e-27, -8.62503e-05, -0.523765, 8.05469e-07, -8.00327e-17, 1.0076e-08, 0.655086, + 1.12223e-07, -2.45992e-13, 0.761594, -0.000735076, -3.16667e-21, -1.0616e-12, 0.999911, + 6.67684e-10, -0.386663, 9.55342e-24, 0.000750192, -3.04876e-14, 1.69092e-13, 2.57222e-30, + -0.886215, -8.85092e-18, -0.999066, -0.992009, -9.64733e-07, 0.999793, 0.999959, + -4.526e-09, -0.993717, 6.25306e-09, 1.5415e-21, 0.761594, -5.23755e-08, -0.827688, + -0, 5.99811e-22, 0.999958, -0.580146, -6.79704e-17, 1.83394e-07, 1.31284e-13, + 3.62265e-10, 0.35334, -0.00903121, -0.991192, 7.53642e-07, -0.00913154, -1.29673e-06, + -1.76794e-11, 1.83017e-07, -0.000150782, 0.761551, -0.739773, -0.268164, -0.991253, + 0.761593, -8.46913e-07, 4.02483e-07, -0.0547462, -0.0433184, -0.0128592, -0.000826936, + 3.57959e-13, -0.073303, 2.14562e-10, 7.38332e-11, 0.00409962, 0.724394, -1.16275e-22, + 1.63268e-25, -1.47741e-05, 3.33773e-08, -7.77931e-12, 2.71497e-08, 3.42017e-05, 0.761594, + -2.43217e-13, -6.87127e-23, -0.761548, 7.04828e-08, -0.761307, 1.3015e-07, -0.00537324, + 1.27446e-16, 0.763627, 4.22074e-15, -8.45132e-18, 0.00159667, 0.756707, 0.129373, + -0.964029, 0.761554, 3.34318e-14, 3.74157e-15, 0.763626, 4.1317e-22, -0.734039, + 4.81716e-07, 0.753698, 0.758801, -0.995055, -0.76151, 1.11652e-10, 1.10396e-07, + 0.761582, 0.761191, -0.949494, 4.12621e-08, -0.0185743, -5.64389e-13, 1.35275e-28, + -0.761587, -2.38573e-16, -3.53137e-05, -0.438905, 0.0134316, 4.40739e-11, -3.01366e-05, + -1.38874e-32, -3.77945e-21, 0.0780586, 1.6805e-13, 0.751234, -0.803057, 0.811984, + 7.895e-05, 0.761593, -0.00119532, -5.48256e-06, 0.757714, 0.761594, -0.761511, + -1.92404e-24, -1.41394e-08, 0.983753, 4.33593e-18, 6.11314e-09, -0.000849993, -0.96402, + -3.8176e-18, -1.24685e-14, 8.03048e-05, 0.994964, 0.130676, 0.922726, 1.28861e-07, + 0.761594, -6.48442e-30, -0.761584, 0.761594, -3.41314e-14, -1.08584e-06, 0.963591, + 0.130676, 0.542119, -0.725731, 0.761583, -1.63707e-11, 2.25863e-17, 0.766755, + -0.761594, -9.47899e-06, 0.760034, 0.0996578, 0.757886, -0.761808, -0.000816665, + -0.000733465, 0.761594, 0.670761, -4.79781e-25, -3.77769e-09, -0.071795, -2.09178e-29, + -2.96662e-22, -5.45929e-22, 4.72562e-14, 2.23143e-12, 2.66405e-05, 0.948048, -5.47349e-07, + 0.761064, -0.071795, -1.62295e-13, -2.48377e-11, 0.000322916, 1.0934e-18, 0.745943, + 0.000203257, 2.9748e-09, 2.94779e-09, 0.000904395, -1.33357e-12, -0.761594, 4.154e-08, + 0.761365, -1.23576e-05, -0.118402, 0.758765, 8.3947e-11, 0.757683, 0.00091744, + 6.04679e-13, -8.36692e-05, -7.73738e-13, -0.964028, -2.87151e-05, -0.964027, -0.761415, + 2.8511e-12, 0.982895, 0.000913338, 0.761594, -5.61929e-05, -4.03471e-09, -9.05792e-10, + -2.44896e-14, -0.761593, -1.53072e-14, 4.80451e-06, 4.97845e-05, 2.61901e-17}, + std::vector{ + -1.23107e-30, 0.00725055, 0.76182, 1.27929e-05, 1.58846e-07, -0.680477, -5.73051e-15, + 6.33457e-20, 0.000288991, 0.00312473, 0.761596, -0.000445729, 2.03617e-09, 5.11049e-30, + 0.964028, -1.18563e-22, 3.80413e-32, -1.97169e-18, -0.759971, -1.27976e-07, 0.00463415, + -0.218827, -3.33063e-20, 2.62387e-15, 0.000655749, -0.761594, -9.3791e-19, 3.55914e-07, + 1.21115e-10, 8.51853e-05, 0.746421, -0.203347, 0.964016, -0.675211, -0.757478, + 4.1336e-13, 1.31125e-14, -0.752869, -3.40686e-11, -9.04177e-20, -6.2253e-22, 8.88893e-22, + 0.000599919, -6.13229e-19, 9.45362e-05, 1.03827e-16, -0.00543732, -9.86013e-09, -0.761408, + 0.214137, -8.00209e-24, 0.679937, 0.917833, -1.34199e-10, 1.89431e-07, -0.761594, + -0.0442637, -0.000217974, 0.00476938, 0.0246565, -0.761481, 3.44292e-08, -0.644774, + 5.99614e-06, -2.4661e-12, 0.939834, -0.732183, 0.758408, -0.406918, 0.761563, + 0.624331, 0.959323, -0.757392, 0.00112301, 0.0215218, -7.76243e-10, -6.42156e-20, + -3.81184e-11, 2.64018e-18, -0.00122851, -2.38573e-16, -3.53137e-05, -0.438905, 0.0134316, + 4.40739e-11, -3.01366e-05, -1.38874e-32, -3.77945e-21, 0.0780586, 1.6805e-13, 0.751234, + -0.803057, 0.811984, 7.895e-05, 0.761593, -0.00119532, -5.48256e-06, 0.757714, + 0.761594, -0.761511}, + std::vector{-1.14805e-14, + 0.00725081, + 1.00065, + 1.27929e-05, + 1.29939, + -0.999801, + -5.73051e-15, + 3.93105e-11, + 1.9999, + 0.0243762, + 1, + -0.000445729, + 2.03617e-09, + 5.11049e-30, + 2, + -1.67708e-22, + 1, + -0.0034493, + -1, + -0.591546, + 0.00463418, + -2.86822, + -0.230709, + 0.0172415, + 0.000655749, + -1, + -3.072e-06, + 0.746059, + 7.45091e-09, + 8.51853e-05, + 0.965889, + -0.206222, + 1.99984, + -0.999999, + -0.990272, + 1.11695e-12, + 0.0222863, + -0.979547, + -2, + -1.01401, + -0.999991, + 0.976968, + 1, + -3.63016e-07, + 0.0208492, + 3.42118e-07, + -0.00543741, + -9.86013e-09, + -0.999558, + 0.219696, + -1.00056, + 0.828996, + 1.99999, + -2.98023e-07, + 1.61781e-05, + -1, + -0.044346, + -1.00563, + 0.099386, + 0.0246731, + -0.999731, + 3.44351e-08, + -0.766302, + 5.99614e-06, + -0.087751, + 1.73662, + -0.999998, + 1, + -0.431925, + 0.999926, + 0.732687, + 1.93734, + -0.99007, + 1.41437, + 0.0215275, + -7.76243e-10, + -1.4114e-06, + -1.2676, + 9.7866e-11, + -0.999843, + -0.0294529, + -3.65437e-05, + -0.470874, + 0.998836, + 1.19728e-05, + -3.01366e-05, + -1.90968e-25, + -2.75275e-07, + 0.0782207, + 0.000366083, + 0.975781, + -1.10725, + 1.13283, + 7.895e-05, + 1, + -0.00119563, + -0.99991, + 0.990824, + 1, + -1}), }; return params; } @@ -1096,740 +1299,704 @@ template std::vector generateParamsBF16() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ LSTMSequenceParams( - 5, 10, 10, 10, - 0.7f, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{ + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, std::vector{ 0.523438, 0.667969, 0.667969, 0.667969, 0.667969, 0.523438, 0.632812, 0.664062, 0.667969, 0.640625, - 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, + 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, 0.546875, 0.648438, 0.667969, 0.664062, 0.667969, 0.546875, 0.601562, 0.640625, 0.667969, 0.609375, - 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, - 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, - 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, - 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, - 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, - 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, - 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, + 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, + 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, + 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, + 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, + 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, + 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, + 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, + 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, + 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, 0.632812, 0.585938, 0.648438, 0.617188, 0.648438, 0.648438, 0.664062, 0.648438, 0.667969, 0.65625, - 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, + 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, 0.601562, 0.570312, 0.617188, 0.585938, 0.617188, 0.617188, 0.640625, 0.617188, 0.648438, 0.632812, - 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, - 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, - 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, - 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, - 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, - 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, - 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, - 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, - 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, - 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, - 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, + 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, + 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, + 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, + 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, + 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, + 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, + 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, + 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, + 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, + 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, + 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, + 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, + 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, 0.585938, 0.570312, 0.570312, 0.585938, 0.578125, 0.570312, 0.578125, 0.585938, 0.570312, 0.554688, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, + 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.632812, 0.667969, 0.648438, 0.664062, 0.667969, 0.667969, 0.664062, 0.664062, 0.664062, 0.664062, 0.617188, 0.667969, 0.632812, - 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, - 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, - 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, - 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, - 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, - 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, - 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, + 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, + 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, + 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, + 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, + 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, + 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, + 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, + 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.617188, 0.667969, 0.667969, 0.667969, - 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, - 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, - 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, - 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, - 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, - 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, - 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, - 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, - 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, + 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, + 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, + 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, + 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, + 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, + 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, + 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, + 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, - 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, - 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, - 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, - 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), + std::vector{0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, + 0.5625, 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, + 0.585938, 0.570312, 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, + 0.578125, 0.5625, 0.554688, 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, + 0.570312, 0.5625, 0.585938, 0.5625, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, + 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, + std::vector{1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, + 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, + 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, + 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, + 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), LSTMSequenceParams( - 5, 10, 10, 10, - 0.7f, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, - 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, - 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, - 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, - 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, - 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{ + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, + std::vector{ + 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, + 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, + 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, + 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, + 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, + 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, + 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, 0.546875, 0.648438, 0.667969, 0.664062, 0.667969, 0.546875, 0.601562, 0.640625, 0.667969, 0.609375, - 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, + 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, 0.523438, 0.667969, 0.667969, 0.667969, 0.667969, 0.523438, 0.632812, 0.664062, 0.667969, 0.640625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, - 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, - 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, - 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, + 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, + 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, + 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, + 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, + 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, 0.601562, 0.570312, 0.617188, 0.585938, 0.617188, 0.617188, 0.640625, 0.617188, 0.648438, 0.632812, - 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, + 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, 0.632812, 0.585938, 0.648438, 0.617188, 0.648438, 0.648438, 0.664062, 0.648438, 0.667969, 0.65625, - 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, - 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, + 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, + 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, + 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, 0.585938, 0.570312, 0.570312, 0.585938, 0.578125, 0.570312, 0.578125, 0.585938, 0.570312, 0.554688, - 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, - 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, - 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, - 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, - 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, - 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, - 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, - 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, - 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, - 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, - 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, - 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, - 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, - 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, - 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, + 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, + 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, + 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, + 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, + 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, + 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, + 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, + 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, + 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, + 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, + 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, + 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, + 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, + 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, + 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, + 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, 0.664062, 0.667969, 0.667969, 0.664062, 0.664062, 0.664062, 0.664062, 0.617188, 0.667969, 0.632812, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.632812, 0.667969, 0.648438, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938, - 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, - 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, - 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, - 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, - 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, - 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, - 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, - 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, + 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, + 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, + 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, + 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, + 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, + 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, + 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, + 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.617188, 0.667969, 0.667969, 0.667969}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, - 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, - 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, - 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, - 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, - 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), + std::vector{0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, + 0.5625, 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, + 0.585938, 0.570312, 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, + 0.578125, 0.5625, 0.554688, 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, + 0.570312, 0.5625, 0.585938, 0.5625, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, + 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, + std::vector{1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, + 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, + 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, + 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, + 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), LSTMSequenceParams( - 5, 10, 10, 5, - 0.7f, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.7f, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, - 5.78125, 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, - 2.39062, 7.71875, 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, - 8.25, 6.90625, 6.625, 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, - 1.45312, 6.78125, 8.25, 7.4375, 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, - 2.15625, 7.5625, 8.5, 9.9375, 3.85938, 7.0625, 7.625, 8.125, 6.375, 2.53125, - 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, 8.375, 1.21875, 9.125, 5.4375, - 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, 9, 8.25, 7.5625, - 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, 5.375, 2.96875, - 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, 2.59375, - 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, - 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, - 1.125, 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, - 1.90625, 7.1875, 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, - 9.375, 9, 4.6875, 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, - 1.74219, 3.03125, 9.0625, 3.20312, 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, - 7.75, 9.5, 6.90625, 5.8125, 4.25, 3.26562, 4.375, 7.5, 6.84375, 4.3125, - 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, 8.25, 6.84375, 1.58594, 3.8125, - 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, 9.5, 3.3125, 1.96875, - 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, 7.84375, 1.38281, - 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, 2.28125, - 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, - 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, - 5.15625, 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, - 9.9375, 9.3125, 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 10}, - std::vector{ - -1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, - 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, - 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, - 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, - 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 9.25, - 9.6875, 2.34375, 3.3125, 9.625, 7.8125, 4.34375, 2.71875, 7.4375, 3.53125, 1.9375, - 7.9375, 8.875, 1.07031, 6.25, 4.1875, 7.125, 3.09375, 9, 4.4375, 2.60938, - 1.98438, 2.76562, 4.65625, 5.125, 4.625, 8.375, 7.9375, 6.6875, 8.5625, 6.8125, - 4.53125, 5.09375, 5.1875, 6.0625, 1.9375, 7, 2.71875, 6.8125, 7.0625, 1.42188, - 5.25, 3.34375, 8.1875, 1.07812, 3.21875, 8.6875, 7.6875, 1.27344, 7.0625, 10}, - std::vector{ - 1, 9.6875, 3.3125, 3.09375, 6, 9.5, 7.375, 2.5625, 5.3125, 7.625, - 9.875, 1.01562, 5.9375, 4, 4.25, 2.4375, 3.25, 6.5625, 6.53125, 5.71875, - 3.26562, 7.875, 6.6875, 1.10938, 9.875, 9.875, 1.11719, 7.75, 7.84375, 6.75, - 2.21875, 6, 10, 9.125, 8, 1.92188, 8.25, 9.1875, 6.625, 5.96875, - 2.28125, 8.0625, 6.5625, 3.84375, 9.125, 7.0625, 1.45312, 1.34375, 2.46875, 4.59375, - 8.9375, 8.5, 4.875, 2.4375, 9.625, 4.15625, 2.9375, 9.875, 2.90625, 1.25, - 9, 5.53125, 7.65625, 4.03125, 3.3125, 3.46875, 3.92188, 8.125, 6.78125, 9.5, - 9.875, 5.6875, 6.4375, 5.0625, 5.75, 6.8125, 4.875, 2.65625, 5.21875, 3.9375, - 3.4375, 4.5, 1.98438, 5.71875, 3.75, 7.5625, 1.11719, 2.29688, 6.75, 6.8125, - 1.0625, 6.78125, 3.65625, 6.4375, 7.3125, 5.625, 1.35156, 8.4375, 4.125, 10}, + 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, 5.78125, + 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, 2.39062, 7.71875, + 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, 8.25, 6.90625, 6.625, + 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, 1.45312, 6.78125, 8.25, 7.4375, + 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, 2.15625, 7.5625, 8.5, 9.9375, 3.85938, + 7.0625, 7.625, 8.125, 6.375, 2.53125, 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, + 8.375, 1.21875, 9.125, 5.4375, 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, + 9, 8.25, 7.5625, 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, + 5.375, 2.96875, 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, + 2.59375, 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, + 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, 1.125, + 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, 1.90625, 7.1875, + 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, 9.375, 9, 4.6875, + 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, 1.74219, 3.03125, 9.0625, 3.20312, + 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, 7.75, 9.5, 6.90625, 5.8125, 4.25, + 3.26562, 4.375, 7.5, 6.84375, 4.3125, 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, + 8.25, 6.84375, 1.58594, 3.8125, 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, + 9.5, 3.3125, 1.96875, 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, + 7.84375, 1.38281, 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, + 2.28125, 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, + 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, 5.15625, + 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, 9.9375, 9.3125, + 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 10}, + std::vector{-1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, + 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, + 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, + 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, + 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 9.25, + 9.6875, 2.34375, 3.3125, 9.625, 7.8125, 4.34375, 2.71875, 7.4375, 3.53125, 1.9375, + 7.9375, 8.875, 1.07031, 6.25, 4.1875, 7.125, 3.09375, 9, 4.4375, 2.60938, + 1.98438, 2.76562, 4.65625, 5.125, 4.625, 8.375, 7.9375, 6.6875, 8.5625, 6.8125, + 4.53125, 5.09375, 5.1875, 6.0625, 1.9375, 7, 2.71875, 6.8125, 7.0625, 1.42188, + 5.25, 3.34375, 8.1875, 1.07812, 3.21875, 8.6875, 7.6875, 1.27344, 7.0625, 10}, + std::vector{1, 9.6875, 3.3125, 3.09375, 6, 9.5, 7.375, 2.5625, 5.3125, 7.625, + 9.875, 1.01562, 5.9375, 4, 4.25, 2.4375, 3.25, 6.5625, 6.53125, 5.71875, + 3.26562, 7.875, 6.6875, 1.10938, 9.875, 9.875, 1.11719, 7.75, 7.84375, 6.75, + 2.21875, 6, 10, 9.125, 8, 1.92188, 8.25, 9.1875, 6.625, 5.96875, + 2.28125, 8.0625, 6.5625, 3.84375, 9.125, 7.0625, 1.45312, 1.34375, 2.46875, 4.59375, + 8.9375, 8.5, 4.875, 2.4375, 9.625, 4.15625, 2.9375, 9.875, 2.90625, 1.25, + 9, 5.53125, 7.65625, 4.03125, 3.3125, 3.46875, 3.92188, 8.125, 6.78125, 9.5, + 9.875, 5.6875, 6.4375, 5.0625, 5.75, 6.8125, 4.875, 2.65625, 5.21875, 3.9375, + 3.4375, 4.5, 1.98438, 5.71875, 3.75, 7.5625, 1.11719, 2.29688, 6.75, 6.8125, + 1.0625, 6.78125, 3.65625, 6.4375, 7.3125, 5.625, 1.35156, 8.4375, 4.125, 10}, std::vector{5, 5, 5, 5, 5}, std::vector{ - 1, 6.9375, 6.75, 6.1875, 2.4375, 3.67188, 6.9375, 3.57812, 4.25, 1.53906, - 4.8125, 9, 6.1875, 7.3125, 9.5, 5.53125, 9.6875, 4.84375, 4.65625, 7.84375, - 3.03125, 6.1875, 8.625, 9.875, 9.5, 9.0625, 8.125, 9.875, 4.875, 2.79688, - 9.5, 4.4375, 1.55469, 2.78125, 8.75, 8.5, 2.34375, 2.90625, 6.25, 2.71875, - 5.25, 6.875, 8, 7.375, 8.9375, 1.875, 3.0625, 5.75, 7.375, 7.75, - 1.125, 6.75, 6.75, 3, 6.65625, 5.125, 3.84375, 6.625, 9.125, 3.92188, - 7, 4.3125, 9.625, 5.53125, 7.6875, 1.85156, 7.03125, 7.375, 3.5, 5.9375, - 9.125, 2.0625, 6.5625, 7.375, 3.4375, 3.17188, 1.25, 9, 2.75, 3.40625, - 5.9375, 5.53125, 3.3125, 6.625, 8.25, 6.84375, 2.82812, 1.27344, 8.625, 5.1875, - 1.79688, 1.97656, 2.125, 9.875, 2.73438, 2.40625, 6.625, 2.76562, 3.76562, 5.59375, - 7.1875, 6.40625, 8.5625, 6.21875, 6.46875, 8.0625, 7.6875, 2.1875, 9.0625, 6.3125, - 9.0625, 2.90625, 2.17188, 7.4375, 3.125, 1.40625, 8.25, 7.0625, 8.375, 4.6875, - 5.125, 1.875, 8.375, 3.4375, 9.6875, 9.3125, 7.5, 8.3125, 4.5, 7.5625, - 1.92188, 1.46094, 8.75, 3.34375, 7.9375, 6, 8.5, 1.23438, 2.75, 7.25, - 7.4375, 4.09375, 8.625, 6.34375, 5.5, 6.3125, 1.23438, 7.875, 8.25, 7.25, - 7.65625, 8.25, 9.25, 9.625, 4.3125, 9.125, 3.64062, 6.4375, 5.9375, 9.125, - 6.1875, 6.625, 3, 1.65625, 5.75, 6.1875, 4.71875, 8.125, 6.25, 2.5, - 3.40625, 3.20312, 9.1875, 9.8125, 8.125, 4.125, 1.08594, 4.78125, 9.5625, 5.0625, - 5.625, 3.5, 8.25, 1.73438, 3.5625, 8.0625, 2.23438, 3.0625, 3.34375, 3.40625, - 3.625, 9.75, 1.14062, 4.84375, 9.125, 5.5, 8, 9.5, 5.125, 7.25, - 9.4375, 2.0625, 5.90625, 9.75, 6.1875, 6, 7.3125, 7.3125, 7.34375, 7.5625, - 6.1875, 9.125, 7.28125, 7.75, 4.59375, 7.5, 7.71875, 9.75, 9.5, 9.9375, - 5.90625, 1.20312, 1.75, 7.75, 8.8125, 3.5625, 8.5, 9.25, 8.375, 7.84375, - 4.9375, 7.4375, 6.75, 1.46875, 3.53125, 7.15625, 6.0625, 3.8125, 5.34375, 1.60938, - 9.6875, 8.4375, 4.65625, 5.46875, 3.65625, 5.125, 9.125, 1.23438, 6.875, 1.79688, - 4.1875, 2.26562, 2.78125, 9.25, 3.28125, 6.5625, 7.3125, 8.1875, 8.9375, 4, - 8.625, 5.3125, 9.875, 4.375, 4.09375, 1.125, 2.84375, 8.375, 7.90625, 4.75, - 4.625, 4.75, 3.17188, 7.59375, 4.5, 2.46875, 4.03125, 3.26562, 2.5, 7.28125, - 6.3125, 7.6875, 1.00781, 1.3125, 7.625, 4.375, 2.0625, 4.1875, 7.625, 4.40625, - 3.6875, 8.75, 4.09375, 2.84375, 5.21875, 3.65625, 9.5625, 1.71875, 5.9375, 1.79688, - 5.8125, 5.625, 1.46875, 1.32812, 1.95312, 4.3125, 1.41406, 3.125, 9.1875, 6.3125, - 5.3125, 4.1875, 1.17969, 1.32031, 9.5, 9.875, 6.78125, 2.32812, 7.1875, 4.3125, - 7.90625, 4.6875, 7.875, 3.59375, 4.6875, 1.3125, 1.71094, 3.98438, 8.75, 8.625, - 2.21875, 9.5, 7.1875, 3.92188, 5.6875, 5.75, 8.75, 6.625, 1.34375, 1.99219, - 8.3125, 1.73438, 5.5625, 7.84375, 1.15625, 2.125, 4.5, 5.75, 7, 3.5, - 7.375, 4.1875, 5.3125, 7.0625, 3.8125, 1.85156, 9, 6.75, 4.3125, 9.9375, - 8.125, 8.75, 1.09375, 9.875, 6.46875, 2.32812, 3.84375, 8.75, 6.6875, 3.17188, - 4.75, 5.25, 5.875, 4.625, 5.59375, 7.25, 8.625, 2.84375, 7, 4.0625, - 6.5, 3.15625, 6.5, 4.65625, 7.8125, 2.6875, 5.6875, 4, 5.9375, 5.53125, - 6.96875, 5.78125, 9.125, 6.53125, 8.125, 2.90625, 5.625, 5.125, 7.4375, 3.78125, - 5.5, 8, 9.4375, 8.75, 6.75, 5.59375, 8.375, 2.4375, 1.27344, 4.90625, - 8.875, 9.5, 5.21875, 6.9375, 9, 3.0625, 3.25, 2.39062, 1.92188, 2.54688, - 3.73438, 7.28125, 4.5, 5.09375, 7.5, 2.14062, 1.10938, 2.32812, 3.875, 4.8125, - 1.95312, 1.98438, 6.34375, 4.8125, 6.84375, 5.3125, 9.1875, 8.3125, 6.5, 7.125, - 2.59375, 4.0625, 1.27344, 5.09375, 5.75, 1.48438, 6.1875, 5.1875, 9.9375, 8.3125, - 2.14062, 5.21875, 5.0625, 1.94531, 6.6875, 7.75, 8.625, 6.3125, 5.8125, 8.75, - 6.375, 8.875, 1.16406, 6.125, 1, 3.71875, 3.1875, 6.96875, 1.14062, 6.09375, - 8.75, 1.5, 5.25, 5.1875, 1.48438, 2.96875, 2.03125, 4.40625, 9.625, 4.125, - 5, 2.45312, 9.25, 5.875, 5.9375, 4.6875, 8.25, 5.3125, 1.73438, 7.4375, - 4.625, 7.6875, 3.4375, 6.53125, 2.64062, 8.75, 2.57812, 7.8125, 4.4375, 6.0625, - 4.5, 9.125, 7.96875, 2.65625, 8.125, 8.8125, 5.25, 5.65625, 4.84375, 7.96875, - 3.09375, 2.3125, 7.34375, 8.5, 6.25, 2.79688, 7.8125, 5.8125, 7.0625, 5.84375, - 6.4375, 9.1875, 5.03125, 2.01562, 1.8125, 6.5625, 9.5625, 4.96875, 5.8125, 4.75, - 6.6875, 9.625, 4.625, 7.71875, 4.6875, 6.4375, 3.59375, 2.25, 3.0625, 6.375, - 2.0625, 6.9375, 1.0625, 9.25, 7.0625, 3.90625, 9.875, 3.09375, 6.125, 9.1875, - 2.9375, 4.0625, 5.6875, 6.4375, 8.25, 8.5, 7.1875, 6.46875, 9.125, 3.71875, - 5.1875, 9.25, 9.375, 6.25, 8.5, 1.67188, 2.09375, 5.78125, 1.78125, 5.8125, - 4.84375, 8.125, 1.64062, 9, 7.8125, 4.5, 3.64062, 1.9375, 1.24219, 9.25, - 4.4375, 1.48438, 1.67188, 8.25, 7.75, 2.875, 3.28125, 3.9375, 8.75, 5.4375, - 2.875, 5.6875, 1.99219, 9.625, 1.39062, 4.46875, 9.5, 7.375, 9.875, 2.98438, - 3.0625, 9.875, 9.5625, 1.14062, 4.6875, 5.53125, 2.98438, 4.5, 9.25, 4.5625, - 7.625, 3.1875, 8.4375, 1.65625, 3, 6, 9.75, 5.3125, 4.375, 6.75, - 3.8125, 2.65625, 8.75, 1.23438, 2.40625, 2.875, 2.20312, 8.8125, 3.42188, 5.25, - 8, 8.375, 2.8125, 4.5625, 6.40625, 4.875, 4.25, 9, 2.25, 5.75, - 7, 8.5, 6.4375, 7.1875, 5.59375, 2.48438, 1.53125, 8.1875, 2.15625, 2.01562, - 9.25, 8.375, 6.1875, 8, 9.125, 3.8125, 6.6875, 8, 8.75, 7.625, - 9.75, 4.8125, 6, 2.78125, 3.5625, 8.5625, 1.07812, 9.9375, 6.8125, 7.125, - 7.3125, 4.5625, 1.50781, 1.15625, 3.79688, 2.8125, 8.6875, 6.28125, 8.1875, 7.75, - 8.875, 7.8125, 5.21875, 5.53125, 9.125, 5.125, 4.125, 1.35938, 6.25, 3.1875, - 8.375, 1, 8, 8.625, 5.25, 8.875, 3.75, 7.5, 1.32812, 1.80469, - 4.5, 2.15625, 6.8125, 2.375, 4.4375, 9.5625, 6.9375, 6.4375, 2.10938, 2.5625, - 9, 1.71875, 6.78125, 6, 2, 7, 7.09375, 4.5, 5.8125, 8.625, - 7.59375, 6.6875, 4.625, 3.35938, 9, 8.625, 1.51562, 9.5625, 6.25, 3.03125, - 3.59375, 1.85156, 5.5625, 8.3125, 7.375, 2.21875, 8.5625, 3.0625, 7.1875, 7, - 2.59375, 3.92188, 8.125, 3.09375, 7.4375, 6.375, 7.375, 8.125, 6.75, 7.78125, - 2.5, 5, 7.5625, 1.42188, 9.0625, 1.875, 4.8125, 3.09375, 5.34375, 3.34375, - 1.92188, 10, 4.3125, 5.03125, 8.75, 6.40625, 9.25, 9.125, 9, 7.4375, - 3.89062, 4.4375, 9, 6.34375, 9.25, 9.875, 1.79688, 5.0625, 9, 3.04688, - 6.6875, 2.98438, 5.40625, 8.125, 9.75, 3.125, 4.125, 3.48438, 8.4375, 8.75, - 4.375, 8.375, 6.4375, 3.5, 3.89062, 5.4375, 9.5, 4.03125, 7.5, 10}, - std::vector{ - 1, 5.96875, 3, 8.75, 2.46875, 8.6875, 6.1875, 3.09375, 5, 5.3125, - 3.09375, 3.25, 7.96875, 8.625, 3.34375, 6.8125, 2.8125, 9.5, 3.84375, 1.14062, - 3.8125, 1.09375, 3.375, 7.0625, 6.875, 9.5, 5.125, 2.25, 5.34375, 6.3125, - 1.79688, 5.4375, 8, 6.0625, 7.46875, 7, 9.25, 1.74219, 7.25, 3.5625, - 4.5625, 3.01562, 2.78125, 8.125, 8.375, 2.53125, 4.9375, 6.375, 7.5, 3.78125, - 6, 2.89062, 2.75, 8.4375, 2.85938, 2, 9.4375, 1.32812, 10, 4.3125, - 3.09375, 9.75, 6, 9.125, 7.0625, 5.46875, 9, 4.625, 3.40625, 9.75, - 5.25, 6.75, 5.4375, 3.96875, 3, 6.15625, 9.0625, 5.59375, 2, 2.51562, - 4.75, 7.5625, 4.75, 5.28125, 2.17188, 1.00781, 3.625, 6.1875, 1.96875, 8.625, - 9.25, 9.1875, 2, 2.75, 4.25, 1, 5.46875, 4.5, 6.65625, 3.5, - 7.90625, 7.4375, 6.9375, 5.1875, 8.875, 2.375, 4.46875, 7.1875, 4.125, 6.9375, - 9.5, 1.92969, 6.5, 6.5625, 9.0625, 8.5, 4.75, 4.6875, 6.0625, 9.8125, - 2.34375, 4.65625, 9, 9.5, 6.71875, 5.40625, 3.28125, 6.5625, 4.1875, 1.1875, - 6.1875, 2.8125, 7.875, 8.625, 8.25, 5, 4.9375, 4.625, 5, 7.4375, - 8.5625, 5.3125, 8.4375, 6.5, 1.98438, 2.0625, 5.625, 7.625, 9.5625, 9.5, - 6.125, 8, 10, 2.625, 4.90625, 2.95312, 6.8125, 8.75, 8.9375, 6.5, - 1.65625, 7.84375, 8, 4.125, 9, 8.0625, 5.375, 6.0625, 3.6875, 7.0625, - 2.73438, 7.28125, 7.4375, 5.375, 4.84375, 2.03125, 6.375, 6.5625, 4.0625, 2.125, - 1.84375, 3.0625, 6.03125, 9.375, 4.625, 9.375, 3.57812, 2.84375, 8.0625, 6.65625, - 9.75, 5.125, 1.07812, 8.4375, 5.75, 7.25, 4.5625, 3.54688, 6.9375, 6.625, - 8.875, 6.40625, 2.70312, 6.0625, 2.5, 5.6875, 8.0625, 4.4375, 1.875, 8.1875, - 7.6875, 3.25, 8.125, 7.6875, 3.03125, 9.75, 2.84375, 9.6875, 1.34375, 6.375, - 6.34375, 8.6875, 2.28125, 6.375, 9.9375, 8.375, 1.23438, 6.3125, 8.625, 7.625, - 4.75, 9.6875, 9.125, 4.75, 6.375, 2.6875, 8.75, 2.60938, 5.75, 4.4375, - 8.25, 6.4375, 2.64062, 6.5625, 6.125, 9.625, 3.84375, 2.5, 3.09375, 7.75, - 7.25, 3.96875, 5.9375, 1.09375, 8.125, 5.625, 9.5, 9.25, 5.6875, 3.03125, - 6.1875, 2.85938, 8.0625, 4.75, 2.84375, 7.375, 2, 4.0625, 8.375, 4.1875, - 2.78125, 3.04688, 2.64062, 9.5, 6.625, 9.875, 1.70312, 6.6875, 4.8125, 7, - 1.9375, 1.32031, 7.5, 2.21875, 6.6875, 3.34375, 7.625, 1.53125, 8.875, 1.75781, - 3.35938, 4.8125, 4.40625, 5.46875, 7.5625, 3.29688, 3.21875, 6.25, 4.34375, 5, - 2.34375, 4.875, 2.78125, 7.46875, 3.20312, 5.4375, 6.875, 2, 5.375, 6.71875, - 5.5625, 3.34375, 3.78125, 9.625, 1.8125, 5.125, 2.90625, 1.80469, 3.625, 5.34375, - 1.76562, 5.6875, 9.5625, 9.4375, 10, 1.17188, 7.125, 9.5, 3, 7.1875, - 2.09375, 2.98438, 5.9375, 9.375, 1.9375, 1.89062, 5.75, 3.21875, 7.375, 2.46875, - 6.125, 4.96875, 3.75, 1.0625, 3.53125, 7.875, 4.8125, 9.125, 4.28125, 9.125, - 1.78906, 8.0625, 7.9375, 1.32812, 6.5625, 4.25, 7.375, 6.875, 6.0625, 6.53125, - 3.5625, 4.4375, 4.5, 6.875, 7.9375, 9.625, 4.3125, 1.09375, 2.73438, 7.75, - 6.3125, 9.75, 4.625, 4.71875, 3, 2.40625, 1.17188, 7.625, 5.28125, 6.6875, - 8.125, 9.625, 2.23438, 4.84375, 4.6875, 7.96875, 4.9375, 3.46875, 3, 9.5, - 7.21875, 6.25, 3.0625, 1.34375, 6.25, 1.39844, 5.5625, 5.34375, 2.96875, 9.375, - 2.85938, 7, 7.6875, 4.6875, 8.875, 4.40625, 4.25, 8.625, 5.875, 8, - 4.8125, 1.46875, 5.625, 3, 9.875, 2.03125, 3.82812, 6.375, 8.75, 4.5625, - 9.625, 8.625, 1.625, 6.1875, 1.85938, 9.125, 1.42188, 5.0625, 8.625, 4.5625, - 2.4375, 8.875, 6.84375, 7.3125, 1.63281, 3.28125, 6.25, 3.70312, 1.28125, 6.96875, - 1.67969, 5.875, 9.625, 7.3125, 5.71875, 9.9375, 4.0625, 6.5625, 1.03125, 3.84375, - 4.1875, 9.5, 4.21875, 5.25, 1.64062, 4.78125, 4.28125, 7.8125, 6.1875, 8, - 1.85938, 5.375, 1.9375, 8.125, 6, 4.90625, 1.53125, 2.53125, 6.53125, 1.67188, - 1.5625, 2.48438, 8.9375, 2.75, 4, 3.65625, 4.625, 5.5625, 8.75, 4.9375, - 3.40625, 8.1875, 6.40625, 7.0625, 6.6875, 6.0625, 9.75, 8.375, 1.36719, 9.625, - 8.625, 8.375, 5.28125, 7.90625, 4.25, 9.6875, 5.1875, 6.6875, 8.375, 3.71875, - 5.25, 9.5, 2.25, 7.1875, 3.46875, 7.53125, 5.15625, 7.84375, 2.375, 4, - 5.34375, 8.6875, 4.75, 7, 5.96875, 9, 4.125, 6.34375, 3.28125, 5, - 7.1875, 7.8125, 1.48438, 2.40625, 3.15625, 1.03125, 8.625, 5.78125, 3.5, 8.0625, - 4.71875, 9.75, 3.3125, 5.09375, 3.65625, 4.5, 4.625, 7.6875, 7.375, 9.5, - 4.625, 2.46875, 3.625, 6.125, 1.36719, 8.375, 8.375, 6.53125, 3.125, 5.75, - 9.625, 3.3125, 8.375, 2.65625, 3.375, 3.60938, 6.9375, 4.9375, 1.78906, 9.25, - 3.20312, 6.4375, 2.375, 2.40625, 6.0625, 3.75, 1.3125, 4.3125, 9.125, 9.3125, - 1.09375, 8.3125, 1.98438, 8.1875, 6.1875, 1.21094, 8.25, 6.75, 5.75, 9.25, - 4.75, 7.0625, 4.84375, 4.0625, 7.78125, 2.1875, 2.90625, 3.01562, 9.1875, 5, - 6.5, 1.75, 6.1875, 2.96875, 1.07031, 2.375, 7.625, 6.0625, 3.90625, 3.45312, - 2.57812, 3.3125, 3.96875, 7.875, 4.75, 7, 6.5625, 9.75, 4.5, 1.82812, - 4.375, 4.90625, 9.75, 7.84375, 8.125, 6.3125, 4.875, 2.71875, 2.5, 8.875, - 2.17188, 4.0625, 2.84375, 9, 2.3125, 1.85938, 5.875, 4.5625, 3.32812, 6.71875, - 5.125, 1.67188, 3.8125, 8.5, 5.375, 7.75, 6.5, 8.25, 1.49219, 7.25, - 5.625, 5, 8.6875, 5.5625, 9, 7.375, 6.9375, 6.625, 1.82812, 2.75, - 7.59375, 3.875, 4.78125, 6.5625, 3.03125, 7.15625, 9.5, 9.125, 1.59375, 8.5, - 4.3125, 5.15625, 4.65625, 6.125, 6.5, 4.25, 1.98438, 7.96875, 5.25, 4.40625, - 4.5625, 2.89062, 3, 7.375, 5.75, 8.125, 1.75, 1.5625, 3.40625, 6.125, - 3.29688, 1.39062, 6.625, 1.5, 8.875, 8.5, 5.5, 5, 1.09375, 1.79688, - 9.75, 2.375, 1.07031, 8.25, 9, 9.875, 7.6875, 1.23438, 8.375, 8.0625, - 6.75, 8.25, 8.625, 2.21875, 8.5, 9.25, 4.4375, 4.40625, 8, 3.5, - 3.8125, 7, 2.125, 9, 3.42188, 9.125, 4.1875, 3.04688, 7.65625, 5.9375, - 5.75, 9.5, 4.65625, 6.875, 5.0625, 1.89062, 3.40625, 5.78125, 4.0625, 5.125, - 9, 5.9375, 2.46875, 9.25, 6.875, 7, 8.375, 6.09375, 1.48438, 5.90625, - 8.75, 6.25, 7.3125, 8.5625, 9.9375, 9.125, 1.46875, 9.1875, 1.26562, 9, - 5.5, 6.1875, 1.58594, 7.3125, 7.875, 9.5625, 3.32812, 8, 8.25, 4.59375, - 9.75, 1.125, 8.3125, 4.6875, 3.375, 3.92188, 6.125, 4.46875, 3.625, 2.03125, - 1.625, 9.1875, 2.46875, 3.03125, 6.1875, 9.5625, 5.78125, 2.10938, 3.14062, 4.125, - 5.75, 7.03125, 2.28125, 6.9375, 7.3125, 3.125, 6.0625, 7.75, 7.1875, 8.1875, - 6.90625, 4.875, 8.875, 7.3125, 5.9375, 1.39062, 4.625, 7.75, 5.0625, 10}, - std::vector{ - 1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, - 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, - 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, - 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 8.75, - 9.875, 5.75, 7.1875, 5.65625, 7.375, 9.25, 6.03125, 9.75, 8.625, 1.07031, - 6.8125, 2.90625, 6.1875, 4.6875, 7.25, 1.14062, 9.0625, 2.78125, 5.625, 6.875, - 2.0625, 3.3125, 9.875, 8.9375, 5.6875, 5.875, 3.65625, 2.78125, 8.625, 4.1875, - 7.125, 7.09375, 5.125, 2.625, 3.10938, 9.4375, 5.5625, 5.8125, 3.5625, 10}, - std::vector{ - 0.523438, 0.667969, 0.65625, 0.65625, 0.667969, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, + 1, 6.9375, 6.75, 6.1875, 2.4375, 3.67188, 6.9375, 3.57812, 4.25, 1.53906, 4.8125, + 9, 6.1875, 7.3125, 9.5, 5.53125, 9.6875, 4.84375, 4.65625, 7.84375, 3.03125, 6.1875, + 8.625, 9.875, 9.5, 9.0625, 8.125, 9.875, 4.875, 2.79688, 9.5, 4.4375, 1.55469, + 2.78125, 8.75, 8.5, 2.34375, 2.90625, 6.25, 2.71875, 5.25, 6.875, 8, 7.375, + 8.9375, 1.875, 3.0625, 5.75, 7.375, 7.75, 1.125, 6.75, 6.75, 3, 6.65625, + 5.125, 3.84375, 6.625, 9.125, 3.92188, 7, 4.3125, 9.625, 5.53125, 7.6875, 1.85156, + 7.03125, 7.375, 3.5, 5.9375, 9.125, 2.0625, 6.5625, 7.375, 3.4375, 3.17188, 1.25, + 9, 2.75, 3.40625, 5.9375, 5.53125, 3.3125, 6.625, 8.25, 6.84375, 2.82812, 1.27344, + 8.625, 5.1875, 1.79688, 1.97656, 2.125, 9.875, 2.73438, 2.40625, 6.625, 2.76562, 3.76562, + 5.59375, 7.1875, 6.40625, 8.5625, 6.21875, 6.46875, 8.0625, 7.6875, 2.1875, 9.0625, 6.3125, + 9.0625, 2.90625, 2.17188, 7.4375, 3.125, 1.40625, 8.25, 7.0625, 8.375, 4.6875, 5.125, + 1.875, 8.375, 3.4375, 9.6875, 9.3125, 7.5, 8.3125, 4.5, 7.5625, 1.92188, 1.46094, + 8.75, 3.34375, 7.9375, 6, 8.5, 1.23438, 2.75, 7.25, 7.4375, 4.09375, 8.625, + 6.34375, 5.5, 6.3125, 1.23438, 7.875, 8.25, 7.25, 7.65625, 8.25, 9.25, 9.625, + 4.3125, 9.125, 3.64062, 6.4375, 5.9375, 9.125, 6.1875, 6.625, 3, 1.65625, 5.75, + 6.1875, 4.71875, 8.125, 6.25, 2.5, 3.40625, 3.20312, 9.1875, 9.8125, 8.125, 4.125, + 1.08594, 4.78125, 9.5625, 5.0625, 5.625, 3.5, 8.25, 1.73438, 3.5625, 8.0625, 2.23438, + 3.0625, 3.34375, 3.40625, 3.625, 9.75, 1.14062, 4.84375, 9.125, 5.5, 8, 9.5, + 5.125, 7.25, 9.4375, 2.0625, 5.90625, 9.75, 6.1875, 6, 7.3125, 7.3125, 7.34375, + 7.5625, 6.1875, 9.125, 7.28125, 7.75, 4.59375, 7.5, 7.71875, 9.75, 9.5, 9.9375, + 5.90625, 1.20312, 1.75, 7.75, 8.8125, 3.5625, 8.5, 9.25, 8.375, 7.84375, 4.9375, + 7.4375, 6.75, 1.46875, 3.53125, 7.15625, 6.0625, 3.8125, 5.34375, 1.60938, 9.6875, 8.4375, + 4.65625, 5.46875, 3.65625, 5.125, 9.125, 1.23438, 6.875, 1.79688, 4.1875, 2.26562, 2.78125, + 9.25, 3.28125, 6.5625, 7.3125, 8.1875, 8.9375, 4, 8.625, 5.3125, 9.875, 4.375, + 4.09375, 1.125, 2.84375, 8.375, 7.90625, 4.75, 4.625, 4.75, 3.17188, 7.59375, 4.5, + 2.46875, 4.03125, 3.26562, 2.5, 7.28125, 6.3125, 7.6875, 1.00781, 1.3125, 7.625, 4.375, + 2.0625, 4.1875, 7.625, 4.40625, 3.6875, 8.75, 4.09375, 2.84375, 5.21875, 3.65625, 9.5625, + 1.71875, 5.9375, 1.79688, 5.8125, 5.625, 1.46875, 1.32812, 1.95312, 4.3125, 1.41406, 3.125, + 9.1875, 6.3125, 5.3125, 4.1875, 1.17969, 1.32031, 9.5, 9.875, 6.78125, 2.32812, 7.1875, + 4.3125, 7.90625, 4.6875, 7.875, 3.59375, 4.6875, 1.3125, 1.71094, 3.98438, 8.75, 8.625, + 2.21875, 9.5, 7.1875, 3.92188, 5.6875, 5.75, 8.75, 6.625, 1.34375, 1.99219, 8.3125, + 1.73438, 5.5625, 7.84375, 1.15625, 2.125, 4.5, 5.75, 7, 3.5, 7.375, 4.1875, + 5.3125, 7.0625, 3.8125, 1.85156, 9, 6.75, 4.3125, 9.9375, 8.125, 8.75, 1.09375, + 9.875, 6.46875, 2.32812, 3.84375, 8.75, 6.6875, 3.17188, 4.75, 5.25, 5.875, 4.625, + 5.59375, 7.25, 8.625, 2.84375, 7, 4.0625, 6.5, 3.15625, 6.5, 4.65625, 7.8125, + 2.6875, 5.6875, 4, 5.9375, 5.53125, 6.96875, 5.78125, 9.125, 6.53125, 8.125, 2.90625, + 5.625, 5.125, 7.4375, 3.78125, 5.5, 8, 9.4375, 8.75, 6.75, 5.59375, 8.375, + 2.4375, 1.27344, 4.90625, 8.875, 9.5, 5.21875, 6.9375, 9, 3.0625, 3.25, 2.39062, + 1.92188, 2.54688, 3.73438, 7.28125, 4.5, 5.09375, 7.5, 2.14062, 1.10938, 2.32812, 3.875, + 4.8125, 1.95312, 1.98438, 6.34375, 4.8125, 6.84375, 5.3125, 9.1875, 8.3125, 6.5, 7.125, + 2.59375, 4.0625, 1.27344, 5.09375, 5.75, 1.48438, 6.1875, 5.1875, 9.9375, 8.3125, 2.14062, + 5.21875, 5.0625, 1.94531, 6.6875, 7.75, 8.625, 6.3125, 5.8125, 8.75, 6.375, 8.875, + 1.16406, 6.125, 1, 3.71875, 3.1875, 6.96875, 1.14062, 6.09375, 8.75, 1.5, 5.25, + 5.1875, 1.48438, 2.96875, 2.03125, 4.40625, 9.625, 4.125, 5, 2.45312, 9.25, 5.875, + 5.9375, 4.6875, 8.25, 5.3125, 1.73438, 7.4375, 4.625, 7.6875, 3.4375, 6.53125, 2.64062, + 8.75, 2.57812, 7.8125, 4.4375, 6.0625, 4.5, 9.125, 7.96875, 2.65625, 8.125, 8.8125, + 5.25, 5.65625, 4.84375, 7.96875, 3.09375, 2.3125, 7.34375, 8.5, 6.25, 2.79688, 7.8125, + 5.8125, 7.0625, 5.84375, 6.4375, 9.1875, 5.03125, 2.01562, 1.8125, 6.5625, 9.5625, 4.96875, + 5.8125, 4.75, 6.6875, 9.625, 4.625, 7.71875, 4.6875, 6.4375, 3.59375, 2.25, 3.0625, + 6.375, 2.0625, 6.9375, 1.0625, 9.25, 7.0625, 3.90625, 9.875, 3.09375, 6.125, 9.1875, + 2.9375, 4.0625, 5.6875, 6.4375, 8.25, 8.5, 7.1875, 6.46875, 9.125, 3.71875, 5.1875, + 9.25, 9.375, 6.25, 8.5, 1.67188, 2.09375, 5.78125, 1.78125, 5.8125, 4.84375, 8.125, + 1.64062, 9, 7.8125, 4.5, 3.64062, 1.9375, 1.24219, 9.25, 4.4375, 1.48438, 1.67188, + 8.25, 7.75, 2.875, 3.28125, 3.9375, 8.75, 5.4375, 2.875, 5.6875, 1.99219, 9.625, + 1.39062, 4.46875, 9.5, 7.375, 9.875, 2.98438, 3.0625, 9.875, 9.5625, 1.14062, 4.6875, + 5.53125, 2.98438, 4.5, 9.25, 4.5625, 7.625, 3.1875, 8.4375, 1.65625, 3, 6, + 9.75, 5.3125, 4.375, 6.75, 3.8125, 2.65625, 8.75, 1.23438, 2.40625, 2.875, 2.20312, + 8.8125, 3.42188, 5.25, 8, 8.375, 2.8125, 4.5625, 6.40625, 4.875, 4.25, 9, + 2.25, 5.75, 7, 8.5, 6.4375, 7.1875, 5.59375, 2.48438, 1.53125, 8.1875, 2.15625, + 2.01562, 9.25, 8.375, 6.1875, 8, 9.125, 3.8125, 6.6875, 8, 8.75, 7.625, + 9.75, 4.8125, 6, 2.78125, 3.5625, 8.5625, 1.07812, 9.9375, 6.8125, 7.125, 7.3125, + 4.5625, 1.50781, 1.15625, 3.79688, 2.8125, 8.6875, 6.28125, 8.1875, 7.75, 8.875, 7.8125, + 5.21875, 5.53125, 9.125, 5.125, 4.125, 1.35938, 6.25, 3.1875, 8.375, 1, 8, + 8.625, 5.25, 8.875, 3.75, 7.5, 1.32812, 1.80469, 4.5, 2.15625, 6.8125, 2.375, + 4.4375, 9.5625, 6.9375, 6.4375, 2.10938, 2.5625, 9, 1.71875, 6.78125, 6, 2, + 7, 7.09375, 4.5, 5.8125, 8.625, 7.59375, 6.6875, 4.625, 3.35938, 9, 8.625, + 1.51562, 9.5625, 6.25, 3.03125, 3.59375, 1.85156, 5.5625, 8.3125, 7.375, 2.21875, 8.5625, + 3.0625, 7.1875, 7, 2.59375, 3.92188, 8.125, 3.09375, 7.4375, 6.375, 7.375, 8.125, + 6.75, 7.78125, 2.5, 5, 7.5625, 1.42188, 9.0625, 1.875, 4.8125, 3.09375, 5.34375, + 3.34375, 1.92188, 10, 4.3125, 5.03125, 8.75, 6.40625, 9.25, 9.125, 9, 7.4375, + 3.89062, 4.4375, 9, 6.34375, 9.25, 9.875, 1.79688, 5.0625, 9, 3.04688, 6.6875, + 2.98438, 5.40625, 8.125, 9.75, 3.125, 4.125, 3.48438, 8.4375, 8.75, 4.375, 8.375, + 6.4375, 3.5, 3.89062, 5.4375, 9.5, 4.03125, 7.5, 10}, + std::vector{ + 1, 5.96875, 3, 8.75, 2.46875, 8.6875, 6.1875, 3.09375, 5, 5.3125, 3.09375, + 3.25, 7.96875, 8.625, 3.34375, 6.8125, 2.8125, 9.5, 3.84375, 1.14062, 3.8125, 1.09375, + 3.375, 7.0625, 6.875, 9.5, 5.125, 2.25, 5.34375, 6.3125, 1.79688, 5.4375, 8, + 6.0625, 7.46875, 7, 9.25, 1.74219, 7.25, 3.5625, 4.5625, 3.01562, 2.78125, 8.125, + 8.375, 2.53125, 4.9375, 6.375, 7.5, 3.78125, 6, 2.89062, 2.75, 8.4375, 2.85938, + 2, 9.4375, 1.32812, 10, 4.3125, 3.09375, 9.75, 6, 9.125, 7.0625, 5.46875, + 9, 4.625, 3.40625, 9.75, 5.25, 6.75, 5.4375, 3.96875, 3, 6.15625, 9.0625, + 5.59375, 2, 2.51562, 4.75, 7.5625, 4.75, 5.28125, 2.17188, 1.00781, 3.625, 6.1875, + 1.96875, 8.625, 9.25, 9.1875, 2, 2.75, 4.25, 1, 5.46875, 4.5, 6.65625, + 3.5, 7.90625, 7.4375, 6.9375, 5.1875, 8.875, 2.375, 4.46875, 7.1875, 4.125, 6.9375, + 9.5, 1.92969, 6.5, 6.5625, 9.0625, 8.5, 4.75, 4.6875, 6.0625, 9.8125, 2.34375, + 4.65625, 9, 9.5, 6.71875, 5.40625, 3.28125, 6.5625, 4.1875, 1.1875, 6.1875, 2.8125, + 7.875, 8.625, 8.25, 5, 4.9375, 4.625, 5, 7.4375, 8.5625, 5.3125, 8.4375, + 6.5, 1.98438, 2.0625, 5.625, 7.625, 9.5625, 9.5, 6.125, 8, 10, 2.625, + 4.90625, 2.95312, 6.8125, 8.75, 8.9375, 6.5, 1.65625, 7.84375, 8, 4.125, 9, + 8.0625, 5.375, 6.0625, 3.6875, 7.0625, 2.73438, 7.28125, 7.4375, 5.375, 4.84375, 2.03125, + 6.375, 6.5625, 4.0625, 2.125, 1.84375, 3.0625, 6.03125, 9.375, 4.625, 9.375, 3.57812, + 2.84375, 8.0625, 6.65625, 9.75, 5.125, 1.07812, 8.4375, 5.75, 7.25, 4.5625, 3.54688, + 6.9375, 6.625, 8.875, 6.40625, 2.70312, 6.0625, 2.5, 5.6875, 8.0625, 4.4375, 1.875, + 8.1875, 7.6875, 3.25, 8.125, 7.6875, 3.03125, 9.75, 2.84375, 9.6875, 1.34375, 6.375, + 6.34375, 8.6875, 2.28125, 6.375, 9.9375, 8.375, 1.23438, 6.3125, 8.625, 7.625, 4.75, + 9.6875, 9.125, 4.75, 6.375, 2.6875, 8.75, 2.60938, 5.75, 4.4375, 8.25, 6.4375, + 2.64062, 6.5625, 6.125, 9.625, 3.84375, 2.5, 3.09375, 7.75, 7.25, 3.96875, 5.9375, + 1.09375, 8.125, 5.625, 9.5, 9.25, 5.6875, 3.03125, 6.1875, 2.85938, 8.0625, 4.75, + 2.84375, 7.375, 2, 4.0625, 8.375, 4.1875, 2.78125, 3.04688, 2.64062, 9.5, 6.625, + 9.875, 1.70312, 6.6875, 4.8125, 7, 1.9375, 1.32031, 7.5, 2.21875, 6.6875, 3.34375, + 7.625, 1.53125, 8.875, 1.75781, 3.35938, 4.8125, 4.40625, 5.46875, 7.5625, 3.29688, 3.21875, + 6.25, 4.34375, 5, 2.34375, 4.875, 2.78125, 7.46875, 3.20312, 5.4375, 6.875, 2, + 5.375, 6.71875, 5.5625, 3.34375, 3.78125, 9.625, 1.8125, 5.125, 2.90625, 1.80469, 3.625, + 5.34375, 1.76562, 5.6875, 9.5625, 9.4375, 10, 1.17188, 7.125, 9.5, 3, 7.1875, + 2.09375, 2.98438, 5.9375, 9.375, 1.9375, 1.89062, 5.75, 3.21875, 7.375, 2.46875, 6.125, + 4.96875, 3.75, 1.0625, 3.53125, 7.875, 4.8125, 9.125, 4.28125, 9.125, 1.78906, 8.0625, + 7.9375, 1.32812, 6.5625, 4.25, 7.375, 6.875, 6.0625, 6.53125, 3.5625, 4.4375, 4.5, + 6.875, 7.9375, 9.625, 4.3125, 1.09375, 2.73438, 7.75, 6.3125, 9.75, 4.625, 4.71875, + 3, 2.40625, 1.17188, 7.625, 5.28125, 6.6875, 8.125, 9.625, 2.23438, 4.84375, 4.6875, + 7.96875, 4.9375, 3.46875, 3, 9.5, 7.21875, 6.25, 3.0625, 1.34375, 6.25, 1.39844, + 5.5625, 5.34375, 2.96875, 9.375, 2.85938, 7, 7.6875, 4.6875, 8.875, 4.40625, 4.25, + 8.625, 5.875, 8, 4.8125, 1.46875, 5.625, 3, 9.875, 2.03125, 3.82812, 6.375, + 8.75, 4.5625, 9.625, 8.625, 1.625, 6.1875, 1.85938, 9.125, 1.42188, 5.0625, 8.625, + 4.5625, 2.4375, 8.875, 6.84375, 7.3125, 1.63281, 3.28125, 6.25, 3.70312, 1.28125, 6.96875, + 1.67969, 5.875, 9.625, 7.3125, 5.71875, 9.9375, 4.0625, 6.5625, 1.03125, 3.84375, 4.1875, + 9.5, 4.21875, 5.25, 1.64062, 4.78125, 4.28125, 7.8125, 6.1875, 8, 1.85938, 5.375, + 1.9375, 8.125, 6, 4.90625, 1.53125, 2.53125, 6.53125, 1.67188, 1.5625, 2.48438, 8.9375, + 2.75, 4, 3.65625, 4.625, 5.5625, 8.75, 4.9375, 3.40625, 8.1875, 6.40625, 7.0625, + 6.6875, 6.0625, 9.75, 8.375, 1.36719, 9.625, 8.625, 8.375, 5.28125, 7.90625, 4.25, + 9.6875, 5.1875, 6.6875, 8.375, 3.71875, 5.25, 9.5, 2.25, 7.1875, 3.46875, 7.53125, + 5.15625, 7.84375, 2.375, 4, 5.34375, 8.6875, 4.75, 7, 5.96875, 9, 4.125, + 6.34375, 3.28125, 5, 7.1875, 7.8125, 1.48438, 2.40625, 3.15625, 1.03125, 8.625, 5.78125, + 3.5, 8.0625, 4.71875, 9.75, 3.3125, 5.09375, 3.65625, 4.5, 4.625, 7.6875, 7.375, + 9.5, 4.625, 2.46875, 3.625, 6.125, 1.36719, 8.375, 8.375, 6.53125, 3.125, 5.75, + 9.625, 3.3125, 8.375, 2.65625, 3.375, 3.60938, 6.9375, 4.9375, 1.78906, 9.25, 3.20312, + 6.4375, 2.375, 2.40625, 6.0625, 3.75, 1.3125, 4.3125, 9.125, 9.3125, 1.09375, 8.3125, + 1.98438, 8.1875, 6.1875, 1.21094, 8.25, 6.75, 5.75, 9.25, 4.75, 7.0625, 4.84375, + 4.0625, 7.78125, 2.1875, 2.90625, 3.01562, 9.1875, 5, 6.5, 1.75, 6.1875, 2.96875, + 1.07031, 2.375, 7.625, 6.0625, 3.90625, 3.45312, 2.57812, 3.3125, 3.96875, 7.875, 4.75, + 7, 6.5625, 9.75, 4.5, 1.82812, 4.375, 4.90625, 9.75, 7.84375, 8.125, 6.3125, + 4.875, 2.71875, 2.5, 8.875, 2.17188, 4.0625, 2.84375, 9, 2.3125, 1.85938, 5.875, + 4.5625, 3.32812, 6.71875, 5.125, 1.67188, 3.8125, 8.5, 5.375, 7.75, 6.5, 8.25, + 1.49219, 7.25, 5.625, 5, 8.6875, 5.5625, 9, 7.375, 6.9375, 6.625, 1.82812, + 2.75, 7.59375, 3.875, 4.78125, 6.5625, 3.03125, 7.15625, 9.5, 9.125, 1.59375, 8.5, + 4.3125, 5.15625, 4.65625, 6.125, 6.5, 4.25, 1.98438, 7.96875, 5.25, 4.40625, 4.5625, + 2.89062, 3, 7.375, 5.75, 8.125, 1.75, 1.5625, 3.40625, 6.125, 3.29688, 1.39062, + 6.625, 1.5, 8.875, 8.5, 5.5, 5, 1.09375, 1.79688, 9.75, 2.375, 1.07031, + 8.25, 9, 9.875, 7.6875, 1.23438, 8.375, 8.0625, 6.75, 8.25, 8.625, 2.21875, + 8.5, 9.25, 4.4375, 4.40625, 8, 3.5, 3.8125, 7, 2.125, 9, 3.42188, + 9.125, 4.1875, 3.04688, 7.65625, 5.9375, 5.75, 9.5, 4.65625, 6.875, 5.0625, 1.89062, + 3.40625, 5.78125, 4.0625, 5.125, 9, 5.9375, 2.46875, 9.25, 6.875, 7, 8.375, + 6.09375, 1.48438, 5.90625, 8.75, 6.25, 7.3125, 8.5625, 9.9375, 9.125, 1.46875, 9.1875, + 1.26562, 9, 5.5, 6.1875, 1.58594, 7.3125, 7.875, 9.5625, 3.32812, 8, 8.25, + 4.59375, 9.75, 1.125, 8.3125, 4.6875, 3.375, 3.92188, 6.125, 4.46875, 3.625, 2.03125, + 1.625, 9.1875, 2.46875, 3.03125, 6.1875, 9.5625, 5.78125, 2.10938, 3.14062, 4.125, 5.75, + 7.03125, 2.28125, 6.9375, 7.3125, 3.125, 6.0625, 7.75, 7.1875, 8.1875, 6.90625, 4.875, + 8.875, 7.3125, 5.9375, 1.39062, 4.625, 7.75, 5.0625, 10}, + std::vector{1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, + 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, + 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, + 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 8.75, + 9.875, 5.75, 7.1875, 5.65625, 7.375, 9.25, 6.03125, 9.75, 8.625, 1.07031, + 6.8125, 2.90625, 6.1875, 4.6875, 7.25, 1.14062, 9.0625, 2.78125, 5.625, 6.875, + 2.0625, 3.3125, 9.875, 8.9375, 5.6875, 5.875, 3.65625, 2.78125, 8.625, 4.1875, + 7.125, 7.09375, 5.125, 2.625, 3.10938, 9.4375, 5.5625, 5.8125, 3.5625, 10}, + std::vector{ + 0.523438, 0.667969, 0.65625, 0.65625, 0.667969, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.539062, 0.667969, 0.648438, 0.648438, 0.664062, 0.667969, 0.667969, 0.632812, 0.664062, 0.667969, - 0.546875, 0.667969, 0.632812, 0.625, 0.65625, 0.667969, 0.664062, 0.617188, 0.65625, 0.664062, - 0.546875, 0.664062, 0.617188, 0.609375, 0.648438, 0.664062, 0.65625, 0.601562, 0.640625, 0.65625, - 0.554688, 0.65625, 0.601562, 0.59375, 0.632812, 0.648438, 0.640625, 0.585938, 0.625, 0.640625, - 0.65625, 0.554688, 0.632812, 0.609375, 0.617188, 0.585938, 0.601562, 0.632812, 0.632812, 0.632812, - 0.664062, 0.546875, 0.648438, 0.625, 0.632812, 0.59375, 0.617188, 0.648438, 0.648438, 0.648438, - 0.667969, 0.546875, 0.65625, 0.640625, 0.648438, 0.609375, 0.632812, 0.664062, 0.664062, 0.65625, - 0.667969, 0.539062, 0.664062, 0.65625, 0.65625, 0.625, 0.648438, 0.667969, 0.667969, 0.664062, - 0.667969, 0.523438, 0.667969, 0.664062, 0.664062, 0.640625, 0.65625, 0.667969, 0.667969, 0.667969, - 0.65625, 0.667969, 0.667969, 0.539062, 0.667969, 0.667969, 0.546875, 0.667969, 0.667969, 0.667969, + 0.546875, 0.667969, 0.632812, 0.625, 0.65625, 0.667969, 0.664062, 0.617188, 0.65625, 0.664062, + 0.546875, 0.664062, 0.617188, 0.609375, 0.648438, 0.664062, 0.65625, 0.601562, 0.640625, 0.65625, + 0.554688, 0.65625, 0.601562, 0.59375, 0.632812, 0.648438, 0.640625, 0.585938, 0.625, 0.640625, + 0.65625, 0.554688, 0.632812, 0.609375, 0.617188, 0.585938, 0.601562, 0.632812, 0.632812, 0.632812, + 0.664062, 0.546875, 0.648438, 0.625, 0.632812, 0.59375, 0.617188, 0.648438, 0.648438, 0.648438, + 0.667969, 0.546875, 0.65625, 0.640625, 0.648438, 0.609375, 0.632812, 0.664062, 0.664062, 0.65625, + 0.667969, 0.539062, 0.664062, 0.65625, 0.65625, 0.625, 0.648438, 0.667969, 0.667969, 0.664062, + 0.667969, 0.523438, 0.667969, 0.664062, 0.664062, 0.640625, 0.65625, 0.667969, 0.667969, 0.667969, + 0.65625, 0.667969, 0.667969, 0.539062, 0.667969, 0.667969, 0.546875, 0.667969, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.546875, 0.667969, 0.667969, 0.546875, 0.667969, 0.667969, 0.667969, 0.632812, 0.664062, 0.664062, 0.554688, 0.667969, 0.667969, 0.554688, 0.664062, 0.664062, 0.664062, - 0.617188, 0.65625, 0.648438, 0.554688, 0.664062, 0.664062, 0.554688, 0.65625, 0.65625, 0.648438, - 0.601562, 0.648438, 0.640625, 0.554688, 0.65625, 0.65625, 0.554688, 0.648438, 0.648438, 0.640625, - 0.585938, 0.632812, 0.65625, 0.648438, 0.648438, 0.570312, 0.648438, 0.648438, 0.640625, 0.632812, - 0.59375, 0.648438, 0.664062, 0.664062, 0.65625, 0.585938, 0.65625, 0.664062, 0.648438, 0.648438, - 0.601562, 0.65625, 0.667969, 0.667969, 0.664062, 0.59375, 0.664062, 0.667969, 0.664062, 0.65625, + 0.617188, 0.65625, 0.648438, 0.554688, 0.664062, 0.664062, 0.554688, 0.65625, 0.65625, 0.648438, + 0.601562, 0.648438, 0.640625, 0.554688, 0.65625, 0.65625, 0.554688, 0.648438, 0.648438, 0.640625, + 0.585938, 0.632812, 0.65625, 0.648438, 0.648438, 0.570312, 0.648438, 0.648438, 0.640625, 0.632812, + 0.59375, 0.648438, 0.664062, 0.664062, 0.65625, 0.585938, 0.65625, 0.664062, 0.648438, 0.648438, + 0.601562, 0.65625, 0.667969, 0.667969, 0.664062, 0.59375, 0.664062, 0.667969, 0.664062, 0.65625, 0.617188, 0.664062, 0.667969, 0.667969, 0.667969, 0.609375, 0.667969, 0.667969, 0.667969, 0.664062, - 0.632812, 0.667969, 0.667969, 0.667969, 0.667969, 0.625, 0.667969, 0.667969, 0.667969, 0.667969, + 0.632812, 0.667969, 0.667969, 0.667969, 0.667969, 0.625, 0.667969, 0.667969, 0.667969, 0.667969, 0.640625, 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.585938, 0.570312, 0.648438, 0.667969, - 0.625, 0.667969, 0.667969, 0.65625, 0.667969, 0.667969, 0.578125, 0.570312, 0.625, 0.664062, - 0.609375, 0.664062, 0.664062, 0.640625, 0.667969, 0.664062, 0.570312, 0.5625, 0.609375, 0.648438, - 0.59375, 0.65625, 0.648438, 0.625, 0.664062, 0.65625, 0.570312, 0.5625, 0.59375, 0.632812, - 0.585938, 0.648438, 0.632812, 0.609375, 0.648438, 0.640625, 0.5625, 0.5625, 0.585938, 0.617188, - 0.648438, 0.648438, 0.625, 0.585938, 0.65625, 0.617188, 0.59375, 0.65625, 0.59375, 0.554688, - 0.664062, 0.65625, 0.640625, 0.59375, 0.664062, 0.632812, 0.609375, 0.664062, 0.609375, 0.554688, - 0.667969, 0.664062, 0.648438, 0.609375, 0.667969, 0.648438, 0.625, 0.667969, 0.625, 0.554688, - 0.667969, 0.667969, 0.664062, 0.625, 0.667969, 0.65625, 0.640625, 0.667969, 0.640625, 0.5625, - 0.667969, 0.667969, 0.667969, 0.640625, 0.667969, 0.664062, 0.65625, 0.667969, 0.65625, 0.5625, - 0.667969, 0.667969, 0.667969, 0.664062, 0.65625, 0.664062, 0.664062, 0.667969, 0.667969, 0.667969, - 0.667969, 0.664062, 0.667969, 0.65625, 0.648438, 0.648438, 0.65625, 0.667969, 0.667969, 0.667969, - 0.667969, 0.65625, 0.664062, 0.648438, 0.632812, 0.632812, 0.640625, 0.664062, 0.664062, 0.667969, - 0.664062, 0.648438, 0.65625, 0.625, 0.617188, 0.617188, 0.625, 0.65625, 0.648438, 0.664062, + 0.625, 0.667969, 0.667969, 0.65625, 0.667969, 0.667969, 0.578125, 0.570312, 0.625, 0.664062, + 0.609375, 0.664062, 0.664062, 0.640625, 0.667969, 0.664062, 0.570312, 0.5625, 0.609375, 0.648438, + 0.59375, 0.65625, 0.648438, 0.625, 0.664062, 0.65625, 0.570312, 0.5625, 0.59375, 0.632812, + 0.585938, 0.648438, 0.632812, 0.609375, 0.648438, 0.640625, 0.5625, 0.5625, 0.585938, 0.617188, + 0.648438, 0.648438, 0.625, 0.585938, 0.65625, 0.617188, 0.59375, 0.65625, 0.59375, 0.554688, + 0.664062, 0.65625, 0.640625, 0.59375, 0.664062, 0.632812, 0.609375, 0.664062, 0.609375, 0.554688, + 0.667969, 0.664062, 0.648438, 0.609375, 0.667969, 0.648438, 0.625, 0.667969, 0.625, 0.554688, + 0.667969, 0.667969, 0.664062, 0.625, 0.667969, 0.65625, 0.640625, 0.667969, 0.640625, 0.5625, + 0.667969, 0.667969, 0.667969, 0.640625, 0.667969, 0.664062, 0.65625, 0.667969, 0.65625, 0.5625, + 0.667969, 0.667969, 0.667969, 0.664062, 0.65625, 0.664062, 0.664062, 0.667969, 0.667969, 0.667969, + 0.667969, 0.664062, 0.667969, 0.65625, 0.648438, 0.648438, 0.65625, 0.667969, 0.667969, 0.667969, + 0.667969, 0.65625, 0.664062, 0.648438, 0.632812, 0.632812, 0.640625, 0.664062, 0.664062, 0.667969, + 0.664062, 0.648438, 0.65625, 0.625, 0.617188, 0.617188, 0.625, 0.65625, 0.648438, 0.664062, 0.648438, 0.632812, 0.648438, 0.609375, 0.601562, 0.601562, 0.609375, 0.648438, 0.640625, 0.648438, - 0.65625, 0.632812, 0.632812, 0.625, 0.632812, 0.640625, 0.625, 0.585938, 0.625, 0.609375, - 0.664062, 0.648438, 0.648438, 0.640625, 0.648438, 0.65625, 0.640625, 0.601562, 0.640625, 0.625, - 0.667969, 0.65625, 0.664062, 0.65625, 0.65625, 0.664062, 0.648438, 0.617188, 0.65625, 0.640625, + 0.65625, 0.632812, 0.632812, 0.625, 0.632812, 0.640625, 0.625, 0.585938, 0.625, 0.609375, + 0.664062, 0.648438, 0.648438, 0.640625, 0.648438, 0.65625, 0.640625, 0.601562, 0.640625, 0.625, + 0.667969, 0.65625, 0.664062, 0.65625, 0.65625, 0.664062, 0.648438, 0.617188, 0.65625, 0.640625, 0.667969, 0.664062, 0.667969, 0.664062, 0.664062, 0.667969, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.648438, 0.667969, 0.664062, - 0.664062, 0.664062, 0.625, 0.667969, 0.664062, 0.667969, 0.546875, 0.640625, 0.667969, 0.667969, - 0.648438, 0.664062, 0.609375, 0.664062, 0.65625, 0.667969, 0.546875, 0.625, 0.667969, 0.667969, - 0.632812, 0.648438, 0.59375, 0.65625, 0.640625, 0.664062, 0.554688, 0.609375, 0.664062, 0.664062, - 0.617188, 0.632812, 0.585938, 0.648438, 0.625, 0.65625, 0.554688, 0.59375, 0.648438, 0.65625, + 0.664062, 0.664062, 0.625, 0.667969, 0.664062, 0.667969, 0.546875, 0.640625, 0.667969, 0.667969, + 0.648438, 0.664062, 0.609375, 0.664062, 0.65625, 0.667969, 0.546875, 0.625, 0.667969, 0.667969, + 0.632812, 0.648438, 0.59375, 0.65625, 0.640625, 0.664062, 0.554688, 0.609375, 0.664062, 0.664062, + 0.617188, 0.632812, 0.585938, 0.648438, 0.625, 0.65625, 0.554688, 0.59375, 0.648438, 0.65625, 0.601562, 0.617188, 0.578125, 0.632812, 0.609375, 0.640625, 0.554688, 0.585938, 0.640625, 0.640625, - 0.554688, 0.640625, 0.609375, 0.632812, 0.640625, 0.632812, 0.5625, 0.648438, 0.617188, 0.65625, - 0.554688, 0.648438, 0.625, 0.648438, 0.65625, 0.648438, 0.5625, 0.65625, 0.632812, 0.664062, - 0.546875, 0.664062, 0.640625, 0.664062, 0.664062, 0.65625, 0.5625, 0.664062, 0.648438, 0.667969, - 0.539062, 0.667969, 0.648438, 0.667969, 0.667969, 0.664062, 0.570312, 0.667969, 0.65625, 0.667969, + 0.554688, 0.640625, 0.609375, 0.632812, 0.640625, 0.632812, 0.5625, 0.648438, 0.617188, 0.65625, + 0.554688, 0.648438, 0.625, 0.648438, 0.65625, 0.648438, 0.5625, 0.65625, 0.632812, 0.664062, + 0.546875, 0.664062, 0.640625, 0.664062, 0.664062, 0.65625, 0.5625, 0.664062, 0.648438, 0.667969, + 0.539062, 0.667969, 0.648438, 0.667969, 0.667969, 0.664062, 0.570312, 0.667969, 0.65625, 0.667969, 0.539062, 0.667969, 0.664062, 0.667969, 0.667969, 0.667969, 0.570312, 0.667969, 0.664062, 0.667969}, std::vector{ - 0.554688, 0.65625, 0.601562, 0.59375, 0.632812, 0.648438, 0.640625, 0.585938, 0.625, 0.640625, - 0.65625, 0.554688, 0.632812, 0.609375, 0.617188, 0.585938, 0.601562, 0.632812, 0.632812, 0.632812, - 0.601562, 0.648438, 0.640625, 0.554688, 0.65625, 0.65625, 0.554688, 0.648438, 0.648438, 0.640625, - 0.585938, 0.632812, 0.65625, 0.648438, 0.648438, 0.570312, 0.648438, 0.648438, 0.640625, 0.632812, - 0.585938, 0.648438, 0.632812, 0.609375, 0.648438, 0.640625, 0.5625, 0.5625, 0.585938, 0.617188, - 0.648438, 0.648438, 0.625, 0.585938, 0.65625, 0.617188, 0.59375, 0.65625, 0.59375, 0.554688, + 0.554688, 0.65625, 0.601562, 0.59375, 0.632812, 0.648438, 0.640625, 0.585938, 0.625, 0.640625, + 0.65625, 0.554688, 0.632812, 0.609375, 0.617188, 0.585938, 0.601562, 0.632812, 0.632812, 0.632812, + 0.601562, 0.648438, 0.640625, 0.554688, 0.65625, 0.65625, 0.554688, 0.648438, 0.648438, 0.640625, + 0.585938, 0.632812, 0.65625, 0.648438, 0.648438, 0.570312, 0.648438, 0.648438, 0.640625, 0.632812, + 0.585938, 0.648438, 0.632812, 0.609375, 0.648438, 0.640625, 0.5625, 0.5625, 0.585938, 0.617188, + 0.648438, 0.648438, 0.625, 0.585938, 0.65625, 0.617188, 0.59375, 0.65625, 0.59375, 0.554688, 0.648438, 0.632812, 0.648438, 0.609375, 0.601562, 0.601562, 0.609375, 0.648438, 0.640625, 0.648438, - 0.65625, 0.632812, 0.632812, 0.625, 0.632812, 0.640625, 0.625, 0.585938, 0.625, 0.609375, + 0.65625, 0.632812, 0.632812, 0.625, 0.632812, 0.640625, 0.625, 0.585938, 0.625, 0.609375, 0.601562, 0.617188, 0.578125, 0.632812, 0.609375, 0.640625, 0.554688, 0.585938, 0.640625, 0.640625, - 0.554688, 0.640625, 0.609375, 0.632812, 0.640625, 0.632812, 0.5625, 0.648438, 0.617188, 0.65625}, - std::vector{ - 1.1875, 2.3125, 1.5, 1.45312, 1.84375, 2.29688, 2.03125, 1.39062, 1.76562, 2.03125, - 2.35938, 1.1875, 1.84375, 1.57812, 1.60938, 1.375, 1.48438, 1.90625, 1.90625, 1.79688, - 1.48438, 2.0625, 1.92188, 1.19531, 2.35938, 2.35938, 1.20312, 2.0625, 2.0625, 1.9375, - 1.35156, 1.84375, 2.35938, 2.23438, 2.10938, 1.30469, 2.125, 2.23438, 1.92188, 1.84375, - 1.35156, 2.10938, 1.90625, 1.5625, 2.23438, 1.98438, 1.24219, 1.22656, 1.375, 1.67188, - 2.23438, 2.17188, 1.70312, 1.375, 2.3125, 1.60938, 1.45312, 2.35938, 1.4375, 1.21875, - 2.23438, 1.78125, 2.0625, 1.57812, 1.5, 1.51562, 1.57812, 2.10938, 1.9375, 2.29688, - 2.35938, 1.79688, 1.89062, 1.73438, 1.8125, 1.95312, 1.70312, 1.40625, 1.73438, 1.57812, - 1.5, 1.64062, 1.32031, 1.79688, 1.54688, 2.03125, 1.20312, 1.35938, 1.9375, 1.95312, - 1.1875, 1.9375, 1.54688, 1.89062, 2, 1.78125, 1.22656, 2.15625, 1.59375, 2.35938}), + 0.554688, 0.640625, 0.609375, 0.632812, 0.640625, 0.632812, 0.5625, 0.648438, 0.617188, 0.65625}, + std::vector{1.1875, 2.3125, 1.5, 1.45312, 1.84375, 2.29688, 2.03125, 1.39062, 1.76562, 2.03125, + 2.35938, 1.1875, 1.84375, 1.57812, 1.60938, 1.375, 1.48438, 1.90625, 1.90625, 1.79688, + 1.48438, 2.0625, 1.92188, 1.19531, 2.35938, 2.35938, 1.20312, 2.0625, 2.0625, 1.9375, + 1.35156, 1.84375, 2.35938, 2.23438, 2.10938, 1.30469, 2.125, 2.23438, 1.92188, 1.84375, + 1.35156, 2.10938, 1.90625, 1.5625, 2.23438, 1.98438, 1.24219, 1.22656, 1.375, 1.67188, + 2.23438, 2.17188, 1.70312, 1.375, 2.3125, 1.60938, 1.45312, 2.35938, 1.4375, 1.21875, + 2.23438, 1.78125, 2.0625, 1.57812, 1.5, 1.51562, 1.57812, 2.10938, 1.9375, 2.29688, + 2.35938, 1.79688, 1.89062, 1.73438, 1.8125, 1.95312, 1.70312, 1.40625, 1.73438, 1.57812, + 1.5, 1.64062, 1.32031, 1.79688, 1.54688, 2.03125, 1.20312, 1.35938, 1.9375, 1.95312, + 1.1875, 1.9375, 1.54688, 1.89062, 2, 1.78125, 1.22656, 2.15625, 1.59375, 2.35938}), }; return params; } @@ -1838,755 +2005,716 @@ template std::vector generateV1Params() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ LSTMSequenceV1Params( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, - std::vector{ - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{ + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, + std::vector{0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, std::vector{ 0.528016, 0.668187, 0.668186, 0.635471, 0.668187, 0.659096, 0.666861, 0.666715, 0.668138, 0.668186, - 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, - 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, + 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, + 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, 0.551576, 0.664629, 0.663703, 0.592106, 0.664652, 0.615579, 0.638092, 0.637163, 0.656733, 0.663751, 0.554596, 0.656917, 0.655047, 0.582718, 0.656967, 0.601233, 0.621878, 0.620939, 0.643723, 0.65514, 0.556574, 0.643984, 0.641397, 0.575854, 0.644055, 0.589658, 0.606642, 0.605821, 0.627796, 0.641522, 0.557878, 0.628081, 0.625301, 0.570987, 0.628158, 0.580903, 0.593915, 0.593262, 0.611954, 0.625433, 0.558742, 0.612216, 0.609684, 0.567605, 0.612287, 0.574556, 0.584071, 0.583581, 0.598219, 0.609803, - 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, - 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, - 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, - 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, - 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, + 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, + 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, + 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, + 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, + 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, + 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, + 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, 0.637519, 0.598314, 0.617618, 0.610903, 0.588883, 0.618381, 0.640604, 0.612099, 0.609772, 0.641672, 0.621298, 0.587406, 0.602959, 0.597357, 0.580333, 0.603611, 0.624467, 0.598338, 0.596436, 0.625592, - 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, + 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, 0.593511, 0.573381, 0.581898, 0.578717, 0.569797, 0.582278, 0.595758, 0.579264, 0.578207, 0.596577, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, + 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, + 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, 0.667915, 0.667737, 0.667963, 0.603963, 0.665981, 0.668052, 0.668006, 0.668007, 0.652525, 0.585315, - 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, + 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, 0.660409, 0.658471, 0.661057, 0.582484, 0.648575, 0.662479, 0.661698, 0.661709, 0.621887, 0.572305, - 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, - 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, - 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, - 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, - 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, + 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, + 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, + 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, + 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, + 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, + 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, 0.668139, 0.668063, 0.668139, 0.667082, 0.653793, 0.663397, 0.640434, 0.668175, 0.667092, 0.571849, 0.667538, 0.666978, 0.667544, 0.663011, 0.639734, 0.654459, 0.624289, 0.667925, 0.663042, 0.5682, - 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, - 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, - 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, + 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, + 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, + 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, 0.627845, 0.622696, 0.627915, 0.608056, 0.584968, 0.595763, 0.577763, 0.634345, 0.608125, 0.562048, - 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, + 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, 0.598256, 0.594491, 0.598309, 0.584924, 0.572127, 0.577836, 0.568532, 0.603413, 0.584966, 0.561173, 0.587362, 0.584504, 0.587403, 0.577445, 0.568392, 0.572381, 0.565918, 0.591359, 0.577475, 0.560938, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, - 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, - 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, - 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, - 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, - 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, - 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, + 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, + 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, + 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, + 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, + 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, + 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, + 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, 0.596018, 0.597785, 0.578369, 0.586822, 0.573683, 0.563901, 0.588076, 0.565458, 0.608505, 0.612324, - 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, - 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, - 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, - 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, - 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), + 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, + 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, + 0.585993, 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, + 0.572642, 0.586082, 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, + 0.583345, 0.568079, 0.561569, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, + 0.564137, 0.582163, 0.572127, 0.560781, 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, + 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, + 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, + 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, + 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, + 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), LSTMSequenceV1Params( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 9.01139, 2.17637, 1.35784, 8.43793, 5.7887, 9.60679, 5.15734, 9.31364, 4.36529, - 2.39476, 9.03109, 1.24111, 3.62352, 4.5887, 8.2656, 6.64385, 9.17132, 6.00758, 8.55927, - 1.45439, 8.25611, 9.37734, 4.27627, 7.21853, 2.16383, 8.49418, 3.86518, 7.63482, 6.37093, - 4.27336, 8.15473, 7.28633, 8.39691, 9.09519, 8.48709, 9.18962, 9.77422, 6.90508, 8.30791, - 1.9247, 3.13776, 4.41411, 7.29312, 5.36451, 4.737, 6.74796, 7.83361, 6.01771, 7.2411, - 9.21933, 1.22152, 8.5364, 4.44885, 3.68894, 1.05667, 4.93802, 7.64144, 4.38184, 5.43925, - 1.12636, 3.24493, 4.12422, 8.17018, 9.44559, 1.9047, 7.61862, 9.78793, 7.35297, 9.56588, - 9.35063, 4.69028, 4.04285, 7.92198, 4.01183, 1.74418, 9.08702, 8.08601, 7.45719, 4.99591, - 7.75803, 6.92108, 4.24628, 4.40491, 6.84669, 1.50073, 1.70433, 1.82713, 8.24594, 1.58777, - 3.01887, 2.3692, 7.12532, 2.13363, 3.31622, 4.94171, 1.98701, 3.83109, 4.15659, 7.85029, - 1.88966, 9.38314, 3.93471, 4.83972, 3.43613, 8.09299, 5.07992, 1.74912, 1.63339, 3.96774, - 2.72895, 8.54079, 1.55517, 5.98811, 6.1355, 5.15899, 9.53946, 4.10297, 8.96004, 4.87936, - 9.95032, 8.20453, 9.4747, 4.41532, 4.64882, 3.58199, 5.05481, 7.886, 6.21909, 4.40311, - 6.60154, 7.65255, 9.22045, 5.78893, 5.66039, 1.92328, 2.09503, 6.79327, 5.01368, 1.68692, - 2.37312, 1.71557, 8.91434, 2.45326, 9.30656, 1.03221, 8.22342, 3.7318, 3.20279, 7.9139, - 7.33134, 8.97559, 9.21827, 3.0278, 4.79335, 2.49276, 2.89751, 8.55908, 9.23905, 7.13432, - 4.68331, 2.99916, 8.5177, 7.99063, 7.63611, 8.72832, 9.7526, 4.68963, 6.37313, 7.64598, - 3.40039, 7.8682, 9.37453, 8.8722, 2.04547, 9.7056, 3.72689, 6.48114, 2.50981, 8.72583, - 7.53753, 1.58606, 5.66289, 6.35937, 5.1213, 6.33018, 3.8751, 8.37849, 1.83465, 2.59183, - 2.98641, 5.26684, 9.25707, 9.92382, 6.43793, 9.28502, 4.29972, 1.07022, 6.89515, 2.51248, - 5.46812, 8.11724, 8.36165, 4.30087, 2.15868, 2.77405, 1.18806, 6.7019, 5.30756, 2.91198, - 3.38931, 2.69973, 9.00829, 7.44529, 1.61716, 3.21075, 9.2832, 2.84414, 5.19293, 7.86764, - 5.7913, 5.9592, 3.11618, 3.48381, 1.15161, 4.80193, 1.42298, 1.5328, 3.87086, 4.98756, - 2.51724, 3.71195, 5.04463, 5.25773, 7.33799, 7.30576, 6.34285, 9.75641, 6.9596, 8.90033, - 4.72902, 8.18267, 2.2418, 3.35014, 3.04117, 5.79207, 7.25244, 3.19579, 2.75589, 8.11128, - 4.64842, 4.91573, 6.63745, 7.10935, 4.88308, 3.6566, 9.97556, 2.77547, 6.02164, 5.25801, - 1.79881, 3.81268, 6.38811, 1.44305, 4.31185, 2.15409, 1.23393, 7.58904, 3.36874, 7.40332, - 7.09691, 8.38579, 8.11905, 6.45184, 5.53603, 4.87629, 1.90757, 5.37873, 4.60355, 6.28454, - 4.99743, 3.10531, 6.7079, 3.06309, 3.26306, 9.80713, 5.01942, 1.72799, 2.07818, 5.165, - 8.00637, 4.58645, 6.62034, 8.186, 5.45095, 1.33642, 7.47286, 7.24008, 3.83915, 8.52919, - 1.36359, 6.66642, 1.19573, 7.67591, 4.57269, 5.67623, 5.17782, 7.06703, 8.65317, 3.84445, - 3.84243, 2.50624, 7.1609, 8.36409, 2.64523, 1.31036, 5.58945, 8.00466, 6.54905, 9.4617, - 3.05165, 8.04617, 4.70239, 7.24866, 3.25719, 5.56595, 3.52864, 2.96697, 9.31387, 8.00382, - 3.33332, 3.04412, 8.14064, 2.59336, 3.64721, 8.35451, 5.01581, 8.64861, 9.45624, 2.77414, - 9.3333, 4.61045, 5.21279, 3.02345, 7.42243, 6.76596, 9.21848, 5.45899, 3.14613, 7.12242, - 6.83178, 7.91725, 6.55954, 7.36386, 7.03253, 5.3523, 9.22608, 1.25059, 9.13047, 5.01358, - 5.90091, 1.1757, 8.76586, 6.71301, 5.49807, 4.45839, 1.03715, 7.6203, 3.26509, 9.74689, - 1.83018, 5.18702, 6.68799, 4.48163, 2.42089, 5.30825, 5.84336, 9.5668, 7.15807, 5.12003, - 5.16425, 2.6135, 9.8642, 9.98883, 6.88379, 8.29995, 3.92791, 1.55486, 2.2537, 2.82402, - 1.36006, 7.34118, 2.78316, 3.29005, 8.66468, 6.91618, 8.25624, 3.83807, 8.26726, 8.96759, - 7.16978, 8.17155, 8.87641, 3.85817, 8.6441, 8.24388, 6.1418, 1.95616, 7.79479, 7.36882, - 2.6179, 8.65872, 8.42148, 9.20951, 8.70195, 2.93495, 4.03916, 1.35492, 3.11572, 2.12385, - 3.49692, 4.94849, 8.73938, 3.90629, 9.88792, 9.68755, 7.25734, 7.03253, 1.32517, 8.06911, - 5.75969, 7.05649, 4.8373, 1.3598, 6.80822, 6.11809, 7.34439, 7.33369, 3.03278, 9.86214, - 2.06297, 2.84922, 9.57812, 9.41124, 4.04918, 9.3727, 1.93448, 2.13315, 4.97116, 6.6088, - 6.47021, 2.53016, 3.99592, 2.34172, 9.62384, 1.58149, 2.05354, 5.14612, 4.35021, 9.56793, - 6.21989, 2.20648, 1.51876, 6.8966, 7.39606, 4.64265, 6.94228, 8.60179, 9.89539, 9.59615, - 7.603, 3.64753, 7.34614, 5.50653, 4.01763, 5.71267, 9.066, 9.4331, 5.01289, 7.5353, - 8.26267, 2.76396, 5.91656, 2.34152, 2.68611, 4.44968, 1.5141, 7.10457, 8.98883, 4.09502, - 3.31662, 2.07621, 4.61676, 4.031, 1.73292, 6.67114, 6.06446, 1.68369, 1.67308, 10}, - std::vector{ - 1, 5.58749, 2.65019, 8.27893, 9.44007, 1.26646, 8.06485, 2.4749, 4.90466, 6.16841, - 2.9532, 8.47611, 3.69586, 4.24748, 8.82421, 1.1096, 7.07798, 5.33121, 9.7954, 2.89868, - 2.92113, 9.4959, 3.93547, 9.87516, 4.936, 9.68846, 3.32138, 7.8397, 2.73004, 3.54654, - 7.92584, 1.07364, 4.17543, 3.10202, 4.46595, 1.98213, 4.66613, 4.64841, 7.93022, 8.57683, - 4.53797, 5.19696, 1.93621, 2.71692, 7.05413, 5.27169, 8.21389, 3.22891, 7.67315, 10}, - std::vector{ - 1, 2.13438, 5.72392, 9.79342, 4.95939, 5.88606, 6.28873, 1.5905, 7.75203, 6.46966, - 6.53091, 9.13469, 9.27454, 2.62106, 7.6413, 1.27291, 3.02471, 3.92884, 4.92038, 3.27424, - 4.38241, 3.92348, 8.37897, 7.96488, 3.12631, 1.32181, 4.02546, 8.84497, 3.27456, 8.2492, - 5.84422, 9.0774, 6.26614, 7.29545, 7.53335, 1.48872, 5.71874, 6.43082, 9.68644, 3.70349, - 3.64883, 9.97216, 5.6593, 7.06806, 5.38156, 4.63353, 4.82144, 1.5192, 8.87038, 10}, + 1, 9.01139, 2.17637, 1.35784, 8.43793, 5.7887, 9.60679, 5.15734, 9.31364, 4.36529, 2.39476, + 9.03109, 1.24111, 3.62352, 4.5887, 8.2656, 6.64385, 9.17132, 6.00758, 8.55927, 1.45439, 8.25611, + 9.37734, 4.27627, 7.21853, 2.16383, 8.49418, 3.86518, 7.63482, 6.37093, 4.27336, 8.15473, 7.28633, + 8.39691, 9.09519, 8.48709, 9.18962, 9.77422, 6.90508, 8.30791, 1.9247, 3.13776, 4.41411, 7.29312, + 5.36451, 4.737, 6.74796, 7.83361, 6.01771, 7.2411, 9.21933, 1.22152, 8.5364, 4.44885, 3.68894, + 1.05667, 4.93802, 7.64144, 4.38184, 5.43925, 1.12636, 3.24493, 4.12422, 8.17018, 9.44559, 1.9047, + 7.61862, 9.78793, 7.35297, 9.56588, 9.35063, 4.69028, 4.04285, 7.92198, 4.01183, 1.74418, 9.08702, + 8.08601, 7.45719, 4.99591, 7.75803, 6.92108, 4.24628, 4.40491, 6.84669, 1.50073, 1.70433, 1.82713, + 8.24594, 1.58777, 3.01887, 2.3692, 7.12532, 2.13363, 3.31622, 4.94171, 1.98701, 3.83109, 4.15659, + 7.85029, 1.88966, 9.38314, 3.93471, 4.83972, 3.43613, 8.09299, 5.07992, 1.74912, 1.63339, 3.96774, + 2.72895, 8.54079, 1.55517, 5.98811, 6.1355, 5.15899, 9.53946, 4.10297, 8.96004, 4.87936, 9.95032, + 8.20453, 9.4747, 4.41532, 4.64882, 3.58199, 5.05481, 7.886, 6.21909, 4.40311, 6.60154, 7.65255, + 9.22045, 5.78893, 5.66039, 1.92328, 2.09503, 6.79327, 5.01368, 1.68692, 2.37312, 1.71557, 8.91434, + 2.45326, 9.30656, 1.03221, 8.22342, 3.7318, 3.20279, 7.9139, 7.33134, 8.97559, 9.21827, 3.0278, + 4.79335, 2.49276, 2.89751, 8.55908, 9.23905, 7.13432, 4.68331, 2.99916, 8.5177, 7.99063, 7.63611, + 8.72832, 9.7526, 4.68963, 6.37313, 7.64598, 3.40039, 7.8682, 9.37453, 8.8722, 2.04547, 9.7056, + 3.72689, 6.48114, 2.50981, 8.72583, 7.53753, 1.58606, 5.66289, 6.35937, 5.1213, 6.33018, 3.8751, + 8.37849, 1.83465, 2.59183, 2.98641, 5.26684, 9.25707, 9.92382, 6.43793, 9.28502, 4.29972, 1.07022, + 6.89515, 2.51248, 5.46812, 8.11724, 8.36165, 4.30087, 2.15868, 2.77405, 1.18806, 6.7019, 5.30756, + 2.91198, 3.38931, 2.69973, 9.00829, 7.44529, 1.61716, 3.21075, 9.2832, 2.84414, 5.19293, 7.86764, + 5.7913, 5.9592, 3.11618, 3.48381, 1.15161, 4.80193, 1.42298, 1.5328, 3.87086, 4.98756, 2.51724, + 3.71195, 5.04463, 5.25773, 7.33799, 7.30576, 6.34285, 9.75641, 6.9596, 8.90033, 4.72902, 8.18267, + 2.2418, 3.35014, 3.04117, 5.79207, 7.25244, 3.19579, 2.75589, 8.11128, 4.64842, 4.91573, 6.63745, + 7.10935, 4.88308, 3.6566, 9.97556, 2.77547, 6.02164, 5.25801, 1.79881, 3.81268, 6.38811, 1.44305, + 4.31185, 2.15409, 1.23393, 7.58904, 3.36874, 7.40332, 7.09691, 8.38579, 8.11905, 6.45184, 5.53603, + 4.87629, 1.90757, 5.37873, 4.60355, 6.28454, 4.99743, 3.10531, 6.7079, 3.06309, 3.26306, 9.80713, + 5.01942, 1.72799, 2.07818, 5.165, 8.00637, 4.58645, 6.62034, 8.186, 5.45095, 1.33642, 7.47286, + 7.24008, 3.83915, 8.52919, 1.36359, 6.66642, 1.19573, 7.67591, 4.57269, 5.67623, 5.17782, 7.06703, + 8.65317, 3.84445, 3.84243, 2.50624, 7.1609, 8.36409, 2.64523, 1.31036, 5.58945, 8.00466, 6.54905, + 9.4617, 3.05165, 8.04617, 4.70239, 7.24866, 3.25719, 5.56595, 3.52864, 2.96697, 9.31387, 8.00382, + 3.33332, 3.04412, 8.14064, 2.59336, 3.64721, 8.35451, 5.01581, 8.64861, 9.45624, 2.77414, 9.3333, + 4.61045, 5.21279, 3.02345, 7.42243, 6.76596, 9.21848, 5.45899, 3.14613, 7.12242, 6.83178, 7.91725, + 6.55954, 7.36386, 7.03253, 5.3523, 9.22608, 1.25059, 9.13047, 5.01358, 5.90091, 1.1757, 8.76586, + 6.71301, 5.49807, 4.45839, 1.03715, 7.6203, 3.26509, 9.74689, 1.83018, 5.18702, 6.68799, 4.48163, + 2.42089, 5.30825, 5.84336, 9.5668, 7.15807, 5.12003, 5.16425, 2.6135, 9.8642, 9.98883, 6.88379, + 8.29995, 3.92791, 1.55486, 2.2537, 2.82402, 1.36006, 7.34118, 2.78316, 3.29005, 8.66468, 6.91618, + 8.25624, 3.83807, 8.26726, 8.96759, 7.16978, 8.17155, 8.87641, 3.85817, 8.6441, 8.24388, 6.1418, + 1.95616, 7.79479, 7.36882, 2.6179, 8.65872, 8.42148, 9.20951, 8.70195, 2.93495, 4.03916, 1.35492, + 3.11572, 2.12385, 3.49692, 4.94849, 8.73938, 3.90629, 9.88792, 9.68755, 7.25734, 7.03253, 1.32517, + 8.06911, 5.75969, 7.05649, 4.8373, 1.3598, 6.80822, 6.11809, 7.34439, 7.33369, 3.03278, 9.86214, + 2.06297, 2.84922, 9.57812, 9.41124, 4.04918, 9.3727, 1.93448, 2.13315, 4.97116, 6.6088, 6.47021, + 2.53016, 3.99592, 2.34172, 9.62384, 1.58149, 2.05354, 5.14612, 4.35021, 9.56793, 6.21989, 2.20648, + 1.51876, 6.8966, 7.39606, 4.64265, 6.94228, 8.60179, 9.89539, 9.59615, 7.603, 3.64753, 7.34614, + 5.50653, 4.01763, 5.71267, 9.066, 9.4331, 5.01289, 7.5353, 8.26267, 2.76396, 5.91656, 2.34152, + 2.68611, 4.44968, 1.5141, 7.10457, 8.98883, 4.09502, 3.31662, 2.07621, 4.61676, 4.031, 1.73292, + 6.67114, 6.06446, 1.68369, 1.67308, 10}, + std::vector{1, 5.58749, 2.65019, 8.27893, 9.44007, 1.26646, 8.06485, 2.4749, 4.90466, 6.16841, + 2.9532, 8.47611, 3.69586, 4.24748, 8.82421, 1.1096, 7.07798, 5.33121, 9.7954, 2.89868, + 2.92113, 9.4959, 3.93547, 9.87516, 4.936, 9.68846, 3.32138, 7.8397, 2.73004, 3.54654, + 7.92584, 1.07364, 4.17543, 3.10202, 4.46595, 1.98213, 4.66613, 4.64841, 7.93022, 8.57683, + 4.53797, 5.19696, 1.93621, 2.71692, 7.05413, 5.27169, 8.21389, 3.22891, 7.67315, 10}, + std::vector{1, 2.13438, 5.72392, 9.79342, 4.95939, 5.88606, 6.28873, 1.5905, 7.75203, 6.46966, + 6.53091, 9.13469, 9.27454, 2.62106, 7.6413, 1.27291, 3.02471, 3.92884, 4.92038, 3.27424, + 4.38241, 3.92348, 8.37897, 7.96488, 3.12631, 1.32181, 4.02546, 8.84497, 3.27456, 8.2492, + 5.84422, 9.0774, 6.26614, 7.29545, 7.53335, 1.48872, 5.71874, 6.43082, 9.68644, 3.70349, + 3.64883, 9.97216, 5.6593, 7.06806, 5.38156, 4.63353, 4.82144, 1.5192, 8.87038, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 1.58235, 1.55715, 9.0725, 8.98434, 6.0259, 2.20956, 5.69598, 5.591, 6.22866, - 3.83043, 8.99042, 6.79015, 5.47362, 3.85033, 1.58001, 6.00399, 9.53966, 8.35195, 2.33561, - 1.43071, 1.10545, 8.23914, 6.88122, 6.16229, 8.65462, 6.19589, 6.19551, 6.01633, 1.76164, - 1.41133, 4.00032, 6.57013, 8.26936, 2.40101, 5.56064, 7.65621, 6.99739, 9.24985, 7.03113, - 5.93531, 6.88895, 7.564, 2.08789, 2.45067, 3.77189, 3.5213, 2.5474, 9.17393, 1.93798, - 4.21552, 4.85012, 3.77817, 2.85546, 3.31723, 4.22566, 8.43396, 6.62641, 9.08403, 9.44927, - 1.33493, 8.96543, 7.55197, 5.28736, 8.38082, 6.82582, 5.29947, 1.47086, 8.33883, 7.2491, - 3.31591, 8.50679, 8.86211, 9.69074, 3.66469, 2.50035, 6.15909, 5.2076, 6.19304, 7.92893, - 9.66382, 7.84886, 9.71917, 2.05874, 6.53135, 9.86027, 5.8924, 5.54567, 4.07782, 1.47401, - 8.71301, 1.85602, 2.73131, 8.98951, 9.9603, 4.3386, 2.81821, 4.36272, 8.3821, 6.64452, - 7.2118, 7.08588, 5.82932, 8.86502, 3.84654, 3.91562, 4.59225, 2.60513, 2.9141, 1.26067, - 9.29858, 9.185, 5.25551, 5.91884, 9.76741, 7.30087, 9.09672, 5.58644, 1.33538, 8.97838, - 8.66129, 8.42606, 6.67734, 5.21469, 3.2893, 7.15482, 6.68333, 6.23113, 1.40497, 3.50662, - 1.04018, 2.64265, 4.43901, 1.74996, 7.92567, 6.25056, 1.80776, 2.43364, 4.19004, 7.16324, - 8.38644, 7.33103, 3.31969, 7.42022, 7.87053, 8.559, 6.21006, 6.56629, 7.032, 5.21333, - 4.12916, 1.09792, 4.91183, 9.98769, 2.63651, 7.47683, 4.09084, 1.11776, 4.98008, 2.05417, - 3.81136, 3.78223, 8.9567, 3.69608, 9.82358, 4.15339, 1.55375, 2.58225, 5.35357, 9.96, - 2.63519, 8.34962, 1.67387, 6.97949, 1.52856, 6.16907, 7.26676, 3.61943, 7.54626, 7.8529, - 9.92461, 5.79463, 4.32859, 7.80883, 2.21124, 3.19625, 8.26345, 3.0258, 4.14905, 4.44074, - 4.40667, 4.3796, 2.65345, 7.52455, 7.24033, 8.20462, 2.70815, 2.24004, 9.89098, 3.3111, - 2.78455, 7.33025, 1.03654, 3.16342, 3.15485, 4.65602, 2.89809, 8.78445, 3.82711, 4.03929, - 5.06706, 7.46336, 2.99334, 6.76448, 5.71191, 5.12153, 5.43331, 1.77758, 6.66328, 3.8654, - 8.21078, 6.80763, 5.15698, 7.09883, 8.90826, 2.80116, 2.05896, 9.43922, 5.59127, 5.10843, - 5.39114, 4.77302, 6.52344, 5.95818, 7.42981, 7.35046, 8.61927, 3.56677, 6.74051, 2.3789, - 8.38043, 4.82216, 4.56786, 3.11453, 4.62395, 1.9779, 6.291, 4.57929, 2.53787, 8.10957, - 1.59414, 1.89001, 7.30965, 2.15147, 4.07816, 8.95942, 9.95274, 9.7535, 6.60151, 6.62482, - 8.13667, 5.02444, 8.33802, 9.46244, 1.53285, 4.86751, 9.00238, 3.6553, 6.14745, 9.38268, - 6.13151, 1.34703, 6.85186, 1.27094, 5.87562, 6.37423, 9.46726, 6.16143, 1.46485, 2.33172, - 4.72484, 2.58218, 8.77431, 2.26195, 2.80098, 6.5379, 9.76863, 2.67786, 1.50383, 9.24777, - 6.70801, 2.48443, 2.93425, 8.84472, 9.48241, 2.54342, 3.29629, 2.93909, 2.07659, 3.51105, - 8.05238, 6.52768, 2.89578, 9.46054, 9.42958, 4.99612, 3.72457, 1.09732, 5.46821, 8.3767, - 4.9284, 4.52297, 9.06671, 3.55751, 7.85551, 9.26148, 8.87619, 3.91563, 8.93108, 7.12851, - 7.38578, 6.00562, 9.88357, 5.96685, 7.98384, 7.18464, 2.08388, 4.19079, 7.13242, 5.10029, - 5.59207, 7.5696, 2.09462, 8.23487, 5.4306, 5.08607, 7.20121, 3.42059, 9.09514, 2.47813, - 7.56546, 3.04737, 4.75688, 6.15676, 5.44893, 6.38723, 5.49974, 9.74185, 2.04256, 6.03927, - 1.62865, 1.22683, 8.57313, 8.65697, 7.51196, 7.66841, 5.93585, 1.01738, 5.79587, 8.98536, - 5.72791, 4.97014, 1.33971, 9.76335, 9.01953, 3.47976, 3.0864, 9.17127, 7.85755, 8.21389, - 2.65647, 8.53283, 6.75763, 5.86692, 4.59959, 4.11153, 4.10978, 6.27941, 8.43579, 8.336, - 9.45283, 1.3166, 3.15401, 9.04877, 7.89529, 1.45832, 2.84421, 4.97627, 4.67164, 8.28176, - 9.46578, 2.64635, 3.16345, 1.4227, 5.32832, 9.22188, 8.92144, 6.89066, 2.86784, 10}, - std::vector{ - 1, 4.54659, 6.32448, 5.40494, 9.86159, 9.07852, 3.05904, 9.77817, 3.49926, 7.63737, - 2.39762, 6.18958, 6.24331, 8.25735, 6.53109, 2.65972, 8.42707, 4.09645, 9.46241, 6.56499, - 7.61151, 2.11518, 8.1123, 4.51095, 5.13355, 8.57515, 7.48222, 8.91597, 2.26922, 1.67127, - 6.20972, 5.51447, 5.59529, 7.6583, 2.97689, 8.74954, 3.53749, 9.36144, 2.86963, 9.2585, - 3.89263, 1.92284, 4.57657, 7.99819, 9.3836, 1.19691, 3.23177, 7.07376, 9.90035, 9.54876, - 1.83406, 2.42544, 2.79611, 4.98123, 2.76576, 5.84942, 8.4264, 9.87311, 2.1547, 6.2748, - 4.04931, 4.64838, 7.61106, 4.25832, 2.01333, 6.23769, 7.10437, 7.40875, 9.62977, 9.96437, - 2.11365, 6.23564, 3.32097, 6.85371, 4.39948, 1.80143, 7.94896, 9.80996, 9.71046, 4.03104, - 8.86624, 9.06961, 1.76453, 6.6127, 3.70704, 8.67179, 6.1986, 2.6383, 9.37425, 2.02916, - 1.8428, 7.76668, 2.05601, 6.04629, 3.92551, 9.68333, 5.45613, 5.21474, 3.96363, 1.65678, - 1.63911, 1.51876, 4.37833, 1.04078, 9.77478, 1.27549, 6.44559, 4.64664, 8.92835, 9.88028, - 9.66077, 6.02858, 3.18563, 1.17797, 3.09603, 5.34818, 9.70473, 2.86306, 5.49366, 1.87064, - 7.23007, 7.76858, 2.00428, 2.48244, 7.78903, 7.90607, 8.06873, 2.52497, 2.49137, 2.61559, - 7.75215, 8.75981, 8.30843, 1.23805, 1.52846, 4.92311, 1.50707, 7.50994, 6.00506, 6.58755, - 2.16225, 5.52023, 5.58397, 1.84541, 8.86125, 8.83867, 1.16775, 7.64101, 6.51206, 9.81013, - 6.88963, 9.05285, 6.21656, 4.52452, 4.71779, 1.10079, 3.99572, 8.55103, 6.94, 5.69519, - 9.61978, 7.20197, 7.85556, 1.7112, 3.44624, 4.25074, 7.87477, 9.34275, 4.44811, 3.02249, - 3.0886, 6.17374, 6.47048, 5.63258, 8.19415, 8.7746, 9.22689, 1.18991, 1.6878, 5.10915, - 1.24905, 7.77101, 6.20286, 4.64343, 4.97444, 2.00702, 4.47644, 1.36942, 1.8044, 7.54883, - 7.56364, 2.33436, 4.36203, 7.75994, 3.35254, 1.30727, 8.72577, 6.31045, 1.73164, 3.10143, - 1.75297, 4.90549, 7.79632, 1.42155, 7.67554, 4.11003, 2.45134, 9.93904, 7.65293, 9.55969, - 9.49092, 1.16254, 5.35432, 5.68326, 2.68756, 9.79784, 8.90456, 4.41579, 3.77757, 6.9883, - 3.48931, 4.08603, 3.56546, 5.56486, 5.24488, 1.48558, 7.22185, 5.38926, 3.353, 8.21195, - 7.22835, 8.65753, 1.14195, 5.16396, 2.29447, 6.81389, 6.12026, 7.23296, 9.03696, 6.15992, - 6.61774, 7.49631, 6.15221, 8.23327, 3.52917, 4.44016, 7.59119, 7.20278, 7.87011, 7.4118, - 4.88929, 7.10041, 8.72445, 9.33136, 9.52693, 7.3276, 8.59106, 5.10541, 6.63513, 6.74733, - 8.23243, 4.2018, 8.18058, 4.31184, 2.65255, 3.67934, 8.10169, 4.09561, 9.69242, 5.3705, - 3.02728, 7.75847, 8.23799, 6.83668, 8.52236, 1.39545, 2.02494, 8.31176, 6.58431, 8.52873, - 7.90275, 5.75623, 6.849, 9.04106, 4.84783, 9.78142, 7.13852, 4.52031, 2.7178, 5.59408, - 8.57777, 9.67441, 7.0772, 5.94922, 2.19153, 2.92101, 5.97566, 4.4292, 5.06291, 4.20734, - 5.03142, 3.77804, 3.11829, 4.04353, 6.05138, 2.68516, 3.14739, 9.85841, 1.97082, 6.71148, - 7.21038, 6.83885, 8.15292, 7.97213, 2.2081, 6.63164, 4.6698, 4.86985, 8.82823, 1.55222, - 5.35014, 1.02844, 2.0888, 5.70194, 3.81421, 1.48773, 8.81108, 7.00017, 9.13739, 9.59582, - 1.4752, 2.15818, 5.04522, 7.42531, 5.22722, 9.60355, 7.67216, 8.76329, 4.73203, 5.84448, - 1.55273, 7.13586, 8.91209, 8.22101, 1.03308, 6.54954, 4.1324, 7.53138, 1.53171, 6.15368, - 4.95754, 6.49698, 9.4097, 4.49705, 1.16446, 1.08714, 5.33318, 7.10617, 4.72117, 3.7985, - 2.59871, 6.15397, 3.56235, 9.46913, 8.74236, 1.13157, 5.54921, 4.62576, 7.72262, 8.03736, - 8.69808, 2.61915, 5.70869, 6.4007, 8.62539, 9.05605, 1.76502, 8.7073, 6.7695, 6.44984, - 3.38996, 8.78573, 4.94558, 9.65115, 2.96345, 4.44614, 2.69691, 3.58606, 4.21715, 5.94832, - 7.18326, 7.90754, 6.07498, 3.91409, 3.49496, 7.76969, 6.89076, 8.57066, 5.35908, 10}, - std::vector{ - 1, 1.08809, 7.34367, 1.84401, 3.65, 7.04672, 9.90727, 2.28341, 8.40458, 4.26864, - 2.12786, 1.3584, 5.67691, 6.93083, 2.5351, 2.80941, 7.32406, 7.16185, 3.82714, 3.52963, - 9.8522, 7.2122, 7.36617, 6.03843, 8.64737, 6.82174, 6.17929, 7.25098, 9.065, 5.62021, - 2.05619, 9.89887, 5.70674, 3.66863, 8.63875, 7.11328, 5.15165, 3.11287, 5.59069, 10}, - std::vector{ - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, - std::vector{ - 0.559698, 0.563643, 0.575276, 0.58701, 0.572904, 0.575772, 0.576994, 0.561768, 0.581308, 0.577538, - 0.559316, 0.56519, 0.581911, 0.597796, 0.578576, 0.582604, 0.584301, 0.562411, 0.590206, 0.585053, + 1, 1.58235, 1.55715, 9.0725, 8.98434, 6.0259, 2.20956, 5.69598, 5.591, 6.22866, 3.83043, + 8.99042, 6.79015, 5.47362, 3.85033, 1.58001, 6.00399, 9.53966, 8.35195, 2.33561, 1.43071, 1.10545, + 8.23914, 6.88122, 6.16229, 8.65462, 6.19589, 6.19551, 6.01633, 1.76164, 1.41133, 4.00032, 6.57013, + 8.26936, 2.40101, 5.56064, 7.65621, 6.99739, 9.24985, 7.03113, 5.93531, 6.88895, 7.564, 2.08789, + 2.45067, 3.77189, 3.5213, 2.5474, 9.17393, 1.93798, 4.21552, 4.85012, 3.77817, 2.85546, 3.31723, + 4.22566, 8.43396, 6.62641, 9.08403, 9.44927, 1.33493, 8.96543, 7.55197, 5.28736, 8.38082, 6.82582, + 5.29947, 1.47086, 8.33883, 7.2491, 3.31591, 8.50679, 8.86211, 9.69074, 3.66469, 2.50035, 6.15909, + 5.2076, 6.19304, 7.92893, 9.66382, 7.84886, 9.71917, 2.05874, 6.53135, 9.86027, 5.8924, 5.54567, + 4.07782, 1.47401, 8.71301, 1.85602, 2.73131, 8.98951, 9.9603, 4.3386, 2.81821, 4.36272, 8.3821, + 6.64452, 7.2118, 7.08588, 5.82932, 8.86502, 3.84654, 3.91562, 4.59225, 2.60513, 2.9141, 1.26067, + 9.29858, 9.185, 5.25551, 5.91884, 9.76741, 7.30087, 9.09672, 5.58644, 1.33538, 8.97838, 8.66129, + 8.42606, 6.67734, 5.21469, 3.2893, 7.15482, 6.68333, 6.23113, 1.40497, 3.50662, 1.04018, 2.64265, + 4.43901, 1.74996, 7.92567, 6.25056, 1.80776, 2.43364, 4.19004, 7.16324, 8.38644, 7.33103, 3.31969, + 7.42022, 7.87053, 8.559, 6.21006, 6.56629, 7.032, 5.21333, 4.12916, 1.09792, 4.91183, 9.98769, + 2.63651, 7.47683, 4.09084, 1.11776, 4.98008, 2.05417, 3.81136, 3.78223, 8.9567, 3.69608, 9.82358, + 4.15339, 1.55375, 2.58225, 5.35357, 9.96, 2.63519, 8.34962, 1.67387, 6.97949, 1.52856, 6.16907, + 7.26676, 3.61943, 7.54626, 7.8529, 9.92461, 5.79463, 4.32859, 7.80883, 2.21124, 3.19625, 8.26345, + 3.0258, 4.14905, 4.44074, 4.40667, 4.3796, 2.65345, 7.52455, 7.24033, 8.20462, 2.70815, 2.24004, + 9.89098, 3.3111, 2.78455, 7.33025, 1.03654, 3.16342, 3.15485, 4.65602, 2.89809, 8.78445, 3.82711, + 4.03929, 5.06706, 7.46336, 2.99334, 6.76448, 5.71191, 5.12153, 5.43331, 1.77758, 6.66328, 3.8654, + 8.21078, 6.80763, 5.15698, 7.09883, 8.90826, 2.80116, 2.05896, 9.43922, 5.59127, 5.10843, 5.39114, + 4.77302, 6.52344, 5.95818, 7.42981, 7.35046, 8.61927, 3.56677, 6.74051, 2.3789, 8.38043, 4.82216, + 4.56786, 3.11453, 4.62395, 1.9779, 6.291, 4.57929, 2.53787, 8.10957, 1.59414, 1.89001, 7.30965, + 2.15147, 4.07816, 8.95942, 9.95274, 9.7535, 6.60151, 6.62482, 8.13667, 5.02444, 8.33802, 9.46244, + 1.53285, 4.86751, 9.00238, 3.6553, 6.14745, 9.38268, 6.13151, 1.34703, 6.85186, 1.27094, 5.87562, + 6.37423, 9.46726, 6.16143, 1.46485, 2.33172, 4.72484, 2.58218, 8.77431, 2.26195, 2.80098, 6.5379, + 9.76863, 2.67786, 1.50383, 9.24777, 6.70801, 2.48443, 2.93425, 8.84472, 9.48241, 2.54342, 3.29629, + 2.93909, 2.07659, 3.51105, 8.05238, 6.52768, 2.89578, 9.46054, 9.42958, 4.99612, 3.72457, 1.09732, + 5.46821, 8.3767, 4.9284, 4.52297, 9.06671, 3.55751, 7.85551, 9.26148, 8.87619, 3.91563, 8.93108, + 7.12851, 7.38578, 6.00562, 9.88357, 5.96685, 7.98384, 7.18464, 2.08388, 4.19079, 7.13242, 5.10029, + 5.59207, 7.5696, 2.09462, 8.23487, 5.4306, 5.08607, 7.20121, 3.42059, 9.09514, 2.47813, 7.56546, + 3.04737, 4.75688, 6.15676, 5.44893, 6.38723, 5.49974, 9.74185, 2.04256, 6.03927, 1.62865, 1.22683, + 8.57313, 8.65697, 7.51196, 7.66841, 5.93585, 1.01738, 5.79587, 8.98536, 5.72791, 4.97014, 1.33971, + 9.76335, 9.01953, 3.47976, 3.0864, 9.17127, 7.85755, 8.21389, 2.65647, 8.53283, 6.75763, 5.86692, + 4.59959, 4.11153, 4.10978, 6.27941, 8.43579, 8.336, 9.45283, 1.3166, 3.15401, 9.04877, 7.89529, + 1.45832, 2.84421, 4.97627, 4.67164, 8.28176, 9.46578, 2.64635, 3.16345, 1.4227, 5.32832, 9.22188, + 8.92144, 6.89066, 2.86784, 10}, + std::vector{ + 1, 4.54659, 6.32448, 5.40494, 9.86159, 9.07852, 3.05904, 9.77817, 3.49926, 7.63737, 2.39762, + 6.18958, 6.24331, 8.25735, 6.53109, 2.65972, 8.42707, 4.09645, 9.46241, 6.56499, 7.61151, 2.11518, + 8.1123, 4.51095, 5.13355, 8.57515, 7.48222, 8.91597, 2.26922, 1.67127, 6.20972, 5.51447, 5.59529, + 7.6583, 2.97689, 8.74954, 3.53749, 9.36144, 2.86963, 9.2585, 3.89263, 1.92284, 4.57657, 7.99819, + 9.3836, 1.19691, 3.23177, 7.07376, 9.90035, 9.54876, 1.83406, 2.42544, 2.79611, 4.98123, 2.76576, + 5.84942, 8.4264, 9.87311, 2.1547, 6.2748, 4.04931, 4.64838, 7.61106, 4.25832, 2.01333, 6.23769, + 7.10437, 7.40875, 9.62977, 9.96437, 2.11365, 6.23564, 3.32097, 6.85371, 4.39948, 1.80143, 7.94896, + 9.80996, 9.71046, 4.03104, 8.86624, 9.06961, 1.76453, 6.6127, 3.70704, 8.67179, 6.1986, 2.6383, + 9.37425, 2.02916, 1.8428, 7.76668, 2.05601, 6.04629, 3.92551, 9.68333, 5.45613, 5.21474, 3.96363, + 1.65678, 1.63911, 1.51876, 4.37833, 1.04078, 9.77478, 1.27549, 6.44559, 4.64664, 8.92835, 9.88028, + 9.66077, 6.02858, 3.18563, 1.17797, 3.09603, 5.34818, 9.70473, 2.86306, 5.49366, 1.87064, 7.23007, + 7.76858, 2.00428, 2.48244, 7.78903, 7.90607, 8.06873, 2.52497, 2.49137, 2.61559, 7.75215, 8.75981, + 8.30843, 1.23805, 1.52846, 4.92311, 1.50707, 7.50994, 6.00506, 6.58755, 2.16225, 5.52023, 5.58397, + 1.84541, 8.86125, 8.83867, 1.16775, 7.64101, 6.51206, 9.81013, 6.88963, 9.05285, 6.21656, 4.52452, + 4.71779, 1.10079, 3.99572, 8.55103, 6.94, 5.69519, 9.61978, 7.20197, 7.85556, 1.7112, 3.44624, + 4.25074, 7.87477, 9.34275, 4.44811, 3.02249, 3.0886, 6.17374, 6.47048, 5.63258, 8.19415, 8.7746, + 9.22689, 1.18991, 1.6878, 5.10915, 1.24905, 7.77101, 6.20286, 4.64343, 4.97444, 2.00702, 4.47644, + 1.36942, 1.8044, 7.54883, 7.56364, 2.33436, 4.36203, 7.75994, 3.35254, 1.30727, 8.72577, 6.31045, + 1.73164, 3.10143, 1.75297, 4.90549, 7.79632, 1.42155, 7.67554, 4.11003, 2.45134, 9.93904, 7.65293, + 9.55969, 9.49092, 1.16254, 5.35432, 5.68326, 2.68756, 9.79784, 8.90456, 4.41579, 3.77757, 6.9883, + 3.48931, 4.08603, 3.56546, 5.56486, 5.24488, 1.48558, 7.22185, 5.38926, 3.353, 8.21195, 7.22835, + 8.65753, 1.14195, 5.16396, 2.29447, 6.81389, 6.12026, 7.23296, 9.03696, 6.15992, 6.61774, 7.49631, + 6.15221, 8.23327, 3.52917, 4.44016, 7.59119, 7.20278, 7.87011, 7.4118, 4.88929, 7.10041, 8.72445, + 9.33136, 9.52693, 7.3276, 8.59106, 5.10541, 6.63513, 6.74733, 8.23243, 4.2018, 8.18058, 4.31184, + 2.65255, 3.67934, 8.10169, 4.09561, 9.69242, 5.3705, 3.02728, 7.75847, 8.23799, 6.83668, 8.52236, + 1.39545, 2.02494, 8.31176, 6.58431, 8.52873, 7.90275, 5.75623, 6.849, 9.04106, 4.84783, 9.78142, + 7.13852, 4.52031, 2.7178, 5.59408, 8.57777, 9.67441, 7.0772, 5.94922, 2.19153, 2.92101, 5.97566, + 4.4292, 5.06291, 4.20734, 5.03142, 3.77804, 3.11829, 4.04353, 6.05138, 2.68516, 3.14739, 9.85841, + 1.97082, 6.71148, 7.21038, 6.83885, 8.15292, 7.97213, 2.2081, 6.63164, 4.6698, 4.86985, 8.82823, + 1.55222, 5.35014, 1.02844, 2.0888, 5.70194, 3.81421, 1.48773, 8.81108, 7.00017, 9.13739, 9.59582, + 1.4752, 2.15818, 5.04522, 7.42531, 5.22722, 9.60355, 7.67216, 8.76329, 4.73203, 5.84448, 1.55273, + 7.13586, 8.91209, 8.22101, 1.03308, 6.54954, 4.1324, 7.53138, 1.53171, 6.15368, 4.95754, 6.49698, + 9.4097, 4.49705, 1.16446, 1.08714, 5.33318, 7.10617, 4.72117, 3.7985, 2.59871, 6.15397, 3.56235, + 9.46913, 8.74236, 1.13157, 5.54921, 4.62576, 7.72262, 8.03736, 8.69808, 2.61915, 5.70869, 6.4007, + 8.62539, 9.05605, 1.76502, 8.7073, 6.7695, 6.44984, 3.38996, 8.78573, 4.94558, 9.65115, 2.96345, + 4.44614, 2.69691, 3.58606, 4.21715, 5.94832, 7.18326, 7.90754, 6.07498, 3.91409, 3.49496, 7.76969, + 6.89076, 8.57066, 5.35908, 10}, + std::vector{1, 1.08809, 7.34367, 1.84401, 3.65, 7.04672, 9.90727, 2.28341, 8.40458, 4.26864, + 2.12786, 1.3584, 5.67691, 6.93083, 2.5351, 2.80941, 7.32406, 7.16185, 3.82714, 3.52963, + 9.8522, 7.2122, 7.36617, 6.03843, 8.64737, 6.82174, 6.17929, 7.25098, 9.065, 5.62021, + 2.05619, 9.89887, 5.70674, 3.66863, 8.63875, 7.11328, 5.15165, 3.11287, 5.59069, 10}, + std::vector{0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, + std::vector{ + 0.559698, 0.563643, 0.575276, 0.58701, 0.572904, 0.575772, 0.576994, 0.561768, 0.581308, 0.577538, + 0.559316, 0.56519, 0.581911, 0.597796, 0.578576, 0.582604, 0.584301, 0.562411, 0.590206, 0.585053, 0.558742, 0.567466, 0.591021, 0.611439, 0.586482, 0.591952, 0.594221, 0.563366, 0.601938, 0.595219, 0.557878, 0.570786, 0.602981, 0.627234, 0.597104, 0.604167, 0.607024, 0.564781, 0.616415, 0.608267, 0.556574, 0.575567, 0.617644, 0.643206, 0.610593, 0.619029, 0.622312, 0.566866, 0.632551, 0.623718, 0.554596, 0.582317, 0.633825, 0.656365, 0.626306, 0.635242, 0.638519, 0.569914, 0.647951, 0.639885, 0.551576, 0.591568, 0.649036, 0.664363, 0.642343, 0.650219, 0.652853, 0.574318, 0.659587, 0.653909, - 0.54692, 0.603678, 0.660274, 0.667486, 0.655742, 0.661, 0.662528, 0.58057, 0.665818, 0.663105, - 0.53964, 0.61846, 0.666097, 0.668132, 0.664056, 0.666378, 0.666924, 0.589205, 0.667845, 0.667113, - 0.528016, 0.634662, 0.667904, 0.668186, 0.6674, 0.667959, 0.668054, 0.60065, 0.668169, 0.668083, + 0.54692, 0.603678, 0.660274, 0.667486, 0.655742, 0.661, 0.662528, 0.58057, 0.665818, 0.663105, + 0.53964, 0.61846, 0.666097, 0.668132, 0.664056, 0.666378, 0.666924, 0.589205, 0.667845, 0.667113, + 0.528016, 0.634662, 0.667904, 0.668186, 0.6674, 0.667959, 0.668054, 0.60065, 0.668169, 0.668083, 0.577721, 0.585209, 0.585595, 0.565295, 0.580988, 0.560659, 0.566647, 0.569616, 0.572781, 0.567475, - 0.585306, 0.595426, 0.595935, 0.56762, 0.589773, 0.560757, 0.569596, 0.573891, 0.578403, 0.570799, - 0.595554, 0.608525, 0.609155, 0.57101, 0.601382, 0.560902, 0.573861, 0.579969, 0.586244, 0.575585, + 0.585306, 0.595426, 0.595935, 0.56762, 0.589773, 0.560757, 0.569596, 0.573891, 0.578403, 0.570799, + 0.595554, 0.608525, 0.609155, 0.57101, 0.601382, 0.560902, 0.573861, 0.579969, 0.586244, 0.575585, 0.608683, 0.624007, 0.624712, 0.575886, 0.615756, 0.561119, 0.579927, 0.588388, 0.596791, 0.582342, - 0.624184, 0.640163, 0.640838, 0.582762, 0.631861, 0.561444, 0.58833, 0.599592, 0.610209, 0.591601, - 0.640334, 0.654121, 0.65463, 0.592165, 0.647355, 0.561928, 0.599517, 0.613615, 0.625882, 0.60372, - 0.65425, 0.663218, 0.663487, 0.604436, 0.659202, 0.562648, 0.613525, 0.629591, 0.641946, 0.618509, + 0.624184, 0.640163, 0.640838, 0.582762, 0.631861, 0.561444, 0.58833, 0.599592, 0.610209, 0.591601, + 0.640334, 0.654121, 0.65463, 0.592165, 0.647355, 0.561928, 0.599517, 0.613615, 0.625882, 0.60372, + 0.65425, 0.663218, 0.663487, 0.604436, 0.659202, 0.562648, 0.613525, 0.629591, 0.641946, 0.618509, 0.663287, 0.667148, 0.667231, 0.619342, 0.665657, 0.563718, 0.629494, 0.645351, 0.655452, 0.634712, - 0.66717, 0.668088, 0.6681, 0.635559, 0.66781, 0.565301, 0.645264, 0.657865, 0.66391, 0.64978, - 0.668091, 0.668185, 0.668185, 0.65048, 0.668166, 0.567629, 0.657805, 0.665069, 0.667358, 0.660733, - 0.571076, 0.569599, 0.583098, 0.58192, 0.566985, 0.560831, 0.569929, 0.584406, 0.567476, 0.58273, - 0.57598, 0.573866, 0.592615, 0.591032, 0.570087, 0.561013, 0.57434, 0.59436, 0.5708, 0.592122, - 0.582893, 0.579934, 0.605006, 0.602996, 0.574566, 0.561285, 0.5806, 0.607198, 0.575587, 0.604382, - 0.592341, 0.58834, 0.620001, 0.617661, 0.580918, 0.561691, 0.589246, 0.622511, 0.582345, 0.619279, - 0.60466, 0.59953, 0.636224, 0.633842, 0.589678, 0.562296, 0.600703, 0.638713, 0.591605, 0.635496, + 0.66717, 0.668088, 0.6681, 0.635559, 0.66781, 0.565301, 0.645264, 0.657865, 0.66391, 0.64978, + 0.668091, 0.668185, 0.668185, 0.65048, 0.668166, 0.567629, 0.657805, 0.665069, 0.667358, 0.660733, + 0.571076, 0.569599, 0.583098, 0.58192, 0.566985, 0.560831, 0.569929, 0.584406, 0.567476, 0.58273, + 0.57598, 0.573866, 0.592615, 0.591032, 0.570087, 0.561013, 0.57434, 0.59436, 0.5708, 0.592122, + 0.582893, 0.579934, 0.605006, 0.602996, 0.574566, 0.561285, 0.5806, 0.607198, 0.575587, 0.604382, + 0.592341, 0.58834, 0.620001, 0.617661, 0.580918, 0.561691, 0.589246, 0.622511, 0.582345, 0.619279, + 0.60466, 0.59953, 0.636224, 0.633842, 0.589678, 0.562296, 0.600703, 0.638713, 0.591605, 0.635496, 0.619601, 0.613541, 0.651024, 0.649051, 0.601259, 0.563195, 0.614947, 0.653005, 0.603726, 0.650428, - 0.635821, 0.62951, 0.66148, 0.660283, 0.61561, 0.564528, 0.631009, 0.662612, 0.618515, 0.661126, - 0.650695, 0.645279, 0.666557, 0.6661, 0.631708, 0.566494, 0.64661, 0.666952, 0.634718, 0.666426, + 0.635821, 0.62951, 0.66148, 0.660283, 0.61561, 0.564528, 0.631009, 0.662612, 0.618515, 0.661126, + 0.650695, 0.645279, 0.666557, 0.6661, 0.631708, 0.566494, 0.64661, 0.666952, 0.634718, 0.666426, 0.661285, 0.657816, 0.667992, 0.667905, 0.647221, 0.569372, 0.658712, 0.668059, 0.649785, 0.667968, - 0.666485, 0.665047, 0.66818, 0.668173, 0.659115, 0.57354, 0.665446, 0.668183, 0.660736, 0.668178, - 0.575645, 0.585051, 0.576926, 0.579983, 0.580676, 0.561414, 0.57526, 0.577421, 0.58672, 0.568884, + 0.666485, 0.665047, 0.66818, 0.668173, 0.659115, 0.57354, 0.665446, 0.668183, 0.660736, 0.668178, + 0.575645, 0.585051, 0.576926, 0.579983, 0.580676, 0.561414, 0.57526, 0.577421, 0.58672, 0.568884, 0.582425, 0.595217, 0.584206, 0.588407, 0.589349, 0.561883, 0.581889, 0.584892, 0.597416, 0.572837, 0.591713, 0.608265, 0.594095, 0.599616, 0.600836, 0.562582, 0.590991, 0.595006, 0.610975, 0.578482, - 0.603863, 0.623715, 0.606867, 0.613644, 0.615105, 0.56362, 0.602943, 0.608002, 0.626726, 0.586353, - 0.618675, 0.639882, 0.622134, 0.629621, 0.631176, 0.565157, 0.617599, 0.62342, 0.642735, 0.596934, + 0.603863, 0.623715, 0.606867, 0.613644, 0.615105, 0.56362, 0.602943, 0.608002, 0.626726, 0.586353, + 0.618675, 0.639882, 0.622134, 0.629621, 0.631176, 0.565157, 0.617599, 0.62342, 0.642735, 0.596934, 0.634882, 0.653907, 0.638343, 0.645379, 0.646757, 0.567417, 0.633779, 0.639597, 0.656026, 0.610385, 0.649921, 0.663104, 0.652716, 0.657884, 0.658809, 0.570715, 0.648997, 0.653689, 0.664197, 0.626077, - 0.660819, 0.667112, 0.662452, 0.665078, 0.665489, 0.575465, 0.660249, 0.662987, 0.66744, 0.642128, + 0.660819, 0.667112, 0.662452, 0.665078, 0.665489, 0.575465, 0.660249, 0.662987, 0.66744, 0.642128, 0.666309, 0.668083, 0.666898, 0.667673, 0.667772, 0.582175, 0.666087, 0.667075, 0.668127, 0.655585, - 0.667946, 0.668185, 0.66805, 0.668153, 0.668162, 0.591376, 0.667902, 0.668077, 0.668186, 0.663977, - 0.568706, 0.587492, 0.575078, 0.579316, 0.574221, 0.571875, 0.572469, 0.56152, 0.584476, 0.587567, - 0.57258, 0.598426, 0.581634, 0.587496, 0.580432, 0.577119, 0.577962, 0.562042, 0.594454, 0.598524, + 0.667946, 0.668185, 0.66805, 0.668153, 0.668162, 0.591376, 0.667902, 0.668077, 0.668186, 0.663977, + 0.568706, 0.587492, 0.575078, 0.579316, 0.574221, 0.571875, 0.572469, 0.56152, 0.584476, 0.587567, + 0.57258, 0.598426, 0.581634, 0.587496, 0.580432, 0.577119, 0.577962, 0.562042, 0.594454, 0.598524, 0.578118, 0.612205, 0.590647, 0.598431, 0.589018, 0.584473, 0.585637, 0.562818, 0.607316, 0.612324, - 0.585852, 0.62807, 0.602503, 0.612212, 0.600409, 0.59445, 0.595992, 0.563969, 0.622644, 0.628198, - 0.596275, 0.643974, 0.617081, 0.628076, 0.614595, 0.60731, 0.609224, 0.565671, 0.638843, 0.644091, - 0.609574, 0.65691, 0.633244, 0.64398, 0.630636, 0.622637, 0.624789, 0.568171, 0.653106, 0.656992, + 0.585852, 0.62807, 0.602503, 0.612212, 0.600409, 0.59445, 0.595992, 0.563969, 0.622644, 0.628198, + 0.596275, 0.643974, 0.617081, 0.628076, 0.614595, 0.60731, 0.609224, 0.565671, 0.638843, 0.644091, + 0.609574, 0.65691, 0.633244, 0.64398, 0.630636, 0.622637, 0.624789, 0.568171, 0.653106, 0.656992, 0.625179, 0.664625, 0.648544, 0.656914, 0.646281, 0.638837, 0.640912, 0.571807, 0.662668, 0.664664, 0.641282, 0.667557, 0.659965, 0.664627, 0.658493, 0.653101, 0.654685, 0.577022, 0.666971, 0.667567, 0.654961, 0.668141, 0.665973, 0.667557, 0.665351, 0.662666, 0.663516, 0.584339, 0.668062, 0.668142, - 0.663659, 0.668187, 0.667878, 0.668141, 0.667739, 0.66697, 0.66724, 0.594272, 0.668184, 0.668187}, - std::vector{ - 0.559698, 0.563643, 0.575276, 0.58701, 0.572904, 0.575772, 0.576994, 0.561768, 0.581308, 0.577538, - 0.577721, 0.585209, 0.585595, 0.565295, 0.580988, 0.560659, 0.566647, 0.569616, 0.572781, 0.567475, - 0.571076, 0.569599, 0.583098, 0.58192, 0.566985, 0.560831, 0.569929, 0.584406, 0.567476, 0.58273, - 0.575645, 0.585051, 0.576926, 0.579983, 0.580676, 0.561414, 0.57526, 0.577421, 0.58672, 0.568884, - 0.568706, 0.587492, 0.575078, 0.579316, 0.574221, 0.571875, 0.572469, 0.56152, 0.584476, 0.587567}, - std::vector{ - 1.2132, 1.23332, 1.297, 1.3692, 1.28344, 1.29988, 1.30703, 1.22367, 1.33299, 1.31023, - 1.31132, 1.35752, 1.36, 1.24196, 1.33102, 1.21804, 1.24912, 1.26516, 1.28275, 1.25354, - 1.2732, 1.26506, 1.34411, 1.33676, 1.25092, 1.21891, 1.26687, 1.35238, 1.25355, 1.34181, - 1.29914, 1.3565, 1.30662, 1.32489, 1.32911, 1.22187, 1.29691, 1.30955, 1.3673, 1.26116, - 1.26019, 1.37237, 1.29586, 1.32085, 1.29093, 1.27766, 1.28099, 1.22241, 1.35283, 1.37287}), + 0.663659, 0.668187, 0.667878, 0.668141, 0.667739, 0.66697, 0.66724, 0.594272, 0.668184, 0.668187}, + std::vector{0.559698, 0.563643, 0.575276, 0.58701, 0.572904, 0.575772, 0.576994, 0.561768, 0.581308, + 0.577538, 0.577721, 0.585209, 0.585595, 0.565295, 0.580988, 0.560659, 0.566647, 0.569616, + 0.572781, 0.567475, 0.571076, 0.569599, 0.583098, 0.58192, 0.566985, 0.560831, 0.569929, + 0.584406, 0.567476, 0.58273, 0.575645, 0.585051, 0.576926, 0.579983, 0.580676, 0.561414, + 0.57526, 0.577421, 0.58672, 0.568884, 0.568706, 0.587492, 0.575078, 0.579316, 0.574221, + 0.571875, 0.572469, 0.56152, 0.584476, 0.587567}, + std::vector{1.2132, 1.23332, 1.297, 1.3692, 1.28344, 1.29988, 1.30703, 1.22367, 1.33299, 1.31023, + 1.31132, 1.35752, 1.36, 1.24196, 1.33102, 1.21804, 1.24912, 1.26516, 1.28275, 1.25354, + 1.2732, 1.26506, 1.34411, 1.33676, 1.25092, 1.21891, 1.26687, 1.35238, 1.25355, 1.34181, + 1.29914, 1.3565, 1.30662, 1.32489, 1.32911, 1.22187, 1.29691, 1.30955, 1.3673, 1.26116, + 1.26019, 1.37237, 1.29586, 1.32085, 1.29093, 1.27766, 1.28099, 1.22241, 1.35283, 1.37287}), LSTMSequenceV1Params( - 5, 10, 10, 5, - 0.7f, true, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.7f, + true, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - 1, 9.01139, 2.17637, 1.35784, 8.43793, 5.7887, 9.60679, 5.15734, 9.31364, 4.36529, - 2.39476, 9.03109, 1.24111, 3.62352, 4.5887, 8.2656, 6.64385, 9.17132, 6.00758, 8.55927, - 1.45439, 8.25611, 9.37734, 4.27627, 7.21853, 2.16383, 8.49418, 3.86518, 7.63482, 6.37093, - 4.27336, 8.15473, 7.28633, 8.39691, 9.09519, 8.48709, 9.18962, 9.77422, 6.90508, 8.30791, - 1.9247, 3.13776, 4.41411, 7.29312, 5.36451, 4.737, 6.74796, 7.83361, 6.01771, 7.2411, - 9.21933, 1.22152, 8.5364, 4.44885, 3.68894, 1.05667, 4.93802, 7.64144, 4.38184, 5.43925, - 1.12636, 3.24493, 4.12422, 8.17018, 9.44559, 1.9047, 7.61862, 9.78793, 7.35297, 9.56588, - 9.35063, 4.69028, 4.04285, 7.92198, 4.01183, 1.74418, 9.08702, 8.08601, 7.45719, 4.99591, - 7.75803, 6.92108, 4.24628, 4.40491, 6.84669, 1.50073, 1.70433, 1.82713, 8.24594, 1.58777, - 3.01887, 2.3692, 7.12532, 2.13363, 3.31622, 4.94171, 1.98701, 3.83109, 4.15659, 7.85029, - 1.88966, 9.38314, 3.93471, 4.83972, 3.43613, 8.09299, 5.07992, 1.74912, 1.63339, 3.96774, - 2.72895, 8.54079, 1.55517, 5.98811, 6.1355, 5.15899, 9.53946, 4.10297, 8.96004, 4.87936, - 9.95032, 8.20453, 9.4747, 4.41532, 4.64882, 3.58199, 5.05481, 7.886, 6.21909, 4.40311, - 6.60154, 7.65255, 9.22045, 5.78893, 5.66039, 1.92328, 2.09503, 6.79327, 5.01368, 1.68692, - 2.37312, 1.71557, 8.91434, 2.45326, 9.30656, 1.03221, 8.22342, 3.7318, 3.20279, 7.9139, - 7.33134, 8.97559, 9.21827, 3.0278, 4.79335, 2.49276, 2.89751, 8.55908, 9.23905, 7.13432, - 4.68331, 2.99916, 8.5177, 7.99063, 7.63611, 8.72832, 9.7526, 4.68963, 6.37313, 7.64598, - 3.40039, 7.8682, 9.37453, 8.8722, 2.04547, 9.7056, 3.72689, 6.48114, 2.50981, 8.72583, - 7.53753, 1.58606, 5.66289, 6.35937, 5.1213, 6.33018, 3.8751, 8.37849, 1.83465, 2.59183, - 2.98641, 5.26684, 9.25707, 9.92382, 6.43793, 9.28502, 4.29972, 1.07022, 6.89515, 2.51248, - 5.46812, 8.11724, 8.36165, 4.30087, 2.15868, 2.77405, 1.18806, 6.7019, 5.30756, 2.91198, - 3.38931, 2.69973, 9.00829, 7.44529, 1.61716, 3.21075, 9.2832, 2.84414, 5.19293, 7.86764, - 5.7913, 5.9592, 3.11618, 3.48381, 1.15161, 4.80193, 1.42298, 1.5328, 3.87086, 4.98756, - 2.51724, 3.71195, 5.04463, 5.25773, 7.33799, 7.30576, 6.34285, 9.75641, 6.9596, 8.90033, - 4.72902, 8.18267, 2.2418, 3.35014, 3.04117, 5.79207, 7.25244, 3.19579, 2.75589, 10}, - std::vector{ - 1, 5.58749, 2.65019, 8.27893, 9.44007, 1.26646, 8.06485, 2.4749, 4.90466, 6.16841, - 2.9532, 8.47611, 3.69586, 4.24748, 8.82421, 1.1096, 7.07798, 5.33121, 9.7954, 2.89868, - 2.92113, 9.4959, 3.93547, 9.87516, 4.936, 9.68846, 3.32138, 7.8397, 2.73004, 3.54654, - 7.92584, 1.07364, 4.17543, 3.10202, 4.46595, 1.98213, 4.66613, 4.64841, 7.93022, 8.57683, - 4.53797, 5.19696, 1.93621, 2.71692, 7.05413, 5.27169, 8.21389, 3.22891, 7.67315, 7.06556, - 6.90317, 2.90659, 6.30619, 8.05291, 5.46056, 1.90711, 8.90894, 6.5506, 7.20546, 9.74475, - 4.7904, 1.6435, 2.71316, 3.03569, 1.44884, 2.59864, 6.0138, 9.62099, 9.54249, 5.42718, - 2.24859, 3.33714, 6.17442, 9.87063, 1.9562, 5.23073, 1.41973, 3.51415, 6.39872, 1.10723, - 1.04289, 1.14721, 4.65565, 2.58112, 1.91227, 4.84767, 7.09586, 5.69412, 3.94588, 5.92789, - 7.45168, 4.64152, 6.15237, 9.08577, 2.87424, 8.64111, 2.93614, 2.41379, 4.12032, 10}, - std::vector{ - 1, 2.13438, 5.72392, 9.79342, 4.95939, 5.88606, 6.28873, 1.5905, 7.75203, 6.46966, - 6.53091, 9.13469, 9.27454, 2.62106, 7.6413, 1.27291, 3.02471, 3.92884, 4.92038, 3.27424, - 4.38241, 3.92348, 8.37897, 7.96488, 3.12631, 1.32181, 4.02546, 8.84497, 3.27456, 8.2492, - 5.84422, 9.0774, 6.26614, 7.29545, 7.53335, 1.48872, 5.71874, 6.43082, 9.68644, 3.70349, - 3.64883, 9.97216, 5.6593, 7.06806, 5.38156, 4.63353, 4.82144, 1.5192, 8.87038, 9.06057, - 9.99976, 6.25004, 5.44209, 6.97974, 4.3708, 3.26893, 5.25793, 1.41232, 8.75483, 3.70018, - 3.66543, 5.15941, 5.0194, 8.57511, 3.55875, 6.72842, 3.43644, 3.55691, 8.33065, 1.02129, - 7.57898, 8.48318, 2.36557, 4.70784, 4.9721, 9.32466, 5.53333, 9.09969, 2.71381, 8.97326, - 4.91604, 2.48103, 8.44254, 8.4943, 3.80884, 9.94202, 3.91681, 5.81107, 8.72025, 5.34059, - 8.33047, 8.90756, 9.69971, 7.08959, 4.25775, 3.27698, 5.6478, 2.44651, 2.74736, 10}, + 1, 9.01139, 2.17637, 1.35784, 8.43793, 5.7887, 9.60679, 5.15734, 9.31364, 4.36529, 2.39476, + 9.03109, 1.24111, 3.62352, 4.5887, 8.2656, 6.64385, 9.17132, 6.00758, 8.55927, 1.45439, 8.25611, + 9.37734, 4.27627, 7.21853, 2.16383, 8.49418, 3.86518, 7.63482, 6.37093, 4.27336, 8.15473, 7.28633, + 8.39691, 9.09519, 8.48709, 9.18962, 9.77422, 6.90508, 8.30791, 1.9247, 3.13776, 4.41411, 7.29312, + 5.36451, 4.737, 6.74796, 7.83361, 6.01771, 7.2411, 9.21933, 1.22152, 8.5364, 4.44885, 3.68894, + 1.05667, 4.93802, 7.64144, 4.38184, 5.43925, 1.12636, 3.24493, 4.12422, 8.17018, 9.44559, 1.9047, + 7.61862, 9.78793, 7.35297, 9.56588, 9.35063, 4.69028, 4.04285, 7.92198, 4.01183, 1.74418, 9.08702, + 8.08601, 7.45719, 4.99591, 7.75803, 6.92108, 4.24628, 4.40491, 6.84669, 1.50073, 1.70433, 1.82713, + 8.24594, 1.58777, 3.01887, 2.3692, 7.12532, 2.13363, 3.31622, 4.94171, 1.98701, 3.83109, 4.15659, + 7.85029, 1.88966, 9.38314, 3.93471, 4.83972, 3.43613, 8.09299, 5.07992, 1.74912, 1.63339, 3.96774, + 2.72895, 8.54079, 1.55517, 5.98811, 6.1355, 5.15899, 9.53946, 4.10297, 8.96004, 4.87936, 9.95032, + 8.20453, 9.4747, 4.41532, 4.64882, 3.58199, 5.05481, 7.886, 6.21909, 4.40311, 6.60154, 7.65255, + 9.22045, 5.78893, 5.66039, 1.92328, 2.09503, 6.79327, 5.01368, 1.68692, 2.37312, 1.71557, 8.91434, + 2.45326, 9.30656, 1.03221, 8.22342, 3.7318, 3.20279, 7.9139, 7.33134, 8.97559, 9.21827, 3.0278, + 4.79335, 2.49276, 2.89751, 8.55908, 9.23905, 7.13432, 4.68331, 2.99916, 8.5177, 7.99063, 7.63611, + 8.72832, 9.7526, 4.68963, 6.37313, 7.64598, 3.40039, 7.8682, 9.37453, 8.8722, 2.04547, 9.7056, + 3.72689, 6.48114, 2.50981, 8.72583, 7.53753, 1.58606, 5.66289, 6.35937, 5.1213, 6.33018, 3.8751, + 8.37849, 1.83465, 2.59183, 2.98641, 5.26684, 9.25707, 9.92382, 6.43793, 9.28502, 4.29972, 1.07022, + 6.89515, 2.51248, 5.46812, 8.11724, 8.36165, 4.30087, 2.15868, 2.77405, 1.18806, 6.7019, 5.30756, + 2.91198, 3.38931, 2.69973, 9.00829, 7.44529, 1.61716, 3.21075, 9.2832, 2.84414, 5.19293, 7.86764, + 5.7913, 5.9592, 3.11618, 3.48381, 1.15161, 4.80193, 1.42298, 1.5328, 3.87086, 4.98756, 2.51724, + 3.71195, 5.04463, 5.25773, 7.33799, 7.30576, 6.34285, 9.75641, 6.9596, 8.90033, 4.72902, 8.18267, + 2.2418, 3.35014, 3.04117, 5.79207, 7.25244, 3.19579, 2.75589, 10}, + std::vector{1, 5.58749, 2.65019, 8.27893, 9.44007, 1.26646, 8.06485, 2.4749, 4.90466, 6.16841, + 2.9532, 8.47611, 3.69586, 4.24748, 8.82421, 1.1096, 7.07798, 5.33121, 9.7954, 2.89868, + 2.92113, 9.4959, 3.93547, 9.87516, 4.936, 9.68846, 3.32138, 7.8397, 2.73004, 3.54654, + 7.92584, 1.07364, 4.17543, 3.10202, 4.46595, 1.98213, 4.66613, 4.64841, 7.93022, 8.57683, + 4.53797, 5.19696, 1.93621, 2.71692, 7.05413, 5.27169, 8.21389, 3.22891, 7.67315, 7.06556, + 6.90317, 2.90659, 6.30619, 8.05291, 5.46056, 1.90711, 8.90894, 6.5506, 7.20546, 9.74475, + 4.7904, 1.6435, 2.71316, 3.03569, 1.44884, 2.59864, 6.0138, 9.62099, 9.54249, 5.42718, + 2.24859, 3.33714, 6.17442, 9.87063, 1.9562, 5.23073, 1.41973, 3.51415, 6.39872, 1.10723, + 1.04289, 1.14721, 4.65565, 2.58112, 1.91227, 4.84767, 7.09586, 5.69412, 3.94588, 5.92789, + 7.45168, 4.64152, 6.15237, 9.08577, 2.87424, 8.64111, 2.93614, 2.41379, 4.12032, 10}, + std::vector{1, 2.13438, 5.72392, 9.79342, 4.95939, 5.88606, 6.28873, 1.5905, 7.75203, 6.46966, + 6.53091, 9.13469, 9.27454, 2.62106, 7.6413, 1.27291, 3.02471, 3.92884, 4.92038, 3.27424, + 4.38241, 3.92348, 8.37897, 7.96488, 3.12631, 1.32181, 4.02546, 8.84497, 3.27456, 8.2492, + 5.84422, 9.0774, 6.26614, 7.29545, 7.53335, 1.48872, 5.71874, 6.43082, 9.68644, 3.70349, + 3.64883, 9.97216, 5.6593, 7.06806, 5.38156, 4.63353, 4.82144, 1.5192, 8.87038, 9.06057, + 9.99976, 6.25004, 5.44209, 6.97974, 4.3708, 3.26893, 5.25793, 1.41232, 8.75483, 3.70018, + 3.66543, 5.15941, 5.0194, 8.57511, 3.55875, 6.72842, 3.43644, 3.55691, 8.33065, 1.02129, + 7.57898, 8.48318, 2.36557, 4.70784, 4.9721, 9.32466, 5.53333, 9.09969, 2.71381, 8.97326, + 4.91604, 2.48103, 8.44254, 8.4943, 3.80884, 9.94202, 3.91681, 5.81107, 8.72025, 5.34059, + 8.33047, 8.90756, 9.69971, 7.08959, 4.25775, 3.27698, 5.6478, 2.44651, 2.74736, 10}, std::vector{5, 5, 5, 5, 5}, std::vector{ - 1, 1.58235, 1.55715, 9.0725, 8.98434, 6.0259, 2.20956, 5.69598, 5.591, 6.22866, - 3.83043, 8.99042, 6.79015, 5.47362, 3.85033, 1.58001, 6.00399, 9.53966, 8.35195, 2.33561, - 1.43071, 1.10545, 8.23914, 6.88122, 6.16229, 8.65462, 6.19589, 6.19551, 6.01633, 1.76164, - 1.41133, 4.00032, 6.57013, 8.26936, 2.40101, 5.56064, 7.65621, 6.99739, 9.24985, 7.03113, - 5.93531, 6.88895, 7.564, 2.08789, 2.45067, 3.77189, 3.5213, 2.5474, 9.17393, 1.93798, - 4.21552, 4.85012, 3.77817, 2.85546, 3.31723, 4.22566, 8.43396, 6.62641, 9.08403, 9.44927, - 1.33493, 8.96543, 7.55197, 5.28736, 8.38082, 6.82582, 5.29947, 1.47086, 8.33883, 7.2491, - 3.31591, 8.50679, 8.86211, 9.69074, 3.66469, 2.50035, 6.15909, 5.2076, 6.19304, 7.92893, - 9.66382, 7.84886, 9.71917, 2.05874, 6.53135, 9.86027, 5.8924, 5.54567, 4.07782, 1.47401, - 8.71301, 1.85602, 2.73131, 8.98951, 9.9603, 4.3386, 2.81821, 4.36272, 8.3821, 6.64452, - 7.2118, 7.08588, 5.82932, 8.86502, 3.84654, 3.91562, 4.59225, 2.60513, 2.9141, 1.26067, - 9.29858, 9.185, 5.25551, 5.91884, 9.76741, 7.30087, 9.09672, 5.58644, 1.33538, 8.97838, - 8.66129, 8.42606, 6.67734, 5.21469, 3.2893, 7.15482, 6.68333, 6.23113, 1.40497, 3.50662, - 1.04018, 2.64265, 4.43901, 1.74996, 7.92567, 6.25056, 1.80776, 2.43364, 4.19004, 7.16324, - 8.38644, 7.33103, 3.31969, 7.42022, 7.87053, 8.559, 6.21006, 6.56629, 7.032, 5.21333, - 4.12916, 1.09792, 4.91183, 9.98769, 2.63651, 7.47683, 4.09084, 1.11776, 4.98008, 2.05417, - 3.81136, 3.78223, 8.9567, 3.69608, 9.82358, 4.15339, 1.55375, 2.58225, 5.35357, 9.96, - 2.63519, 8.34962, 1.67387, 6.97949, 1.52856, 6.16907, 7.26676, 3.61943, 7.54626, 7.8529, - 9.92461, 5.79463, 4.32859, 7.80883, 2.21124, 3.19625, 8.26345, 3.0258, 4.14905, 4.44074, - 4.40667, 4.3796, 2.65345, 7.52455, 7.24033, 8.20462, 2.70815, 2.24004, 9.89098, 3.3111, - 2.78455, 7.33025, 1.03654, 3.16342, 3.15485, 4.65602, 2.89809, 8.78445, 3.82711, 4.03929, - 5.06706, 7.46336, 2.99334, 6.76448, 5.71191, 5.12153, 5.43331, 1.77758, 6.66328, 3.8654, - 8.21078, 6.80763, 5.15698, 7.09883, 8.90826, 2.80116, 2.05896, 9.43922, 5.59127, 5.10843, - 5.39114, 4.77302, 6.52344, 5.95818, 7.42981, 7.35046, 8.61927, 3.56677, 6.74051, 2.3789, - 8.38043, 4.82216, 4.56786, 3.11453, 4.62395, 1.9779, 6.291, 4.57929, 2.53787, 8.10957, - 1.59414, 1.89001, 7.30965, 2.15147, 4.07816, 8.95942, 9.95274, 9.7535, 6.60151, 6.62482, - 8.13667, 5.02444, 8.33802, 9.46244, 1.53285, 4.86751, 9.00238, 3.6553, 6.14745, 9.38268, - 6.13151, 1.34703, 6.85186, 1.27094, 5.87562, 6.37423, 9.46726, 6.16143, 1.46485, 2.33172, - 4.72484, 2.58218, 8.77431, 2.26195, 2.80098, 6.5379, 9.76863, 2.67786, 1.50383, 9.24777, - 6.70801, 2.48443, 2.93425, 8.84472, 9.48241, 2.54342, 3.29629, 2.93909, 2.07659, 3.51105, - 8.05238, 6.52768, 2.89578, 9.46054, 9.42958, 4.99612, 3.72457, 1.09732, 5.46821, 8.3767, - 4.9284, 4.52297, 9.06671, 3.55751, 7.85551, 9.26148, 8.87619, 3.91563, 8.93108, 7.12851, - 7.38578, 6.00562, 9.88357, 5.96685, 7.98384, 7.18464, 2.08388, 4.19079, 7.13242, 5.10029, - 5.59207, 7.5696, 2.09462, 8.23487, 5.4306, 5.08607, 7.20121, 3.42059, 9.09514, 2.47813, - 7.56546, 3.04737, 4.75688, 6.15676, 5.44893, 6.38723, 5.49974, 9.74185, 2.04256, 6.03927, - 1.62865, 1.22683, 8.57313, 8.65697, 7.51196, 7.66841, 5.93585, 1.01738, 5.79587, 8.98536, - 5.72791, 4.97014, 1.33971, 9.76335, 9.01953, 3.47976, 3.0864, 9.17127, 7.85755, 8.21389, - 2.65647, 8.53283, 6.75763, 5.86692, 4.59959, 4.11153, 4.10978, 6.27941, 8.43579, 8.336, - 9.45283, 1.3166, 3.15401, 9.04877, 7.89529, 1.45832, 2.84421, 4.97627, 4.67164, 8.28176, - 9.46578, 2.64635, 3.16345, 1.4227, 5.32832, 9.22188, 8.92144, 6.89066, 2.86784, 8.8094, - 3.84588, 1.23466, 9.78789, 1.42303, 3.01417, 9.11293, 4.56955, 3.41493, 8.52977, 1.46027, - 9.6304, 3.7595, 8.82851, 3.39647, 5.96831, 9.46836, 7.06139, 1.00386, 4.40682, 3.34827, - 4.47685, 6.86575, 7.61416, 6.26863, 7.95864, 9.60114, 3.60174, 2.12447, 5.49191, 5.58725, - 9.57542, 1.23677, 2.3244, 1.14875, 6.63691, 6.05344, 1.17406, 5.24456, 6.94052, 3.63667, - 6.6326, 7.56277, 8.43608, 6.25921, 8.02039, 1.0978, 5.06817, 8.34008, 3.511, 7.46162, - 7.85162, 8.85299, 7.65666, 3.49309, 3.28998, 9.05593, 6.38533, 5.95336, 3.44796, 6.04198, - 2.35335, 7.15819, 2.51471, 4.67303, 6.04976, 7.07969, 8.89531, 8.28522, 3.21776, 6.08729, - 3.63002, 6.91288, 8.43328, 9.77926, 2.00687, 6.17069, 7.84192, 6.11165, 7.56512, 6.71043, - 9.9949, 2.20909, 6.52124, 3.8416, 3.56753, 9.80769, 9.40458, 5.57479, 8.94376, 7.007, - 9.15643, 7.34537, 2.77838, 4.32169, 5.46074, 2.82916, 5.01243, 7.20892, 7.11125, 9.59418, - 4.04632, 9.70847, 9.16347, 9.22927, 5.53325, 1.07013, 9.42891, 2.02416, 8.10225, 3.57743, - 2.48204, 3.85673, 7.87652, 9.5724, 9.96488, 1.22926, 9.93237, 7.98604, 3.93368, 5.40463, - 8.27822, 9.25339, 8.12387, 9.82377, 5.85865, 9.73178, 8.74985, 6.61779, 5.20904, 2.06291, - 7.4461, 9.19566, 3.64798, 4.03986, 6.28108, 5.8935, 3.28368, 7.23357, 3.69042, 1.18574, - 2.97844, 4.92947, 6.3979, 5.05038, 9.67588, 8.6172, 9.25392, 7.47116, 9.72858, 2.39344, - 1.65939, 6.65531, 6.01121, 8.64874, 4.35918, 3.78387, 7.42273, 5.83712, 3.12879, 3.05836, - 1.83374, 4.63502, 4.31904, 7.06468, 5.90065, 9.69154, 1.78742, 5.74906, 4.37218, 3.95907, - 4.392, 2.80048, 3.14789, 7.02904, 3.02179, 6.69492, 2.01936, 6.49056, 5.4559, 8.08234, - 6.56281, 6.79647, 2.82158, 9.3293, 6.74985, 7.46573, 5.85924, 6.46302, 1.75108, 2.51813, - 4.0386, 4.23293, 8.95259, 9.31798, 6.29865, 2.13308, 6.6108, 7.12425, 1.61579, 2.58459, - 7.30912, 9.12349, 5.95058, 7.13723, 8.84, 9.7293, 9.66431, 5.26864, 1.00005, 6.20084, - 4.38823, 1.99631, 5.24372, 5.5035, 6.1096, 9.0086, 5.62153, 4.48418, 4.89917, 8.4891, - 6.06718, 6.09795, 5.61604, 4.05636, 7.16928, 2.85497, 1.87784, 4.09056, 1.19954, 3.65072, - 1.02866, 4.28399, 3.71394, 9.3255, 4.37615, 2.17663, 3.74709, 8.02241, 4.53525, 1.40447, - 3.20265, 8.01579, 5.0947, 8.39444, 6.70833, 1.97415, 2.69876, 7.17428, 5.09109, 4.61213, - 1.70647, 9.68497, 4.87501, 1.7283, 2.43997, 5.65806, 9.24942, 6.33399, 8.78482, 7.74617, - 1.39981, 2.79742, 7.02529, 3.34156, 8.11078, 3.08428, 3.9854, 4.30715, 4.98405, 1.10623, - 4.9921, 1.07542, 8.80374, 5.7398, 1.246, 4.76494, 4.82886, 7.94031, 9.49241, 4.36517, - 6.15431, 6.39414, 4.94161, 6.58667, 2.51963, 1.48029, 5.60639, 7.02553, 1.24623, 2.7569, - 3.87485, 1.45887, 5.81507, 1.29477, 8.10444, 2.09316, 7.38267, 8.64263, 3.0875, 4.03357, - 7.37073, 7.01626, 2.00842, 3.51386, 9.36265, 3.36725, 9.14829, 8.19237, 3.57092, 7.91152, - 8.00399, 6.64666, 4.91302, 5.85436, 2.76866, 8.73306, 3.07039, 4.64437, 1.0429, 1.19034, - 8.57202, 2.47873, 5.76703, 7.85474, 4.77875, 9.10824, 3.30109, 7.75884, 4.46161, 1.67611, - 6.95084, 4.45923, 9.98302, 4.35653, 4.57055, 1.62008, 8.52016, 8.87614, 2.9365, 9.98647, - 7.19558, 3.4473, 6.94256, 2.52838, 1.8037, 4.13277, 8.07921, 2.76578, 5.34165, 2.3978, - 5.00802, 2.44953, 2.21856, 2.5814, 8.93366, 2.55804, 9.74033, 5.7804, 6.50438, 2.19987, - 5.58994, 9.04511, 4.09384, 6.76115, 8.06394, 9.79993, 1.02129, 9.63807, 4.05821, 2.03345, - 9.2003, 8.09304, 2.76742, 6.32525, 3.01142, 2.35557, 8.09354, 9.66952, 7.11964, 5.88259, - 6.04748, 5.05317, 9.25398, 1.62705, 8.36628, 2.22643, 4.24874, 9.11405, 2.267, 8.49208, - 3.461, 5.52411, 8.69717, 1.3226, 1.44982, 4.06619, 4.39646, 6.37047, 6.59565, 10}, - std::vector{ - 1, 4.54659, 6.32448, 5.40494, 9.86159, 9.07852, 3.05904, 9.77817, 3.49926, 7.63737, - 2.39762, 6.18958, 6.24331, 8.25735, 6.53109, 2.65972, 8.42707, 4.09645, 9.46241, 6.56499, - 7.61151, 2.11518, 8.1123, 4.51095, 5.13355, 8.57515, 7.48222, 8.91597, 2.26922, 1.67127, - 6.20972, 5.51447, 5.59529, 7.6583, 2.97689, 8.74954, 3.53749, 9.36144, 2.86963, 9.2585, - 3.89263, 1.92284, 4.57657, 7.99819, 9.3836, 1.19691, 3.23177, 7.07376, 9.90035, 9.54876, - 1.83406, 2.42544, 2.79611, 4.98123, 2.76576, 5.84942, 8.4264, 9.87311, 2.1547, 6.2748, - 4.04931, 4.64838, 7.61106, 4.25832, 2.01333, 6.23769, 7.10437, 7.40875, 9.62977, 9.96437, - 2.11365, 6.23564, 3.32097, 6.85371, 4.39948, 1.80143, 7.94896, 9.80996, 9.71046, 4.03104, - 8.86624, 9.06961, 1.76453, 6.6127, 3.70704, 8.67179, 6.1986, 2.6383, 9.37425, 2.02916, - 1.8428, 7.76668, 2.05601, 6.04629, 3.92551, 9.68333, 5.45613, 5.21474, 3.96363, 1.65678, - 1.63911, 1.51876, 4.37833, 1.04078, 9.77478, 1.27549, 6.44559, 4.64664, 8.92835, 9.88028, - 9.66077, 6.02858, 3.18563, 1.17797, 3.09603, 5.34818, 9.70473, 2.86306, 5.49366, 1.87064, - 7.23007, 7.76858, 2.00428, 2.48244, 7.78903, 7.90607, 8.06873, 2.52497, 2.49137, 2.61559, - 7.75215, 8.75981, 8.30843, 1.23805, 1.52846, 4.92311, 1.50707, 7.50994, 6.00506, 6.58755, - 2.16225, 5.52023, 5.58397, 1.84541, 8.86125, 8.83867, 1.16775, 7.64101, 6.51206, 9.81013, - 6.88963, 9.05285, 6.21656, 4.52452, 4.71779, 1.10079, 3.99572, 8.55103, 6.94, 5.69519, - 9.61978, 7.20197, 7.85556, 1.7112, 3.44624, 4.25074, 7.87477, 9.34275, 4.44811, 3.02249, - 3.0886, 6.17374, 6.47048, 5.63258, 8.19415, 8.7746, 9.22689, 1.18991, 1.6878, 5.10915, - 1.24905, 7.77101, 6.20286, 4.64343, 4.97444, 2.00702, 4.47644, 1.36942, 1.8044, 7.54883, - 7.56364, 2.33436, 4.36203, 7.75994, 3.35254, 1.30727, 8.72577, 6.31045, 1.73164, 3.10143, - 1.75297, 4.90549, 7.79632, 1.42155, 7.67554, 4.11003, 2.45134, 9.93904, 7.65293, 9.55969, - 9.49092, 1.16254, 5.35432, 5.68326, 2.68756, 9.79784, 8.90456, 4.41579, 3.77757, 6.9883, - 3.48931, 4.08603, 3.56546, 5.56486, 5.24488, 1.48558, 7.22185, 5.38926, 3.353, 8.21195, - 7.22835, 8.65753, 1.14195, 5.16396, 2.29447, 6.81389, 6.12026, 7.23296, 9.03696, 6.15992, - 6.61774, 7.49631, 6.15221, 8.23327, 3.52917, 4.44016, 7.59119, 7.20278, 7.87011, 7.4118, - 4.88929, 7.10041, 8.72445, 9.33136, 9.52693, 7.3276, 8.59106, 5.10541, 6.63513, 6.74733, - 8.23243, 4.2018, 8.18058, 4.31184, 2.65255, 3.67934, 8.10169, 4.09561, 9.69242, 5.3705, - 3.02728, 7.75847, 8.23799, 6.83668, 8.52236, 1.39545, 2.02494, 8.31176, 6.58431, 8.52873, - 7.90275, 5.75623, 6.849, 9.04106, 4.84783, 9.78142, 7.13852, 4.52031, 2.7178, 5.59408, - 8.57777, 9.67441, 7.0772, 5.94922, 2.19153, 2.92101, 5.97566, 4.4292, 5.06291, 4.20734, - 5.03142, 3.77804, 3.11829, 4.04353, 6.05138, 2.68516, 3.14739, 9.85841, 1.97082, 6.71148, - 7.21038, 6.83885, 8.15292, 7.97213, 2.2081, 6.63164, 4.6698, 4.86985, 8.82823, 1.55222, - 5.35014, 1.02844, 2.0888, 5.70194, 3.81421, 1.48773, 8.81108, 7.00017, 9.13739, 9.59582, - 1.4752, 2.15818, 5.04522, 7.42531, 5.22722, 9.60355, 7.67216, 8.76329, 4.73203, 5.84448, - 1.55273, 7.13586, 8.91209, 8.22101, 1.03308, 6.54954, 4.1324, 7.53138, 1.53171, 6.15368, - 4.95754, 6.49698, 9.4097, 4.49705, 1.16446, 1.08714, 5.33318, 7.10617, 4.72117, 3.7985, - 2.59871, 6.15397, 3.56235, 9.46913, 8.74236, 1.13157, 5.54921, 4.62576, 7.72262, 8.03736, - 8.69808, 2.61915, 5.70869, 6.4007, 8.62539, 9.05605, 1.76502, 8.7073, 6.7695, 6.44984, - 3.38996, 8.78573, 4.94558, 9.65115, 2.96345, 4.44614, 2.69691, 3.58606, 4.21715, 5.94832, - 7.18326, 7.90754, 6.07498, 3.91409, 3.49496, 7.76969, 6.89076, 8.57066, 5.35908, 9.39983, - 4.72367, 5.7885, 5.50385, 5.60082, 6.13971, 6.75445, 4.19049, 1.55002, 2.17919, 4.86608, - 2.83434, 2.54872, 6.78346, 5.17315, 5.68842, 9.60461, 7.62238, 8.55562, 9.20677, 1.99981, - 5.2998, 1.78484, 1.25381, 3.41057, 4.2545, 8.49597, 6.98817, 4.90633, 7.60492, 9.93473, - 9.60203, 8.31804, 3.88664, 2.34239, 2.57365, 6.30953, 7.92014, 4.19319, 6.73355, 2.84212, - 7.38741, 3.73816, 3.77684, 4.04575, 4.62478, 9.56991, 6.35541, 8.23529, 7.66465, 5.89206, - 6.40386, 2.00967, 9.06787, 8.96033, 6.39315, 6.09508, 8.71021, 7.24184, 5.04831, 6.63348, - 7.41792, 8.8327, 7.9134, 5.5876, 7.79328, 7.87538, 5.41605, 2.74772, 3.88932, 7.89934, - 9.8233, 5.03149, 2.1468, 1.45979, 4.32571, 5.31263, 4.43767, 9.98486, 3.49411, 8.23258, - 5.19501, 5.87229, 2.6117, 1.36902, 1.22311, 2.73083, 2.61211, 9.50159, 7.23431, 6.90859, - 6.11484, 7.05027, 7.73243, 1.53322, 4.02925, 3.35174, 5.23253, 9.18545, 4.2252, 4.3851, - 5.4527, 8.23178, 7.43629, 5.49068, 3.10742, 6.21584, 3.57903, 7.43574, 4.15479, 4.90666, - 7.84751, 3.20987, 5.93707, 5.80065, 7.3108, 8.2003, 2.45924, 2.65312, 9.98448, 7.86027, - 4.41315, 1.29331, 6.86571, 9.36546, 6.37493, 2.67899, 1.42097, 6.94499, 4.97888, 8.32001, - 1.59289, 6.30954, 6.55959, 3.61335, 9.37199, 8.13811, 2.92084, 9.5581, 3.05901, 4.57234, - 6.70284, 5.98927, 5.8783, 5.00032, 5.46558, 5.609, 6.44573, 9.38336, 7.30968, 2.05593, - 2.70677, 3.13242, 2.30241, 6.14404, 5.85338, 7.28636, 4.81769, 9.25817, 2.41154, 6.88612, - 2.93221, 1.95278, 2.00515, 5.93273, 7.80319, 4.1318, 4.74696, 2.18834, 1.75543, 1.35063, - 6.294, 4.75432, 6.07164, 5.49934, 1.39722, 4.40799, 7.92895, 4.76634, 4.56078, 1.90916, - 7.00981, 2.50819, 6.31957, 3.46231, 2.75408, 5.33776, 5.67472, 4.72021, 8.5595, 3.42135, - 9.40977, 5.0546, 7.58948, 7.83337, 4.94762, 7.46493, 1.74705, 3.73444, 8.03541, 5.32388, - 1.99355, 7.29553, 7.27851, 9.03012, 1.43236, 2.39153, 2.41475, 3.99028, 3.46309, 4.02156, - 8.97672, 9.23768, 4.02787, 8.05564, 8.04031, 3.48179, 6.04413, 4.15226, 1.24342, 1.01373, - 1.82379, 7.45745, 9.19248, 3.87985, 4.5868, 1.71719, 2.50581, 2.41056, 9.03223, 5.30532, - 1.4033, 9.71298, 6.57269, 2.46664, 8.00804, 5.28823, 9.80983, 3.90576, 2.8259, 9.10474, - 1.03754, 9.21314, 5.31505, 2.49488, 7.36028, 2.5922, 5.87357, 7.79499, 3.27024, 3.66111, - 8.68053, 9.44535, 7.72449, 8.18736, 2.98887, 5.96881, 1.96588, 5.81309, 5.08468, 5.78022, - 3.48668, 1.16396, 5.56096, 7.47946, 6.94378, 5.22245, 6.63033, 9.72782, 7.27977, 2.82604, - 4.6663, 2.51966, 3.46937, 6.84506, 7.7865, 1.43957, 8.07416, 3.61659, 4.01118, 3.4731, - 9.81749, 6.91879, 8.72981, 5.55872, 6.12225, 1.3078, 3.71204, 7.14632, 1.45034, 6.46249, - 2.86946, 2.77546, 7.8614, 8.86595, 9.12923, 9.287, 3.09589, 7.65446, 7.24201, 7.03379, - 6.62077, 1.72055, 2.96869, 5.11422, 9.71284, 6.79057, 1.55773, 1.54237, 8.82527, 7.19741, - 9.51219, 6.03872, 3.71177, 3.04635, 5.78192, 7.2869, 9.19943, 8.73105, 2.6986, 8.51169, - 2.42288, 6.83215, 8.51947, 2.67462, 7.18716, 3.92524, 3.64838, 6.45243, 8.06931, 7.97245, - 7.70631, 8.17218, 2.62555, 3.87636, 6.24838, 2.62702, 3.4494, 9.96515, 7.14449, 8.13208, - 2.82945, 8.73997, 6.34161, 7.51236, 8.24821, 8.52709, 8.23385, 4.06273, 7.85741, 7.51928, - 3.33662, 9.07837, 6.40373, 6.78942, 7.70122, 6.72775, 9.35052, 1.78962, 5.69662, 9.55886, - 1.28139, 6.11816, 7.42325, 2.96934, 5.04452, 3.33527, 3.21557, 7.72912, 2.65684, 9.88658, - 2.13663, 6.46773, 3.83655, 6.00923, 8.59554, 5.53451, 3.37365, 7.61857, 6.51566, 6.2357, - 9.20489, 1.67264, 7.15646, 3.73925, 4.29553, 7.37171, 2.62476, 7.72404, 1.78335, 6.55747, - 4.85313, 2.12074, 8.00724, 2.16874, 8.1091, 1.97776, 3.19266, 8.89558, 6.5867, 10}, - std::vector{ - 1, 1.08809, 7.34367, 1.84401, 3.65, 7.04672, 9.90727, 2.28341, 8.40458, 4.26864, - 2.12786, 1.3584, 5.67691, 6.93083, 2.5351, 2.80941, 7.32406, 7.16185, 3.82714, 3.52963, - 9.8522, 7.2122, 7.36617, 6.03843, 8.64737, 6.82174, 6.17929, 7.25098, 9.065, 5.62021, - 2.05619, 9.89887, 5.70674, 3.66863, 8.63875, 7.11328, 5.15165, 3.11287, 5.59069, 3.56016, - 7.04003, 9.88518, 5.09578, 8.85682, 1.44654, 5.53915, 1.61339, 1.18572, 3.6579, 1.24913, - 6.82981, 6.45494, 8.94083, 8.33236, 9.24103, 7.20789, 9.35252, 8.34363, 7.27433, 8.89566, - 8.11744, 8.27532, 9.8568, 3.84764, 7.58856, 1.72907, 6.9287, 5.69146, 2.46782, 4.1626, - 7.37082, 4.00921, 6.75911, 6.68399, 7.11442, 9.12597, 4.31382, 5.93337, 4.63211, 10}, - std::vector{ - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, + 1, 1.58235, 1.55715, 9.0725, 8.98434, 6.0259, 2.20956, 5.69598, 5.591, 6.22866, 3.83043, + 8.99042, 6.79015, 5.47362, 3.85033, 1.58001, 6.00399, 9.53966, 8.35195, 2.33561, 1.43071, 1.10545, + 8.23914, 6.88122, 6.16229, 8.65462, 6.19589, 6.19551, 6.01633, 1.76164, 1.41133, 4.00032, 6.57013, + 8.26936, 2.40101, 5.56064, 7.65621, 6.99739, 9.24985, 7.03113, 5.93531, 6.88895, 7.564, 2.08789, + 2.45067, 3.77189, 3.5213, 2.5474, 9.17393, 1.93798, 4.21552, 4.85012, 3.77817, 2.85546, 3.31723, + 4.22566, 8.43396, 6.62641, 9.08403, 9.44927, 1.33493, 8.96543, 7.55197, 5.28736, 8.38082, 6.82582, + 5.29947, 1.47086, 8.33883, 7.2491, 3.31591, 8.50679, 8.86211, 9.69074, 3.66469, 2.50035, 6.15909, + 5.2076, 6.19304, 7.92893, 9.66382, 7.84886, 9.71917, 2.05874, 6.53135, 9.86027, 5.8924, 5.54567, + 4.07782, 1.47401, 8.71301, 1.85602, 2.73131, 8.98951, 9.9603, 4.3386, 2.81821, 4.36272, 8.3821, + 6.64452, 7.2118, 7.08588, 5.82932, 8.86502, 3.84654, 3.91562, 4.59225, 2.60513, 2.9141, 1.26067, + 9.29858, 9.185, 5.25551, 5.91884, 9.76741, 7.30087, 9.09672, 5.58644, 1.33538, 8.97838, 8.66129, + 8.42606, 6.67734, 5.21469, 3.2893, 7.15482, 6.68333, 6.23113, 1.40497, 3.50662, 1.04018, 2.64265, + 4.43901, 1.74996, 7.92567, 6.25056, 1.80776, 2.43364, 4.19004, 7.16324, 8.38644, 7.33103, 3.31969, + 7.42022, 7.87053, 8.559, 6.21006, 6.56629, 7.032, 5.21333, 4.12916, 1.09792, 4.91183, 9.98769, + 2.63651, 7.47683, 4.09084, 1.11776, 4.98008, 2.05417, 3.81136, 3.78223, 8.9567, 3.69608, 9.82358, + 4.15339, 1.55375, 2.58225, 5.35357, 9.96, 2.63519, 8.34962, 1.67387, 6.97949, 1.52856, 6.16907, + 7.26676, 3.61943, 7.54626, 7.8529, 9.92461, 5.79463, 4.32859, 7.80883, 2.21124, 3.19625, 8.26345, + 3.0258, 4.14905, 4.44074, 4.40667, 4.3796, 2.65345, 7.52455, 7.24033, 8.20462, 2.70815, 2.24004, + 9.89098, 3.3111, 2.78455, 7.33025, 1.03654, 3.16342, 3.15485, 4.65602, 2.89809, 8.78445, 3.82711, + 4.03929, 5.06706, 7.46336, 2.99334, 6.76448, 5.71191, 5.12153, 5.43331, 1.77758, 6.66328, 3.8654, + 8.21078, 6.80763, 5.15698, 7.09883, 8.90826, 2.80116, 2.05896, 9.43922, 5.59127, 5.10843, 5.39114, + 4.77302, 6.52344, 5.95818, 7.42981, 7.35046, 8.61927, 3.56677, 6.74051, 2.3789, 8.38043, 4.82216, + 4.56786, 3.11453, 4.62395, 1.9779, 6.291, 4.57929, 2.53787, 8.10957, 1.59414, 1.89001, 7.30965, + 2.15147, 4.07816, 8.95942, 9.95274, 9.7535, 6.60151, 6.62482, 8.13667, 5.02444, 8.33802, 9.46244, + 1.53285, 4.86751, 9.00238, 3.6553, 6.14745, 9.38268, 6.13151, 1.34703, 6.85186, 1.27094, 5.87562, + 6.37423, 9.46726, 6.16143, 1.46485, 2.33172, 4.72484, 2.58218, 8.77431, 2.26195, 2.80098, 6.5379, + 9.76863, 2.67786, 1.50383, 9.24777, 6.70801, 2.48443, 2.93425, 8.84472, 9.48241, 2.54342, 3.29629, + 2.93909, 2.07659, 3.51105, 8.05238, 6.52768, 2.89578, 9.46054, 9.42958, 4.99612, 3.72457, 1.09732, + 5.46821, 8.3767, 4.9284, 4.52297, 9.06671, 3.55751, 7.85551, 9.26148, 8.87619, 3.91563, 8.93108, + 7.12851, 7.38578, 6.00562, 9.88357, 5.96685, 7.98384, 7.18464, 2.08388, 4.19079, 7.13242, 5.10029, + 5.59207, 7.5696, 2.09462, 8.23487, 5.4306, 5.08607, 7.20121, 3.42059, 9.09514, 2.47813, 7.56546, + 3.04737, 4.75688, 6.15676, 5.44893, 6.38723, 5.49974, 9.74185, 2.04256, 6.03927, 1.62865, 1.22683, + 8.57313, 8.65697, 7.51196, 7.66841, 5.93585, 1.01738, 5.79587, 8.98536, 5.72791, 4.97014, 1.33971, + 9.76335, 9.01953, 3.47976, 3.0864, 9.17127, 7.85755, 8.21389, 2.65647, 8.53283, 6.75763, 5.86692, + 4.59959, 4.11153, 4.10978, 6.27941, 8.43579, 8.336, 9.45283, 1.3166, 3.15401, 9.04877, 7.89529, + 1.45832, 2.84421, 4.97627, 4.67164, 8.28176, 9.46578, 2.64635, 3.16345, 1.4227, 5.32832, 9.22188, + 8.92144, 6.89066, 2.86784, 8.8094, 3.84588, 1.23466, 9.78789, 1.42303, 3.01417, 9.11293, 4.56955, + 3.41493, 8.52977, 1.46027, 9.6304, 3.7595, 8.82851, 3.39647, 5.96831, 9.46836, 7.06139, 1.00386, + 4.40682, 3.34827, 4.47685, 6.86575, 7.61416, 6.26863, 7.95864, 9.60114, 3.60174, 2.12447, 5.49191, + 5.58725, 9.57542, 1.23677, 2.3244, 1.14875, 6.63691, 6.05344, 1.17406, 5.24456, 6.94052, 3.63667, + 6.6326, 7.56277, 8.43608, 6.25921, 8.02039, 1.0978, 5.06817, 8.34008, 3.511, 7.46162, 7.85162, + 8.85299, 7.65666, 3.49309, 3.28998, 9.05593, 6.38533, 5.95336, 3.44796, 6.04198, 2.35335, 7.15819, + 2.51471, 4.67303, 6.04976, 7.07969, 8.89531, 8.28522, 3.21776, 6.08729, 3.63002, 6.91288, 8.43328, + 9.77926, 2.00687, 6.17069, 7.84192, 6.11165, 7.56512, 6.71043, 9.9949, 2.20909, 6.52124, 3.8416, + 3.56753, 9.80769, 9.40458, 5.57479, 8.94376, 7.007, 9.15643, 7.34537, 2.77838, 4.32169, 5.46074, + 2.82916, 5.01243, 7.20892, 7.11125, 9.59418, 4.04632, 9.70847, 9.16347, 9.22927, 5.53325, 1.07013, + 9.42891, 2.02416, 8.10225, 3.57743, 2.48204, 3.85673, 7.87652, 9.5724, 9.96488, 1.22926, 9.93237, + 7.98604, 3.93368, 5.40463, 8.27822, 9.25339, 8.12387, 9.82377, 5.85865, 9.73178, 8.74985, 6.61779, + 5.20904, 2.06291, 7.4461, 9.19566, 3.64798, 4.03986, 6.28108, 5.8935, 3.28368, 7.23357, 3.69042, + 1.18574, 2.97844, 4.92947, 6.3979, 5.05038, 9.67588, 8.6172, 9.25392, 7.47116, 9.72858, 2.39344, + 1.65939, 6.65531, 6.01121, 8.64874, 4.35918, 3.78387, 7.42273, 5.83712, 3.12879, 3.05836, 1.83374, + 4.63502, 4.31904, 7.06468, 5.90065, 9.69154, 1.78742, 5.74906, 4.37218, 3.95907, 4.392, 2.80048, + 3.14789, 7.02904, 3.02179, 6.69492, 2.01936, 6.49056, 5.4559, 8.08234, 6.56281, 6.79647, 2.82158, + 9.3293, 6.74985, 7.46573, 5.85924, 6.46302, 1.75108, 2.51813, 4.0386, 4.23293, 8.95259, 9.31798, + 6.29865, 2.13308, 6.6108, 7.12425, 1.61579, 2.58459, 7.30912, 9.12349, 5.95058, 7.13723, 8.84, + 9.7293, 9.66431, 5.26864, 1.00005, 6.20084, 4.38823, 1.99631, 5.24372, 5.5035, 6.1096, 9.0086, + 5.62153, 4.48418, 4.89917, 8.4891, 6.06718, 6.09795, 5.61604, 4.05636, 7.16928, 2.85497, 1.87784, + 4.09056, 1.19954, 3.65072, 1.02866, 4.28399, 3.71394, 9.3255, 4.37615, 2.17663, 3.74709, 8.02241, + 4.53525, 1.40447, 3.20265, 8.01579, 5.0947, 8.39444, 6.70833, 1.97415, 2.69876, 7.17428, 5.09109, + 4.61213, 1.70647, 9.68497, 4.87501, 1.7283, 2.43997, 5.65806, 9.24942, 6.33399, 8.78482, 7.74617, + 1.39981, 2.79742, 7.02529, 3.34156, 8.11078, 3.08428, 3.9854, 4.30715, 4.98405, 1.10623, 4.9921, + 1.07542, 8.80374, 5.7398, 1.246, 4.76494, 4.82886, 7.94031, 9.49241, 4.36517, 6.15431, 6.39414, + 4.94161, 6.58667, 2.51963, 1.48029, 5.60639, 7.02553, 1.24623, 2.7569, 3.87485, 1.45887, 5.81507, + 1.29477, 8.10444, 2.09316, 7.38267, 8.64263, 3.0875, 4.03357, 7.37073, 7.01626, 2.00842, 3.51386, + 9.36265, 3.36725, 9.14829, 8.19237, 3.57092, 7.91152, 8.00399, 6.64666, 4.91302, 5.85436, 2.76866, + 8.73306, 3.07039, 4.64437, 1.0429, 1.19034, 8.57202, 2.47873, 5.76703, 7.85474, 4.77875, 9.10824, + 3.30109, 7.75884, 4.46161, 1.67611, 6.95084, 4.45923, 9.98302, 4.35653, 4.57055, 1.62008, 8.52016, + 8.87614, 2.9365, 9.98647, 7.19558, 3.4473, 6.94256, 2.52838, 1.8037, 4.13277, 8.07921, 2.76578, + 5.34165, 2.3978, 5.00802, 2.44953, 2.21856, 2.5814, 8.93366, 2.55804, 9.74033, 5.7804, 6.50438, + 2.19987, 5.58994, 9.04511, 4.09384, 6.76115, 8.06394, 9.79993, 1.02129, 9.63807, 4.05821, 2.03345, + 9.2003, 8.09304, 2.76742, 6.32525, 3.01142, 2.35557, 8.09354, 9.66952, 7.11964, 5.88259, 6.04748, + 5.05317, 9.25398, 1.62705, 8.36628, 2.22643, 4.24874, 9.11405, 2.267, 8.49208, 3.461, 5.52411, + 8.69717, 1.3226, 1.44982, 4.06619, 4.39646, 6.37047, 6.59565, 10}, + std::vector{ + 1, 4.54659, 6.32448, 5.40494, 9.86159, 9.07852, 3.05904, 9.77817, 3.49926, 7.63737, 2.39762, + 6.18958, 6.24331, 8.25735, 6.53109, 2.65972, 8.42707, 4.09645, 9.46241, 6.56499, 7.61151, 2.11518, + 8.1123, 4.51095, 5.13355, 8.57515, 7.48222, 8.91597, 2.26922, 1.67127, 6.20972, 5.51447, 5.59529, + 7.6583, 2.97689, 8.74954, 3.53749, 9.36144, 2.86963, 9.2585, 3.89263, 1.92284, 4.57657, 7.99819, + 9.3836, 1.19691, 3.23177, 7.07376, 9.90035, 9.54876, 1.83406, 2.42544, 2.79611, 4.98123, 2.76576, + 5.84942, 8.4264, 9.87311, 2.1547, 6.2748, 4.04931, 4.64838, 7.61106, 4.25832, 2.01333, 6.23769, + 7.10437, 7.40875, 9.62977, 9.96437, 2.11365, 6.23564, 3.32097, 6.85371, 4.39948, 1.80143, 7.94896, + 9.80996, 9.71046, 4.03104, 8.86624, 9.06961, 1.76453, 6.6127, 3.70704, 8.67179, 6.1986, 2.6383, + 9.37425, 2.02916, 1.8428, 7.76668, 2.05601, 6.04629, 3.92551, 9.68333, 5.45613, 5.21474, 3.96363, + 1.65678, 1.63911, 1.51876, 4.37833, 1.04078, 9.77478, 1.27549, 6.44559, 4.64664, 8.92835, 9.88028, + 9.66077, 6.02858, 3.18563, 1.17797, 3.09603, 5.34818, 9.70473, 2.86306, 5.49366, 1.87064, 7.23007, + 7.76858, 2.00428, 2.48244, 7.78903, 7.90607, 8.06873, 2.52497, 2.49137, 2.61559, 7.75215, 8.75981, + 8.30843, 1.23805, 1.52846, 4.92311, 1.50707, 7.50994, 6.00506, 6.58755, 2.16225, 5.52023, 5.58397, + 1.84541, 8.86125, 8.83867, 1.16775, 7.64101, 6.51206, 9.81013, 6.88963, 9.05285, 6.21656, 4.52452, + 4.71779, 1.10079, 3.99572, 8.55103, 6.94, 5.69519, 9.61978, 7.20197, 7.85556, 1.7112, 3.44624, + 4.25074, 7.87477, 9.34275, 4.44811, 3.02249, 3.0886, 6.17374, 6.47048, 5.63258, 8.19415, 8.7746, + 9.22689, 1.18991, 1.6878, 5.10915, 1.24905, 7.77101, 6.20286, 4.64343, 4.97444, 2.00702, 4.47644, + 1.36942, 1.8044, 7.54883, 7.56364, 2.33436, 4.36203, 7.75994, 3.35254, 1.30727, 8.72577, 6.31045, + 1.73164, 3.10143, 1.75297, 4.90549, 7.79632, 1.42155, 7.67554, 4.11003, 2.45134, 9.93904, 7.65293, + 9.55969, 9.49092, 1.16254, 5.35432, 5.68326, 2.68756, 9.79784, 8.90456, 4.41579, 3.77757, 6.9883, + 3.48931, 4.08603, 3.56546, 5.56486, 5.24488, 1.48558, 7.22185, 5.38926, 3.353, 8.21195, 7.22835, + 8.65753, 1.14195, 5.16396, 2.29447, 6.81389, 6.12026, 7.23296, 9.03696, 6.15992, 6.61774, 7.49631, + 6.15221, 8.23327, 3.52917, 4.44016, 7.59119, 7.20278, 7.87011, 7.4118, 4.88929, 7.10041, 8.72445, + 9.33136, 9.52693, 7.3276, 8.59106, 5.10541, 6.63513, 6.74733, 8.23243, 4.2018, 8.18058, 4.31184, + 2.65255, 3.67934, 8.10169, 4.09561, 9.69242, 5.3705, 3.02728, 7.75847, 8.23799, 6.83668, 8.52236, + 1.39545, 2.02494, 8.31176, 6.58431, 8.52873, 7.90275, 5.75623, 6.849, 9.04106, 4.84783, 9.78142, + 7.13852, 4.52031, 2.7178, 5.59408, 8.57777, 9.67441, 7.0772, 5.94922, 2.19153, 2.92101, 5.97566, + 4.4292, 5.06291, 4.20734, 5.03142, 3.77804, 3.11829, 4.04353, 6.05138, 2.68516, 3.14739, 9.85841, + 1.97082, 6.71148, 7.21038, 6.83885, 8.15292, 7.97213, 2.2081, 6.63164, 4.6698, 4.86985, 8.82823, + 1.55222, 5.35014, 1.02844, 2.0888, 5.70194, 3.81421, 1.48773, 8.81108, 7.00017, 9.13739, 9.59582, + 1.4752, 2.15818, 5.04522, 7.42531, 5.22722, 9.60355, 7.67216, 8.76329, 4.73203, 5.84448, 1.55273, + 7.13586, 8.91209, 8.22101, 1.03308, 6.54954, 4.1324, 7.53138, 1.53171, 6.15368, 4.95754, 6.49698, + 9.4097, 4.49705, 1.16446, 1.08714, 5.33318, 7.10617, 4.72117, 3.7985, 2.59871, 6.15397, 3.56235, + 9.46913, 8.74236, 1.13157, 5.54921, 4.62576, 7.72262, 8.03736, 8.69808, 2.61915, 5.70869, 6.4007, + 8.62539, 9.05605, 1.76502, 8.7073, 6.7695, 6.44984, 3.38996, 8.78573, 4.94558, 9.65115, 2.96345, + 4.44614, 2.69691, 3.58606, 4.21715, 5.94832, 7.18326, 7.90754, 6.07498, 3.91409, 3.49496, 7.76969, + 6.89076, 8.57066, 5.35908, 9.39983, 4.72367, 5.7885, 5.50385, 5.60082, 6.13971, 6.75445, 4.19049, + 1.55002, 2.17919, 4.86608, 2.83434, 2.54872, 6.78346, 5.17315, 5.68842, 9.60461, 7.62238, 8.55562, + 9.20677, 1.99981, 5.2998, 1.78484, 1.25381, 3.41057, 4.2545, 8.49597, 6.98817, 4.90633, 7.60492, + 9.93473, 9.60203, 8.31804, 3.88664, 2.34239, 2.57365, 6.30953, 7.92014, 4.19319, 6.73355, 2.84212, + 7.38741, 3.73816, 3.77684, 4.04575, 4.62478, 9.56991, 6.35541, 8.23529, 7.66465, 5.89206, 6.40386, + 2.00967, 9.06787, 8.96033, 6.39315, 6.09508, 8.71021, 7.24184, 5.04831, 6.63348, 7.41792, 8.8327, + 7.9134, 5.5876, 7.79328, 7.87538, 5.41605, 2.74772, 3.88932, 7.89934, 9.8233, 5.03149, 2.1468, + 1.45979, 4.32571, 5.31263, 4.43767, 9.98486, 3.49411, 8.23258, 5.19501, 5.87229, 2.6117, 1.36902, + 1.22311, 2.73083, 2.61211, 9.50159, 7.23431, 6.90859, 6.11484, 7.05027, 7.73243, 1.53322, 4.02925, + 3.35174, 5.23253, 9.18545, 4.2252, 4.3851, 5.4527, 8.23178, 7.43629, 5.49068, 3.10742, 6.21584, + 3.57903, 7.43574, 4.15479, 4.90666, 7.84751, 3.20987, 5.93707, 5.80065, 7.3108, 8.2003, 2.45924, + 2.65312, 9.98448, 7.86027, 4.41315, 1.29331, 6.86571, 9.36546, 6.37493, 2.67899, 1.42097, 6.94499, + 4.97888, 8.32001, 1.59289, 6.30954, 6.55959, 3.61335, 9.37199, 8.13811, 2.92084, 9.5581, 3.05901, + 4.57234, 6.70284, 5.98927, 5.8783, 5.00032, 5.46558, 5.609, 6.44573, 9.38336, 7.30968, 2.05593, + 2.70677, 3.13242, 2.30241, 6.14404, 5.85338, 7.28636, 4.81769, 9.25817, 2.41154, 6.88612, 2.93221, + 1.95278, 2.00515, 5.93273, 7.80319, 4.1318, 4.74696, 2.18834, 1.75543, 1.35063, 6.294, 4.75432, + 6.07164, 5.49934, 1.39722, 4.40799, 7.92895, 4.76634, 4.56078, 1.90916, 7.00981, 2.50819, 6.31957, + 3.46231, 2.75408, 5.33776, 5.67472, 4.72021, 8.5595, 3.42135, 9.40977, 5.0546, 7.58948, 7.83337, + 4.94762, 7.46493, 1.74705, 3.73444, 8.03541, 5.32388, 1.99355, 7.29553, 7.27851, 9.03012, 1.43236, + 2.39153, 2.41475, 3.99028, 3.46309, 4.02156, 8.97672, 9.23768, 4.02787, 8.05564, 8.04031, 3.48179, + 6.04413, 4.15226, 1.24342, 1.01373, 1.82379, 7.45745, 9.19248, 3.87985, 4.5868, 1.71719, 2.50581, + 2.41056, 9.03223, 5.30532, 1.4033, 9.71298, 6.57269, 2.46664, 8.00804, 5.28823, 9.80983, 3.90576, + 2.8259, 9.10474, 1.03754, 9.21314, 5.31505, 2.49488, 7.36028, 2.5922, 5.87357, 7.79499, 3.27024, + 3.66111, 8.68053, 9.44535, 7.72449, 8.18736, 2.98887, 5.96881, 1.96588, 5.81309, 5.08468, 5.78022, + 3.48668, 1.16396, 5.56096, 7.47946, 6.94378, 5.22245, 6.63033, 9.72782, 7.27977, 2.82604, 4.6663, + 2.51966, 3.46937, 6.84506, 7.7865, 1.43957, 8.07416, 3.61659, 4.01118, 3.4731, 9.81749, 6.91879, + 8.72981, 5.55872, 6.12225, 1.3078, 3.71204, 7.14632, 1.45034, 6.46249, 2.86946, 2.77546, 7.8614, + 8.86595, 9.12923, 9.287, 3.09589, 7.65446, 7.24201, 7.03379, 6.62077, 1.72055, 2.96869, 5.11422, + 9.71284, 6.79057, 1.55773, 1.54237, 8.82527, 7.19741, 9.51219, 6.03872, 3.71177, 3.04635, 5.78192, + 7.2869, 9.19943, 8.73105, 2.6986, 8.51169, 2.42288, 6.83215, 8.51947, 2.67462, 7.18716, 3.92524, + 3.64838, 6.45243, 8.06931, 7.97245, 7.70631, 8.17218, 2.62555, 3.87636, 6.24838, 2.62702, 3.4494, + 9.96515, 7.14449, 8.13208, 2.82945, 8.73997, 6.34161, 7.51236, 8.24821, 8.52709, 8.23385, 4.06273, + 7.85741, 7.51928, 3.33662, 9.07837, 6.40373, 6.78942, 7.70122, 6.72775, 9.35052, 1.78962, 5.69662, + 9.55886, 1.28139, 6.11816, 7.42325, 2.96934, 5.04452, 3.33527, 3.21557, 7.72912, 2.65684, 9.88658, + 2.13663, 6.46773, 3.83655, 6.00923, 8.59554, 5.53451, 3.37365, 7.61857, 6.51566, 6.2357, 9.20489, + 1.67264, 7.15646, 3.73925, 4.29553, 7.37171, 2.62476, 7.72404, 1.78335, 6.55747, 4.85313, 2.12074, + 8.00724, 2.16874, 8.1091, 1.97776, 3.19266, 8.89558, 6.5867, 10}, + std::vector{1, 1.08809, 7.34367, 1.84401, 3.65, 7.04672, 9.90727, 2.28341, 8.40458, 4.26864, + 2.12786, 1.3584, 5.67691, 6.93083, 2.5351, 2.80941, 7.32406, 7.16185, 3.82714, 3.52963, + 9.8522, 7.2122, 7.36617, 6.03843, 8.64737, 6.82174, 6.17929, 7.25098, 9.065, 5.62021, + 2.05619, 9.89887, 5.70674, 3.66863, 8.63875, 7.11328, 5.15165, 3.11287, 5.59069, 3.56016, + 7.04003, 9.88518, 5.09578, 8.85682, 1.44654, 5.53915, 1.61339, 1.18572, 3.6579, 1.24913, + 6.82981, 6.45494, 8.94083, 8.33236, 9.24103, 7.20789, 9.35252, 8.34363, 7.27433, 8.89566, + 8.11744, 8.27532, 9.8568, 3.84764, 7.58856, 1.72907, 6.9287, 5.69146, 2.46782, 4.1626, + 7.37082, 4.00921, 6.75911, 6.68399, 7.11442, 9.12597, 4.31382, 5.93337, 4.63211, 10}, + std::vector{0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, std::vector{ 0.468216, 0.618468, 0.667762, 0.668186, 0.667005, 0.667845, 0.667987, 0.569274, 0.668159, 0.66803, - 0.436517, 0.573615, 0.664074, 0.668079, 0.66007, 0.664627, 0.6657, 0.520998, 0.667513, 0.666071, + 0.436517, 0.573615, 0.664074, 0.668079, 0.66007, 0.664627, 0.6657, 0.520998, 0.667513, 0.666071, 0.413202, 0.525179, 0.649639, 0.666531, 0.639151, 0.651328, 0.654893, 0.478152, 0.662603, 0.656241, 0.396648, 0.481646, 0.618295, 0.658034, 0.601404, 0.621309, 0.628053, 0.444053, 0.645491, 0.630768, 0.385148, 0.446733, 0.573404, 0.634552, 0.553825, 0.577138, 0.585828, 0.418653, 0.611283, 0.589475, - 0.590675, 0.628293, 0.629709, 0.46966, 0.609654, 0.401027, 0.487158, 0.521658, 0.552734, 0.497312, - 0.631646, 0.655014, 0.655722, 0.510668, 0.644485, 0.419431, 0.531691, 0.569965, 0.60041, 0.54341, - 0.656666, 0.665734, 0.66593, 0.558256, 0.662223, 0.445122, 0.580236, 0.615459, 0.638483, 0.591706, + 0.590675, 0.628293, 0.629709, 0.46966, 0.609654, 0.401027, 0.487158, 0.521658, 0.552734, 0.497312, + 0.631646, 0.655014, 0.655722, 0.510668, 0.644485, 0.419431, 0.531691, 0.569965, 0.60041, 0.54341, + 0.656666, 0.665734, 0.66593, 0.558256, 0.662223, 0.445122, 0.580236, 0.615459, 0.638483, 0.591706, 0.666183, 0.667991, 0.668015, 0.605382, 0.667443, 0.479548, 0.623757, 0.647998, 0.659784, 0.632394, - 0.668043, 0.668183, 0.668184, 0.641772, 0.668155, 0.522673, 0.652657, 0.66351, 0.666941, 0.657024, + 0.668043, 0.668183, 0.668184, 0.641772, 0.668155, 0.522673, 0.652657, 0.66351, 0.666941, 0.657024, 0.665632, 0.663477, 0.668175, 0.668166, 0.654609, 0.530933, 0.664075, 0.668181, 0.657029, 0.668173, - 0.654654, 0.647903, 0.667802, 0.66763, 0.627494, 0.486513, 0.649644, 0.667934, 0.632404, 0.667755, - 0.627581, 0.615297, 0.664341, 0.663266, 0.585088, 0.450492, 0.618303, 0.665272, 0.59172, 0.664032, - 0.585204, 0.56977, 0.650444, 0.647309, 0.536576, 0.423354, 0.573413, 0.653419, 0.543424, 0.649515, + 0.654654, 0.647903, 0.667802, 0.66763, 0.627494, 0.486513, 0.649644, 0.667934, 0.632404, 0.667755, + 0.627581, 0.615297, 0.664341, 0.663266, 0.585088, 0.450492, 0.618303, 0.665272, 0.59172, 0.664032, + 0.585204, 0.56977, 0.650444, 0.647309, 0.536576, 0.423354, 0.573413, 0.653419, 0.543424, 0.649515, 0.536694, 0.521472, 0.619718, 0.614293, 0.491353, 0.403801, 0.524983, 0.625194, 0.497325, 0.618077, 0.576187, 0.627698, 0.585362, 0.604275, 0.608023, 0.413104, 0.573282, 0.588705, 0.633605, 0.513641, - 0.620548, 0.654713, 0.627701, 0.641052, 0.643462, 0.436382, 0.618196, 0.6302, 0.657595, 0.561469, + 0.620548, 0.654713, 0.627701, 0.641052, 0.643462, 0.436382, 0.618196, 0.6302, 0.657595, 0.561469, 0.650907, 0.665649, 0.654715, 0.660863, 0.661828, 0.468037, 0.649583, 0.655964, 0.666422, 0.608212, - 0.664492, 0.667981, 0.66565, 0.667174, 0.667368, 0.508666, 0.664055, 0.665996, 0.668068, 0.643581, - 0.667825, 0.668183, 0.667981, 0.668136, 0.66815, 0.556073, 0.667759, 0.668022, 0.668186, 0.661874, - 0.661398, 0.668186, 0.667723, 0.668117, 0.667515, 0.66636, 0.666765, 0.560186, 0.668181, 0.668183, - 0.642374, 0.668095, 0.66383, 0.666946, 0.662609, 0.65735, 0.659013, 0.51245, 0.667939, 0.667978, + 0.664492, 0.667981, 0.66565, 0.667174, 0.667368, 0.508666, 0.664055, 0.665996, 0.668068, 0.643581, + 0.667825, 0.668183, 0.667981, 0.668136, 0.66815, 0.556073, 0.667759, 0.668022, 0.668186, 0.661874, + 0.661398, 0.668186, 0.667723, 0.668117, 0.667515, 0.66636, 0.666765, 0.560186, 0.668181, 0.668183, + 0.642374, 0.668095, 0.66383, 0.666946, 0.662609, 0.65735, 0.659013, 0.51245, 0.667939, 0.667978, 0.606315, 0.666698, 0.648921, 0.659806, 0.645507, 0.633083, 0.636719, 0.471112, 0.665316, 0.665624, 0.559309, 0.658727, 0.617043, 0.638534, 0.611309, 0.592663, 0.597827, 0.438701, 0.653566, 0.654623, 0.511639, 0.636078, 0.571877, 0.600486, 0.565051, 0.544415, 0.549923, 0.414776, 0.625475, 0.627521, 0.636308, 0.585028, 0.566575, 0.598958, 0.536327, 0.497101, 0.561873, 0.408877, 0.624184, 0.51352, - 0.65883, 0.627448, 0.612609, 0.637495, 0.584843, 0.54317, 0.608564, 0.430487, 0.652885, 0.561339, + 0.65883, 0.627448, 0.612609, 0.637495, 0.584843, 0.54317, 0.608564, 0.430487, 0.652885, 0.561339, 0.666722, 0.654586, 0.646298, 0.659355, 0.627308, 0.591478, 0.643802, 0.460154, 0.665112, 0.608099, - 0.668097, 0.665613, 0.662901, 0.666844, 0.654514, 0.632229, 0.661961, 0.49883, 0.667912, 0.643509, - 0.668186, 0.667977, 0.667567, 0.668108, 0.665593, 0.656946, 0.667394, 0.54513, 0.66818, 0.661847, + 0.668097, 0.665613, 0.662901, 0.666844, 0.654514, 0.632229, 0.661961, 0.49883, 0.667912, 0.643509, + 0.668186, 0.667977, 0.667567, 0.668108, 0.665593, 0.656946, 0.667394, 0.54513, 0.66818, 0.661847, 0.661547, 0.667282, 0.667096, 0.668178, 0.660535, 0.668076, 0.659185, 0.660516, 0.668175, 0.473006, 0.642746, 0.661391, 0.660491, 0.667864, 0.640257, 0.666507, 0.637108, 0.640212, 0.667785, 0.440135, 0.606897, 0.642355, 0.640151, 0.664764, 0.603065, 0.657937, 0.598393, 0.602997, 0.664228, 0.415812, 0.559969, 0.606286, 0.602906, 0.651762, 0.555663, 0.634343, 0.550536, 0.555588, 0.650103, 0.39848, - 0.51225, 0.559276, 0.555486, 0.6221, 0.508292, 0.594429, 0.503649, 0.508223, 0.619113, 0.386411, - 0.608718, 0.620998, 0.457879, 0.54662, 0.554179, 0.630205, 0.568834, 0.62793, 0.473801, 0.626594, + 0.51225, 0.559276, 0.555486, 0.6221, 0.508292, 0.594429, 0.503649, 0.508223, 0.619113, 0.386411, + 0.608718, 0.620998, 0.457879, 0.54662, 0.554179, 0.630205, 0.568834, 0.62793, 0.473801, 0.626594, 0.643899, 0.651157, 0.495954, 0.594746, 0.601725, 0.655966, 0.614515, 0.654831, 0.515734, 0.654148, - 0.661998, 0.664572, 0.541864, 0.634567, 0.639366, 0.665997, 0.64744, 0.665683, 0.563712, 0.665487, + 0.661998, 0.664572, 0.541864, 0.634567, 0.639366, 0.665997, 0.64744, 0.665683, 0.563712, 0.665487, 0.667401, 0.667837, 0.590227, 0.658041, 0.660161, 0.668022, 0.663313, 0.667985, 0.610158, 0.667961, 0.668152, 0.668177, 0.631318, 0.666532, 0.667025, 0.668184, 0.667638, 0.668183, 0.644798, 0.668182, - 0.666934, 0.636465, 0.668176, 0.668177, 0.6627, 0.668186, 0.663435, 0.667808, 0.66818, 0.667477, - 0.659751, 0.59746, 0.667824, 0.66784, 0.645753, 0.668092, 0.647783, 0.664381, 0.667904, 0.662402, + 0.666934, 0.636465, 0.668176, 0.668177, 0.6627, 0.668186, 0.663435, 0.667808, 0.66818, 0.667477, + 0.659751, 0.59746, 0.667824, 0.66784, 0.645753, 0.668092, 0.647783, 0.664381, 0.667904, 0.662402, 0.638407, 0.549527, 0.664483, 0.664596, 0.611711, 0.666671, 0.615095, 0.650567, 0.665048, 0.644956, 0.600299, 0.502744, 0.650882, 0.651231, 0.565521, 0.658614, 0.569527, 0.619937, 0.652675, 0.610413, - 0.552612, 0.463272, 0.620503, 0.621133, 0.517435, 0.635826, 0.52124, 0.575428, 0.62379, 0.564008, + 0.552612, 0.463272, 0.620503, 0.621133, 0.517435, 0.635826, 0.52124, 0.575428, 0.62379, 0.564008, 0.619111, 0.625883, 0.633724, 0.600854, 0.532704, 0.497421, 0.571602, 0.461671, 0.475281, 0.63631, - 0.650102, 0.653779, 0.65765, 0.638782, 0.581251, 0.543534, 0.616817, 0.500738, 0.517531, 0.658831, - 0.664228, 0.665379, 0.666436, 0.659912, 0.624548, 0.591824, 0.64879, 0.547281, 0.565623, 0.666723, - 0.667785, 0.667947, 0.668069, 0.66697, 0.653078, 0.632479, 0.663785, 0.595367, 0.611798, 0.668097, - 0.668175, 0.668182, 0.668186, 0.668119, 0.66517, 0.657065, 0.667716, 0.635005, 0.645806, 0.668186}, + 0.650102, 0.653779, 0.65765, 0.638782, 0.581251, 0.543534, 0.616817, 0.500738, 0.517531, 0.658831, + 0.664228, 0.665379, 0.666436, 0.659912, 0.624548, 0.591824, 0.64879, 0.547281, 0.565623, 0.666723, + 0.667785, 0.667947, 0.668069, 0.66697, 0.653078, 0.632479, 0.663785, 0.595367, 0.611798, 0.668097, + 0.668175, 0.668182, 0.668186, 0.668119, 0.66517, 0.657065, 0.667716, 0.635005, 0.645806, 0.668186}, std::vector{ 0.385148, 0.446733, 0.573404, 0.634552, 0.553825, 0.577138, 0.585828, 0.418653, 0.611283, 0.589475, - 0.590675, 0.628293, 0.629709, 0.46966, 0.609654, 0.401027, 0.487158, 0.521658, 0.552734, 0.497312, + 0.590675, 0.628293, 0.629709, 0.46966, 0.609654, 0.401027, 0.487158, 0.521658, 0.552734, 0.497312, 0.536694, 0.521472, 0.619718, 0.614293, 0.491353, 0.403801, 0.524983, 0.625194, 0.497325, 0.618077, 0.576187, 0.627698, 0.585362, 0.604275, 0.608023, 0.413104, 0.573282, 0.588705, 0.633605, 0.513641, 0.511639, 0.636078, 0.571877, 0.600486, 0.565051, 0.544415, 0.549923, 0.414776, 0.625475, 0.627521, 0.636308, 0.585028, 0.566575, 0.598958, 0.536327, 0.497101, 0.561873, 0.408877, 0.624184, 0.51352, - 0.51225, 0.559276, 0.555486, 0.6221, 0.508292, 0.594429, 0.503649, 0.508223, 0.619113, 0.386411, - 0.608718, 0.620998, 0.457879, 0.54662, 0.554179, 0.630205, 0.568834, 0.62793, 0.473801, 0.626594, - 0.552612, 0.463272, 0.620503, 0.621133, 0.517435, 0.635826, 0.52124, 0.575428, 0.62379, 0.564008, + 0.51225, 0.559276, 0.555486, 0.6221, 0.508292, 0.594429, 0.503649, 0.508223, 0.619113, 0.386411, + 0.608718, 0.620998, 0.457879, 0.54662, 0.554179, 0.630205, 0.568834, 0.62793, 0.473801, 0.626594, + 0.552612, 0.463272, 0.620503, 0.621133, 0.517435, 0.635826, 0.52124, 0.575428, 0.62379, 0.564008, 0.619111, 0.625883, 0.633724, 0.600854, 0.532704, 0.497421, 0.571602, 0.461671, 0.475281, 0.63631}, std::vector{ - 0.657064, 0.808159, 1.28627, 1.82832, 1.18444, 1.30787, 1.3615, 0.735716, 1.55641, 1.3856, - 1.39376, 1.74058, 1.7592, 0.872984, 1.54166, 0.693415, 0.926748, 1.04718, 1.17924, 0.959985, - 1.10759, 1.04646, 1.63992, 1.58476, 0.940282, 0.699929, 1.06005, 1.70199, 0.960028, 1.62263, - 1.3023, 1.73294, 1.3585, 1.4956, 1.52728, 0.722161, 1.28558, 1.38043, 1.81407, 1.01716, - 1.00988, 1.85212, 1.27767, 1.46531, 1.24067, 1.14104, 1.16607, 0.72622, 1.70537, 1.7307, - 1.8558, 1.35635, 1.24873, 1.45354, 1.10604, 0.959278, 1.22421, 0.711984, 1.68998, 1.01672, - 1.01209, 1.21108, 1.19243, 1.66604, 0.997881, 1.42007, 0.98159, 0.997636, 1.63348, 0.6599, - 1.53336, 1.6538, 0.838953, 1.15094, 1.18613, 1.76588, 1.26089, 1.73591, 0.885339, 1.71907, - 1.17867, 0.854332, 1.64838, 1.65528, 1.03119, 1.84811, 1.04557, 1.29788, 1.68537, 1.23522, - 1.63346, 1.71032, 1.81584, 1.46818, 1.09099, 0.960351, 1.27613, 0.849735, 0.889806, 1.85583}), + 0.657064, 0.808159, 1.28627, 1.82832, 1.18444, 1.30787, 1.3615, 0.735716, 1.55641, 1.3856, + 1.39376, 1.74058, 1.7592, 0.872984, 1.54166, 0.693415, 0.926748, 1.04718, 1.17924, 0.959985, + 1.10759, 1.04646, 1.63992, 1.58476, 0.940282, 0.699929, 1.06005, 1.70199, 0.960028, 1.62263, + 1.3023, 1.73294, 1.3585, 1.4956, 1.52728, 0.722161, 1.28558, 1.38043, 1.81407, 1.01716, + 1.00988, 1.85212, 1.27767, 1.46531, 1.24067, 1.14104, 1.16607, 0.72622, 1.70537, 1.7307, + 1.8558, 1.35635, 1.24873, 1.45354, 1.10604, 0.959278, 1.22421, 0.711984, 1.68998, 1.01672, + 1.01209, 1.21108, 1.19243, 1.66604, 0.997881, 1.42007, 0.98159, 0.997636, 1.63348, 0.6599, + 1.53336, 1.6538, 0.838953, 1.15094, 1.18613, 1.76588, 1.26089, 1.73591, 0.885339, 1.71907, + 1.17867, 0.854332, 1.64838, 1.65528, 1.03119, 1.84811, 1.04557, 1.29788, 1.68537, 1.23522, + 1.63346, 1.71032, 1.81584, 1.46818, 1.09099, 0.960351, 1.27613, 0.849735, 0.889806, 1.85583}), }; return params; } @@ -2595,761 +2723,730 @@ template std::vector generateV1ParamsBF16() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ LSTMSequenceV1Params( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, - 5.78125, 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, - 2.39062, 7.71875, 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, - 8.25, 6.90625, 6.625, 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, - 1.45312, 6.78125, 8.25, 7.4375, 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, - 2.15625, 7.5625, 8.5, 9.9375, 3.85938, 7.0625, 7.625, 8.125, 6.375, 2.53125, - 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, 8.375, 1.21875, 9.125, 5.4375, - 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, 9, 8.25, 7.5625, - 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, 5.375, 2.96875, - 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, 2.59375, - 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, - 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, - 1.125, 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, - 1.90625, 7.1875, 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, - 9.375, 9, 4.6875, 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, - 1.74219, 3.03125, 9.0625, 3.20312, 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, - 7.75, 9.5, 6.90625, 5.8125, 4.25, 3.26562, 4.375, 7.5, 6.84375, 4.3125, - 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, 8.25, 6.84375, 1.58594, 3.8125, - 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, 9.5, 3.3125, 1.96875, - 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, 7.84375, 1.38281, - 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, 2.28125, - 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, - 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, - 5.15625, 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, - 9.9375, 9.3125, 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 6.53125, - 3.57812, 9.5, 5.0625, 4.75, 7.875, 3.375, 6.21875, 1.875, 4.375, 5.375, - 6.59375, 5.1875, 7.625, 1.26562, 9.25, 7.25, 5.78125, 7.4375, 5.65625, 7.5625, - 1.92188, 4.71875, 2.09375, 1.13281, 6.78125, 9.125, 5, 8.125, 1.6875, 2.48438, - 2.375, 3.8125, 1.71875, 6.5, 8.875, 4.25, 2.45312, 2.40625, 9.25, 2.59375, - 1.03125, 8.75, 8.25, 3.60938, 3.71875, 6.25, 3.1875, 5.0625, 7.90625, 4.6875, - 7.3125, 8.9375, 9, 7.21875, 9.1875, 3.5, 3.03125, 1.57812, 4.78125, 2.78125, - 2.5, 9.375, 2.89062, 8.6875, 8.5, 9.5625, 9.25, 1.46875, 7.125, 6.1875, - 4.6875, 5.3125, 3, 1.19531, 8.5, 4.375, 8, 4.71875, 7.625, 6.4375, - 8.75, 7.03125, 9.75, 8.5, 4.6875, 8, 6.375, 4.59375, 7.625, 8.125, - 3.40625, 9, 7.875, 3.35938, 9.375, 9.875, 8.875, 8.625, 2.03125, 7.5625, - 9.6875, 4.1875, 3.71875, 8.9375, 6.46875, 8.75, 2.5, 9.625, 8.75, 1, - 7.53125, 1.14844, 1.58594, 3.8125, 5.65625, 9.9375, 6.34375, 2.34375, 5.125, 2.5, - 6.3125, 7.8125, 3.875, 1.625, 8.375, 7.34375, 1.82812, 5.21875, 2.59375, 1.09375, - 2.98438, 7.96875, 5.25, 8.125, 9.25, 2.34375, 9.875, 1.21094, 6.4375, 7.84375, - 9.25, 3, 4.3125, 3.35938, 1.0625, 5.125, 6.875, 3.25, 2.5, 6.125, - 5.4375, 8.625, 8.125, 4.375, 8.375, 4.875, 4.3125, 8.5, 2.15625, 4.3125, - 2.78125, 1.35938, 1.1875, 6, 6.6875, 5.0625, 5.3125, 7.5, 2.90625, 4.375, - 3.375, 8.5625, 2.6875, 5.21875, 9, 6.0625, 7.4375, 6.9375, 1.60938, 5.15625, - 3.20312, 6.625, 9.25, 3, 2.84375, 7.59375, 5.1875, 4.4375, 7.875, 2.75, - 5.78125, 3.4375, 5.9375, 3.25, 3.10938, 2.375, 3.46875, 7.9375, 1.14844, 3.29688, - 4.8125, 2.14062, 1.42188, 7, 1.53125, 4.6875, 3.875, 7, 5, 6.9375, - 2.51562, 3.75, 3.71875, 2.8125, 5.03125, 3, 5.25, 2.07812, 7.3125, 1.32812, - 7.3125, 1.30469, 6.3125, 3.0625, 9.75, 3.0625, 6.9375, 6.625, 8.875, 9, - 4.71875, 8, 8.125, 7.5, 2.23438, 3.78125, 3.34375, 4.25, 3.03125, 2.75, - 5.78125, 9.375, 7.25, 6.0625, 3.1875, 8.375, 2.75, 4.125, 8.125, 10}, - std::vector{ - 1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, - 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, - 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, - 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, - 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 10}, - std::vector{ - 1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, - 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, - 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, - 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, - 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 10}, + 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, 5.78125, + 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, 2.39062, 7.71875, + 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, 8.25, 6.90625, 6.625, + 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, 1.45312, 6.78125, 8.25, 7.4375, + 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, 2.15625, 7.5625, 8.5, 9.9375, 3.85938, + 7.0625, 7.625, 8.125, 6.375, 2.53125, 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, + 8.375, 1.21875, 9.125, 5.4375, 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, + 9, 8.25, 7.5625, 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, + 5.375, 2.96875, 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, + 2.59375, 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, + 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, 1.125, + 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, 1.90625, 7.1875, + 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, 9.375, 9, 4.6875, + 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, 1.74219, 3.03125, 9.0625, 3.20312, + 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, 7.75, 9.5, 6.90625, 5.8125, 4.25, + 3.26562, 4.375, 7.5, 6.84375, 4.3125, 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, + 8.25, 6.84375, 1.58594, 3.8125, 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, + 9.5, 3.3125, 1.96875, 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, + 7.84375, 1.38281, 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, + 2.28125, 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, + 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, 5.15625, + 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, 9.9375, 9.3125, + 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 6.53125, 3.57812, 9.5, 5.0625, + 4.75, 7.875, 3.375, 6.21875, 1.875, 4.375, 5.375, 6.59375, 5.1875, 7.625, 1.26562, + 9.25, 7.25, 5.78125, 7.4375, 5.65625, 7.5625, 1.92188, 4.71875, 2.09375, 1.13281, 6.78125, + 9.125, 5, 8.125, 1.6875, 2.48438, 2.375, 3.8125, 1.71875, 6.5, 8.875, 4.25, + 2.45312, 2.40625, 9.25, 2.59375, 1.03125, 8.75, 8.25, 3.60938, 3.71875, 6.25, 3.1875, + 5.0625, 7.90625, 4.6875, 7.3125, 8.9375, 9, 7.21875, 9.1875, 3.5, 3.03125, 1.57812, + 4.78125, 2.78125, 2.5, 9.375, 2.89062, 8.6875, 8.5, 9.5625, 9.25, 1.46875, 7.125, + 6.1875, 4.6875, 5.3125, 3, 1.19531, 8.5, 4.375, 8, 4.71875, 7.625, 6.4375, + 8.75, 7.03125, 9.75, 8.5, 4.6875, 8, 6.375, 4.59375, 7.625, 8.125, 3.40625, + 9, 7.875, 3.35938, 9.375, 9.875, 8.875, 8.625, 2.03125, 7.5625, 9.6875, 4.1875, + 3.71875, 8.9375, 6.46875, 8.75, 2.5, 9.625, 8.75, 1, 7.53125, 1.14844, 1.58594, + 3.8125, 5.65625, 9.9375, 6.34375, 2.34375, 5.125, 2.5, 6.3125, 7.8125, 3.875, 1.625, + 8.375, 7.34375, 1.82812, 5.21875, 2.59375, 1.09375, 2.98438, 7.96875, 5.25, 8.125, 9.25, + 2.34375, 9.875, 1.21094, 6.4375, 7.84375, 9.25, 3, 4.3125, 3.35938, 1.0625, 5.125, + 6.875, 3.25, 2.5, 6.125, 5.4375, 8.625, 8.125, 4.375, 8.375, 4.875, 4.3125, + 8.5, 2.15625, 4.3125, 2.78125, 1.35938, 1.1875, 6, 6.6875, 5.0625, 5.3125, 7.5, + 2.90625, 4.375, 3.375, 8.5625, 2.6875, 5.21875, 9, 6.0625, 7.4375, 6.9375, 1.60938, + 5.15625, 3.20312, 6.625, 9.25, 3, 2.84375, 7.59375, 5.1875, 4.4375, 7.875, 2.75, + 5.78125, 3.4375, 5.9375, 3.25, 3.10938, 2.375, 3.46875, 7.9375, 1.14844, 3.29688, 4.8125, + 2.14062, 1.42188, 7, 1.53125, 4.6875, 3.875, 7, 5, 6.9375, 2.51562, 3.75, + 3.71875, 2.8125, 5.03125, 3, 5.25, 2.07812, 7.3125, 1.32812, 7.3125, 1.30469, 6.3125, + 3.0625, 9.75, 3.0625, 6.9375, 6.625, 8.875, 9, 4.71875, 8, 8.125, 7.5, + 2.23438, 3.78125, 3.34375, 4.25, 3.03125, 2.75, 5.78125, 9.375, 7.25, 6.0625, 3.1875, + 8.375, 2.75, 4.125, 8.125, 10}, + std::vector{1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, + 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, + 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, + 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, + 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 10}, + std::vector{1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, + 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, + 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, + 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, + 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, - 6, 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, - 3.82812, 7.28125, 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, - 1.57812, 9.125, 6, 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, - 1.42969, 4.5625, 1.10156, 5.4375, 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, - 8.625, 4.125, 6.1875, 1.375, 6.1875, 8.875, 6, 3.40625, 1.75781, 4.8125, - 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, 8.25, 7.40625, 2.40625, 7, - 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, 7, 7, 2.5, - 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, 2.4375, 3.34375, - 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, 3.76562, - 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, - 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, - 1.32812, 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, - 6.8125, 9.25, 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, - 3.3125, 3.03125, 8.5, 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, - 2.5, 4.0625, 6.15625, 8, 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, - 9.625, 7.5, 7.84375, 7.40625, 9.75, 7.09375, 2.0625, 1.5, 6.53125, 5, - 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, 4.0625, 4.1875, 1.46875, 5, - 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, 2.71875, 9.9375, 7.8125, - 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, 6.625, 5.34375, - 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, 6.1875, - 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, - 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, - 7.3125, 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, - 8.625, 4.4375, 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, - 7.125, 8.9375, 6.6875, 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, - 1.03906, 7.28125, 2.64062, 8.125, 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, - 6.25, 8.75, 1.80469, 3.375, 2.4375, 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, - 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, 7.40625, 6.375, 7.875, 4, - 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, 7.625, 5.1875, 6.71875, - 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, 2.625, 1.21875, - 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, 2.5, - 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, - 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, - 2.625, 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, - 6.15625, 5.3125, 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, - 9.875, 9.8125, 5.78125, 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, - 3.1875, 4.75, 8.25, 6.125, 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, - 4.40625, 6.375, 4.375, 1.48438, 2.65625, 1.80469, 7.5, 9.875, 7.25, 7.875, - 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, 9.875, 1.76562, 3.3125, 10}, - std::vector{ - 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, - 9.0625, 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, - 2.39062, 9.25, 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, - 2.65625, 2.10938, 8.375, 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, - 7.625, 8.25, 2.10938, 8.625, 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, - 8.5625, 8.75, 7.46875, 9.625, 8.875, 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, - 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, 7.65625, 1.75, 2.96875, 3.875, - 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, 1.86719, 9.25, 7.125, - 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, 9.375, 9.1875, - 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, 6.25, - 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, - 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, - 4.0625, 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, - 6.25, 7.3125, 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, - 2.10938, 9.5, 6.25, 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, - 1.79688, 9, 7.9375, 2.64062, 9.75, 8.75, 9.6875, 3.59375, 4, 10, - 8.875, 2.82812, 9.0625, 8.8125, 1.76562, 2.23438, 6.625, 2.375, 3.70312, 8.375, - 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, 9.375, 1.625, 2.03125, 9.5, - 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, 5.65625, 3.92188, 4.125, - 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, 1.65625, 3.54688, - 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, 2.78125, - 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, - 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, - 5.34375, 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, - 7.21875, 7.125, 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, - 7.875, 4.6875, 8.0625, 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, - 7.75, 2.28125, 8.75, 7.6875, 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, - 4.9375, 5.21875, 1.5, 5.125, 7.5, 7.1875, 6, 2.71875, 6.5625, 9.875, - 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, 1.84375, 8.75, 8.875, 9.6875, - 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, 5.6875, 9.75, 8.125, - 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, 4.6875, 9.875, - 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, 7.8125, - 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, - 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, - 3.09375, 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, - 8.75, 4.21875, 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, - 1.25, 3.76562, 7.75, 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, - 2, 9, 4.46875, 7.25, 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, - 7.5625, 1.92969, 2.32812, 3.25, 4.375, 1.125, 7.75, 2.4375, 3.34375, 5.6875, - 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, 1.73438, 2.5, 3.09375, 10}, - std::vector{ - 1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, - 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, - 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, - 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 10}, - std::vector{ - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094}, - std::vector{ - 0.523438, 0.667969, 0.632812, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, + 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, 6, + 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, 3.82812, 7.28125, + 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, 1.57812, 9.125, 6, + 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, 1.42969, 4.5625, 1.10156, 5.4375, + 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, 8.625, 4.125, 6.1875, 1.375, 6.1875, + 8.875, 6, 3.40625, 1.75781, 4.8125, 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, + 8.25, 7.40625, 2.40625, 7, 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, + 7, 7, 2.5, 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, + 2.4375, 3.34375, 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, + 3.76562, 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, + 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, 1.32812, + 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, 6.8125, 9.25, + 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, 3.3125, 3.03125, 8.5, + 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, 2.5, 4.0625, 6.15625, 8, + 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, 9.625, 7.5, 7.84375, 7.40625, 9.75, + 7.09375, 2.0625, 1.5, 6.53125, 5, 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, + 4.0625, 4.1875, 1.46875, 5, 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, + 2.71875, 9.9375, 7.8125, 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, + 6.625, 5.34375, 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, + 6.1875, 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, + 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, 7.3125, + 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, 8.625, 4.4375, + 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, 7.125, 8.9375, 6.6875, + 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, 1.03906, 7.28125, 2.64062, 8.125, + 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, 6.25, 8.75, 1.80469, 3.375, 2.4375, + 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, + 7.40625, 6.375, 7.875, 4, 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, + 7.625, 5.1875, 6.71875, 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, + 2.625, 1.21875, 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, + 2.5, 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, + 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, 2.625, + 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, 6.15625, 5.3125, + 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, 9.875, 9.8125, 5.78125, + 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, 3.1875, 4.75, 8.25, 6.125, + 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, 4.40625, 6.375, 4.375, 1.48438, 2.65625, + 1.80469, 7.5, 9.875, 7.25, 7.875, 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, + 9.875, 1.76562, 3.3125, 10}, + std::vector{ + 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, 9.0625, + 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, 2.39062, 9.25, + 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, 2.65625, 2.10938, 8.375, + 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, 7.625, 8.25, 2.10938, 8.625, + 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, 8.5625, 8.75, 7.46875, 9.625, 8.875, + 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, + 7.65625, 1.75, 2.96875, 3.875, 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, + 1.86719, 9.25, 7.125, 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, + 9.375, 9.1875, 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, + 6.25, 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, + 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, 4.0625, + 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, 6.25, 7.3125, + 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, 2.10938, 9.5, 6.25, + 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, 1.79688, 9, 7.9375, 2.64062, + 9.75, 8.75, 9.6875, 3.59375, 4, 10, 8.875, 2.82812, 9.0625, 8.8125, 1.76562, + 2.23438, 6.625, 2.375, 3.70312, 8.375, 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, + 9.375, 1.625, 2.03125, 9.5, 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, + 5.65625, 3.92188, 4.125, 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, + 1.65625, 3.54688, 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, + 2.78125, 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, + 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, 5.34375, + 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, 7.21875, 7.125, + 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, 7.875, 4.6875, 8.0625, + 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, 7.75, 2.28125, 8.75, 7.6875, + 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, 4.9375, 5.21875, 1.5, 5.125, 7.5, + 7.1875, 6, 2.71875, 6.5625, 9.875, 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, + 1.84375, 8.75, 8.875, 9.6875, 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, + 5.6875, 9.75, 8.125, 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, + 4.6875, 9.875, 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, + 7.8125, 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, + 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, 3.09375, + 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, 8.75, 4.21875, + 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, 1.25, 3.76562, 7.75, + 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, 2, 9, 4.46875, 7.25, + 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, 7.5625, 1.92969, 2.32812, 3.25, 4.375, + 1.125, 7.75, 2.4375, 3.34375, 5.6875, 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, + 1.73438, 2.5, 3.09375, 10}, + std::vector{1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, + 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, + 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, + 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 10}, + std::vector{0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094}, + std::vector{ + 0.523438, 0.667969, 0.632812, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.539062, 0.667969, 0.617188, 0.640625, 0.664062, 0.664062, 0.667969, 0.664062, 0.664062, 0.648438, - 0.546875, 0.664062, 0.601562, 0.625, 0.65625, 0.65625, 0.667969, 0.65625, 0.65625, 0.632812, + 0.546875, 0.664062, 0.601562, 0.625, 0.65625, 0.65625, 0.667969, 0.65625, 0.65625, 0.632812, 0.546875, 0.648438, 0.585938, 0.609375, 0.648438, 0.640625, 0.664062, 0.648438, 0.640625, 0.617188, - 0.554688, 0.632812, 0.578125, 0.59375, 0.632812, 0.625, 0.65625, 0.632812, 0.625, 0.601562, + 0.554688, 0.632812, 0.578125, 0.59375, 0.632812, 0.625, 0.65625, 0.632812, 0.625, 0.601562, 0.554688, 0.617188, 0.570312, 0.585938, 0.617188, 0.609375, 0.640625, 0.617188, 0.609375, 0.585938, - 0.554688, 0.601562, 0.570312, 0.578125, 0.601562, 0.59375, 0.625, 0.601562, 0.59375, 0.578125, - 0.554688, 0.59375, 0.5625, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.585938, 0.570312, - 0.554688, 0.585938, 0.5625, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.578125, 0.570312, - 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, + 0.554688, 0.601562, 0.570312, 0.578125, 0.601562, 0.59375, 0.625, 0.601562, 0.59375, 0.578125, + 0.554688, 0.59375, 0.5625, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.585938, 0.570312, + 0.554688, 0.585938, 0.5625, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.578125, 0.570312, + 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, 0.667969, 0.617188, 0.667969, 0.667969, 0.601562, 0.664062, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.601562, 0.664062, 0.667969, 0.585938, 0.648438, 0.667969, 0.667969, 0.667969, 0.667969, - 0.65625, 0.585938, 0.664062, 0.667969, 0.578125, 0.632812, 0.664062, 0.667969, 0.664062, 0.664062, - 0.648438, 0.578125, 0.648438, 0.664062, 0.570312, 0.617188, 0.65625, 0.664062, 0.648438, 0.664062, - 0.632812, 0.570312, 0.632812, 0.65625, 0.570312, 0.601562, 0.648438, 0.648438, 0.632812, 0.648438, - 0.617188, 0.570312, 0.617188, 0.640625, 0.5625, 0.585938, 0.632812, 0.632812, 0.617188, 0.632812, - 0.601562, 0.5625, 0.601562, 0.625, 0.5625, 0.578125, 0.617188, 0.617188, 0.601562, 0.617188, - 0.585938, 0.5625, 0.585938, 0.609375, 0.5625, 0.570312, 0.601562, 0.601562, 0.59375, 0.601562, - 0.578125, 0.5625, 0.578125, 0.59375, 0.554688, 0.570312, 0.585938, 0.59375, 0.585938, 0.585938, - 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, + 0.65625, 0.585938, 0.664062, 0.667969, 0.578125, 0.632812, 0.664062, 0.667969, 0.664062, 0.664062, + 0.648438, 0.578125, 0.648438, 0.664062, 0.570312, 0.617188, 0.65625, 0.664062, 0.648438, 0.664062, + 0.632812, 0.570312, 0.632812, 0.65625, 0.570312, 0.601562, 0.648438, 0.648438, 0.632812, 0.648438, + 0.617188, 0.570312, 0.617188, 0.640625, 0.5625, 0.585938, 0.632812, 0.632812, 0.617188, 0.632812, + 0.601562, 0.5625, 0.601562, 0.625, 0.5625, 0.578125, 0.617188, 0.617188, 0.601562, 0.617188, + 0.585938, 0.5625, 0.585938, 0.609375, 0.5625, 0.570312, 0.601562, 0.601562, 0.59375, 0.601562, + 0.578125, 0.5625, 0.578125, 0.59375, 0.554688, 0.570312, 0.585938, 0.59375, 0.585938, 0.585938, + 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, 0.667969, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.617188, 0.667969, 0.617188, - 0.667969, 0.65625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.601562, 0.667969, 0.601562, - 0.664062, 0.648438, 0.667969, 0.648438, 0.667969, 0.65625, 0.617188, 0.585938, 0.664062, 0.59375, - 0.648438, 0.632812, 0.664062, 0.632812, 0.664062, 0.648438, 0.601562, 0.578125, 0.65625, 0.585938, + 0.667969, 0.65625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.601562, 0.667969, 0.601562, + 0.664062, 0.648438, 0.667969, 0.648438, 0.667969, 0.65625, 0.617188, 0.585938, 0.664062, 0.59375, + 0.648438, 0.632812, 0.664062, 0.632812, 0.664062, 0.648438, 0.601562, 0.578125, 0.65625, 0.585938, 0.632812, 0.617188, 0.648438, 0.617188, 0.648438, 0.632812, 0.585938, 0.570312, 0.640625, 0.570312, - 0.617188, 0.601562, 0.632812, 0.601562, 0.632812, 0.617188, 0.578125, 0.570312, 0.625, 0.570312, - 0.601562, 0.585938, 0.617188, 0.585938, 0.617188, 0.601562, 0.570312, 0.5625, 0.609375, 0.5625, - 0.59375, 0.578125, 0.601562, 0.578125, 0.601562, 0.585938, 0.570312, 0.5625, 0.59375, 0.5625, - 0.585938, 0.570312, 0.59375, 0.570312, 0.59375, 0.578125, 0.5625, 0.5625, 0.585938, 0.5625, - 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, - 0.5625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.667969, 0.632812, 0.65625, 0.667969, - 0.5625, 0.664062, 0.640625, 0.667969, 0.65625, 0.617188, 0.664062, 0.617188, 0.648438, 0.667969, - 0.5625, 0.664062, 0.625, 0.664062, 0.640625, 0.601562, 0.65625, 0.601562, 0.632812, 0.664062, - 0.554688, 0.648438, 0.609375, 0.65625, 0.625, 0.59375, 0.640625, 0.585938, 0.617188, 0.65625, - 0.554688, 0.632812, 0.59375, 0.640625, 0.609375, 0.585938, 0.625, 0.578125, 0.601562, 0.640625, - 0.554688, 0.617188, 0.585938, 0.625, 0.59375, 0.570312, 0.609375, 0.570312, 0.585938, 0.625, - 0.554688, 0.601562, 0.578125, 0.609375, 0.585938, 0.570312, 0.59375, 0.570312, 0.578125, 0.609375, - 0.554688, 0.585938, 0.570312, 0.59375, 0.578125, 0.5625, 0.585938, 0.5625, 0.570312, 0.59375, - 0.554688, 0.578125, 0.570312, 0.585938, 0.570312, 0.5625, 0.578125, 0.5625, 0.570312, 0.585938, - 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, - 0.664062, 0.667969, 0.664062, 0.65625, 0.667969, 0.667969, 0.667969, 0.617188, 0.65625, 0.667969, - 0.65625, 0.667969, 0.65625, 0.648438, 0.667969, 0.667969, 0.667969, 0.601562, 0.648438, 0.667969, - 0.648438, 0.664062, 0.640625, 0.625, 0.664062, 0.664062, 0.664062, 0.59375, 0.632812, 0.667969, - 0.632812, 0.65625, 0.625, 0.609375, 0.65625, 0.65625, 0.65625, 0.585938, 0.617188, 0.664062, - 0.617188, 0.640625, 0.609375, 0.59375, 0.648438, 0.648438, 0.648438, 0.570312, 0.601562, 0.65625, - 0.601562, 0.625, 0.59375, 0.585938, 0.632812, 0.632812, 0.632812, 0.570312, 0.585938, 0.640625, - 0.585938, 0.609375, 0.585938, 0.578125, 0.617188, 0.617188, 0.617188, 0.5625, 0.578125, 0.625, - 0.578125, 0.59375, 0.578125, 0.570312, 0.601562, 0.601562, 0.601562, 0.5625, 0.570312, 0.609375, - 0.570312, 0.585938, 0.570312, 0.570312, 0.585938, 0.585938, 0.585938, 0.5625, 0.570312, 0.59375, - 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, - std::vector{ - 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, - 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, - 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, - 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, - 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, - std::vector{ - 1.20312, 1.30469, 1.22656, 1.24219, 1.28906, 1.28125, 1.35938, 1.29688, 1.28125, 1.25, - 1.28906, 1.21875, 1.29688, 1.375, 1.21875, 1.25, 1.32812, 1.35156, 1.30469, 1.34375, - 1.30469, 1.26562, 1.35156, 1.26562, 1.35156, 1.28906, 1.23438, 1.21875, 1.32031, 1.21875, - 1.21875, 1.29688, 1.24219, 1.32031, 1.25781, 1.22656, 1.28125, 1.22656, 1.25, 1.3125, - 1.26562, 1.32031, 1.25781, 1.24219, 1.34375, 1.32812, 1.32812, 1.21875, 1.25, 1.375}), + 0.617188, 0.601562, 0.632812, 0.601562, 0.632812, 0.617188, 0.578125, 0.570312, 0.625, 0.570312, + 0.601562, 0.585938, 0.617188, 0.585938, 0.617188, 0.601562, 0.570312, 0.5625, 0.609375, 0.5625, + 0.59375, 0.578125, 0.601562, 0.578125, 0.601562, 0.585938, 0.570312, 0.5625, 0.59375, 0.5625, + 0.585938, 0.570312, 0.59375, 0.570312, 0.59375, 0.578125, 0.5625, 0.5625, 0.585938, 0.5625, + 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, + 0.5625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.667969, 0.632812, 0.65625, 0.667969, + 0.5625, 0.664062, 0.640625, 0.667969, 0.65625, 0.617188, 0.664062, 0.617188, 0.648438, 0.667969, + 0.5625, 0.664062, 0.625, 0.664062, 0.640625, 0.601562, 0.65625, 0.601562, 0.632812, 0.664062, + 0.554688, 0.648438, 0.609375, 0.65625, 0.625, 0.59375, 0.640625, 0.585938, 0.617188, 0.65625, + 0.554688, 0.632812, 0.59375, 0.640625, 0.609375, 0.585938, 0.625, 0.578125, 0.601562, 0.640625, + 0.554688, 0.617188, 0.585938, 0.625, 0.59375, 0.570312, 0.609375, 0.570312, 0.585938, 0.625, + 0.554688, 0.601562, 0.578125, 0.609375, 0.585938, 0.570312, 0.59375, 0.570312, 0.578125, 0.609375, + 0.554688, 0.585938, 0.570312, 0.59375, 0.578125, 0.5625, 0.585938, 0.5625, 0.570312, 0.59375, + 0.554688, 0.578125, 0.570312, 0.585938, 0.570312, 0.5625, 0.578125, 0.5625, 0.570312, 0.585938, + 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, + 0.664062, 0.667969, 0.664062, 0.65625, 0.667969, 0.667969, 0.667969, 0.617188, 0.65625, 0.667969, + 0.65625, 0.667969, 0.65625, 0.648438, 0.667969, 0.667969, 0.667969, 0.601562, 0.648438, 0.667969, + 0.648438, 0.664062, 0.640625, 0.625, 0.664062, 0.664062, 0.664062, 0.59375, 0.632812, 0.667969, + 0.632812, 0.65625, 0.625, 0.609375, 0.65625, 0.65625, 0.65625, 0.585938, 0.617188, 0.664062, + 0.617188, 0.640625, 0.609375, 0.59375, 0.648438, 0.648438, 0.648438, 0.570312, 0.601562, 0.65625, + 0.601562, 0.625, 0.59375, 0.585938, 0.632812, 0.632812, 0.632812, 0.570312, 0.585938, 0.640625, + 0.585938, 0.609375, 0.585938, 0.578125, 0.617188, 0.617188, 0.617188, 0.5625, 0.578125, 0.625, + 0.578125, 0.59375, 0.578125, 0.570312, 0.601562, 0.601562, 0.601562, 0.5625, 0.570312, 0.609375, + 0.570312, 0.585938, 0.570312, 0.570312, 0.585938, 0.585938, 0.585938, 0.5625, 0.570312, 0.59375, + 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, + std::vector{0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, + 0.5625, 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, + 0.570312, 0.578125, 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, + 0.554688, 0.578125, 0.554688, 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, + 0.570312, 0.5625, 0.5625, 0.578125, 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, + 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, + std::vector{1.20312, 1.30469, 1.22656, 1.24219, 1.28906, 1.28125, 1.35938, 1.29688, 1.28125, 1.25, + 1.28906, 1.21875, 1.29688, 1.375, 1.21875, 1.25, 1.32812, 1.35156, 1.30469, 1.34375, + 1.30469, 1.26562, 1.35156, 1.26562, 1.35156, 1.28906, 1.23438, 1.21875, 1.32031, 1.21875, + 1.21875, 1.29688, 1.24219, 1.32031, 1.25781, 1.22656, 1.28125, 1.22656, 1.25, 1.3125, + 1.26562, 1.32031, 1.25781, 1.24219, 1.34375, 1.32812, 1.32812, 1.21875, 1.25, 1.375}), LSTMSequenceV1Params( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, - 5.78125, 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, - 2.39062, 7.71875, 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, - 8.25, 6.90625, 6.625, 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, - 1.45312, 6.78125, 8.25, 7.4375, 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, - 2.15625, 7.5625, 8.5, 9.9375, 3.85938, 7.0625, 7.625, 8.125, 6.375, 2.53125, - 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, 8.375, 1.21875, 9.125, 5.4375, - 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, 9, 8.25, 7.5625, - 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, 5.375, 2.96875, - 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, 2.59375, - 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, - 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, - 1.125, 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, - 1.90625, 7.1875, 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, - 9.375, 9, 4.6875, 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, - 1.74219, 3.03125, 9.0625, 3.20312, 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, - 7.75, 9.5, 6.90625, 5.8125, 4.25, 3.26562, 4.375, 7.5, 6.84375, 4.3125, - 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, 8.25, 6.84375, 1.58594, 3.8125, - 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, 9.5, 3.3125, 1.96875, - 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, 7.84375, 1.38281, - 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, 2.28125, - 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, - 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, - 5.15625, 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, - 9.9375, 9.3125, 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 6.53125, - 3.57812, 9.5, 5.0625, 4.75, 7.875, 3.375, 6.21875, 1.875, 4.375, 5.375, - 6.59375, 5.1875, 7.625, 1.26562, 9.25, 7.25, 5.78125, 7.4375, 5.65625, 7.5625, - 1.92188, 4.71875, 2.09375, 1.13281, 6.78125, 9.125, 5, 8.125, 1.6875, 2.48438, - 2.375, 3.8125, 1.71875, 6.5, 8.875, 4.25, 2.45312, 2.40625, 9.25, 2.59375, - 1.03125, 8.75, 8.25, 3.60938, 3.71875, 6.25, 3.1875, 5.0625, 7.90625, 4.6875, - 7.3125, 8.9375, 9, 7.21875, 9.1875, 3.5, 3.03125, 1.57812, 4.78125, 2.78125, - 2.5, 9.375, 2.89062, 8.6875, 8.5, 9.5625, 9.25, 1.46875, 7.125, 6.1875, - 4.6875, 5.3125, 3, 1.19531, 8.5, 4.375, 8, 4.71875, 7.625, 6.4375, - 8.75, 7.03125, 9.75, 8.5, 4.6875, 8, 6.375, 4.59375, 7.625, 8.125, - 3.40625, 9, 7.875, 3.35938, 9.375, 9.875, 8.875, 8.625, 2.03125, 7.5625, - 9.6875, 4.1875, 3.71875, 8.9375, 6.46875, 8.75, 2.5, 9.625, 8.75, 1, - 7.53125, 1.14844, 1.58594, 3.8125, 5.65625, 9.9375, 6.34375, 2.34375, 5.125, 2.5, - 6.3125, 7.8125, 3.875, 1.625, 8.375, 7.34375, 1.82812, 5.21875, 2.59375, 1.09375, - 2.98438, 7.96875, 5.25, 8.125, 9.25, 2.34375, 9.875, 1.21094, 6.4375, 7.84375, - 9.25, 3, 4.3125, 3.35938, 1.0625, 5.125, 6.875, 3.25, 2.5, 6.125, - 5.4375, 8.625, 8.125, 4.375, 8.375, 4.875, 4.3125, 8.5, 2.15625, 4.3125, - 2.78125, 1.35938, 1.1875, 6, 6.6875, 5.0625, 5.3125, 7.5, 2.90625, 4.375, - 3.375, 8.5625, 2.6875, 5.21875, 9, 6.0625, 7.4375, 6.9375, 1.60938, 5.15625, - 3.20312, 6.625, 9.25, 3, 2.84375, 7.59375, 5.1875, 4.4375, 7.875, 2.75, - 5.78125, 3.4375, 5.9375, 3.25, 3.10938, 2.375, 3.46875, 7.9375, 1.14844, 3.29688, - 4.8125, 2.14062, 1.42188, 7, 1.53125, 4.6875, 3.875, 7, 5, 6.9375, - 2.51562, 3.75, 3.71875, 2.8125, 5.03125, 3, 5.25, 2.07812, 7.3125, 1.32812, - 7.3125, 1.30469, 6.3125, 3.0625, 9.75, 3.0625, 6.9375, 6.625, 8.875, 9, - 4.71875, 8, 8.125, 7.5, 2.23438, 3.78125, 3.34375, 4.25, 3.03125, 2.75, - 5.78125, 9.375, 7.25, 6.0625, 3.1875, 8.375, 2.75, 4.125, 8.125, 10}, - std::vector{ - 1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, - 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, - 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, - 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, - 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 10}, - std::vector{ - 1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, - 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, - 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, - 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, - 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 10}, + 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, 5.78125, + 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, 2.39062, 7.71875, + 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, 8.25, 6.90625, 6.625, + 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, 1.45312, 6.78125, 8.25, 7.4375, + 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, 2.15625, 7.5625, 8.5, 9.9375, 3.85938, + 7.0625, 7.625, 8.125, 6.375, 2.53125, 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, + 8.375, 1.21875, 9.125, 5.4375, 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, + 9, 8.25, 7.5625, 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, + 5.375, 2.96875, 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, + 2.59375, 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, + 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, 1.125, + 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, 1.90625, 7.1875, + 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, 9.375, 9, 4.6875, + 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, 1.74219, 3.03125, 9.0625, 3.20312, + 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, 7.75, 9.5, 6.90625, 5.8125, 4.25, + 3.26562, 4.375, 7.5, 6.84375, 4.3125, 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, + 8.25, 6.84375, 1.58594, 3.8125, 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, + 9.5, 3.3125, 1.96875, 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, + 7.84375, 1.38281, 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, + 2.28125, 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, + 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, 5.15625, + 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, 9.9375, 9.3125, + 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 6.53125, 3.57812, 9.5, 5.0625, + 4.75, 7.875, 3.375, 6.21875, 1.875, 4.375, 5.375, 6.59375, 5.1875, 7.625, 1.26562, + 9.25, 7.25, 5.78125, 7.4375, 5.65625, 7.5625, 1.92188, 4.71875, 2.09375, 1.13281, 6.78125, + 9.125, 5, 8.125, 1.6875, 2.48438, 2.375, 3.8125, 1.71875, 6.5, 8.875, 4.25, + 2.45312, 2.40625, 9.25, 2.59375, 1.03125, 8.75, 8.25, 3.60938, 3.71875, 6.25, 3.1875, + 5.0625, 7.90625, 4.6875, 7.3125, 8.9375, 9, 7.21875, 9.1875, 3.5, 3.03125, 1.57812, + 4.78125, 2.78125, 2.5, 9.375, 2.89062, 8.6875, 8.5, 9.5625, 9.25, 1.46875, 7.125, + 6.1875, 4.6875, 5.3125, 3, 1.19531, 8.5, 4.375, 8, 4.71875, 7.625, 6.4375, + 8.75, 7.03125, 9.75, 8.5, 4.6875, 8, 6.375, 4.59375, 7.625, 8.125, 3.40625, + 9, 7.875, 3.35938, 9.375, 9.875, 8.875, 8.625, 2.03125, 7.5625, 9.6875, 4.1875, + 3.71875, 8.9375, 6.46875, 8.75, 2.5, 9.625, 8.75, 1, 7.53125, 1.14844, 1.58594, + 3.8125, 5.65625, 9.9375, 6.34375, 2.34375, 5.125, 2.5, 6.3125, 7.8125, 3.875, 1.625, + 8.375, 7.34375, 1.82812, 5.21875, 2.59375, 1.09375, 2.98438, 7.96875, 5.25, 8.125, 9.25, + 2.34375, 9.875, 1.21094, 6.4375, 7.84375, 9.25, 3, 4.3125, 3.35938, 1.0625, 5.125, + 6.875, 3.25, 2.5, 6.125, 5.4375, 8.625, 8.125, 4.375, 8.375, 4.875, 4.3125, + 8.5, 2.15625, 4.3125, 2.78125, 1.35938, 1.1875, 6, 6.6875, 5.0625, 5.3125, 7.5, + 2.90625, 4.375, 3.375, 8.5625, 2.6875, 5.21875, 9, 6.0625, 7.4375, 6.9375, 1.60938, + 5.15625, 3.20312, 6.625, 9.25, 3, 2.84375, 7.59375, 5.1875, 4.4375, 7.875, 2.75, + 5.78125, 3.4375, 5.9375, 3.25, 3.10938, 2.375, 3.46875, 7.9375, 1.14844, 3.29688, 4.8125, + 2.14062, 1.42188, 7, 1.53125, 4.6875, 3.875, 7, 5, 6.9375, 2.51562, 3.75, + 3.71875, 2.8125, 5.03125, 3, 5.25, 2.07812, 7.3125, 1.32812, 7.3125, 1.30469, 6.3125, + 3.0625, 9.75, 3.0625, 6.9375, 6.625, 8.875, 9, 4.71875, 8, 8.125, 7.5, + 2.23438, 3.78125, 3.34375, 4.25, 3.03125, 2.75, 5.78125, 9.375, 7.25, 6.0625, 3.1875, + 8.375, 2.75, 4.125, 8.125, 10}, + std::vector{1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, + 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, + 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, + 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, + 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 10}, + std::vector{1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, + 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, + 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, + 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, + 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, - 6, 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, - 3.82812, 7.28125, 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, - 1.57812, 9.125, 6, 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, - 1.42969, 4.5625, 1.10156, 5.4375, 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, - 8.625, 4.125, 6.1875, 1.375, 6.1875, 8.875, 6, 3.40625, 1.75781, 4.8125, - 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, 8.25, 7.40625, 2.40625, 7, - 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, 7, 7, 2.5, - 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, 2.4375, 3.34375, - 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, 3.76562, - 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, - 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, - 1.32812, 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, - 6.8125, 9.25, 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, - 3.3125, 3.03125, 8.5, 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, - 2.5, 4.0625, 6.15625, 8, 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, - 9.625, 7.5, 7.84375, 7.40625, 9.75, 7.09375, 2.0625, 1.5, 6.53125, 5, - 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, 4.0625, 4.1875, 1.46875, 5, - 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, 2.71875, 9.9375, 7.8125, - 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, 6.625, 5.34375, - 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, 6.1875, - 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, - 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, - 7.3125, 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, - 8.625, 4.4375, 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, - 7.125, 8.9375, 6.6875, 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, - 1.03906, 7.28125, 2.64062, 8.125, 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, - 6.25, 8.75, 1.80469, 3.375, 2.4375, 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, - 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, 7.40625, 6.375, 7.875, 4, - 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, 7.625, 5.1875, 6.71875, - 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, 2.625, 1.21875, - 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, 2.5, - 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, - 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, - 2.625, 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, - 6.15625, 5.3125, 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, - 9.875, 9.8125, 5.78125, 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, - 3.1875, 4.75, 8.25, 6.125, 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, - 4.40625, 6.375, 4.375, 1.48438, 2.65625, 1.80469, 7.5, 9.875, 7.25, 7.875, - 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, 9.875, 1.76562, 3.3125, 10}, - std::vector{ - 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, - 9.0625, 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, - 2.39062, 9.25, 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, - 2.65625, 2.10938, 8.375, 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, - 7.625, 8.25, 2.10938, 8.625, 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, - 8.5625, 8.75, 7.46875, 9.625, 8.875, 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, - 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, 7.65625, 1.75, 2.96875, 3.875, - 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, 1.86719, 9.25, 7.125, - 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, 9.375, 9.1875, - 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, 6.25, - 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, - 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, - 4.0625, 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, - 6.25, 7.3125, 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, - 2.10938, 9.5, 6.25, 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, - 1.79688, 9, 7.9375, 2.64062, 9.75, 8.75, 9.6875, 3.59375, 4, 10, - 8.875, 2.82812, 9.0625, 8.8125, 1.76562, 2.23438, 6.625, 2.375, 3.70312, 8.375, - 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, 9.375, 1.625, 2.03125, 9.5, - 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, 5.65625, 3.92188, 4.125, - 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, 1.65625, 3.54688, - 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, 2.78125, - 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, - 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, - 5.34375, 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, - 7.21875, 7.125, 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, - 7.875, 4.6875, 8.0625, 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, - 7.75, 2.28125, 8.75, 7.6875, 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, - 4.9375, 5.21875, 1.5, 5.125, 7.5, 7.1875, 6, 2.71875, 6.5625, 9.875, - 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, 1.84375, 8.75, 8.875, 9.6875, - 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, 5.6875, 9.75, 8.125, - 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, 4.6875, 9.875, - 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, 7.8125, - 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, - 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, - 3.09375, 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, - 8.75, 4.21875, 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, - 1.25, 3.76562, 7.75, 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, - 2, 9, 4.46875, 7.25, 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, - 7.5625, 1.92969, 2.32812, 3.25, 4.375, 1.125, 7.75, 2.4375, 3.34375, 5.6875, - 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, 1.73438, 2.5, 3.09375, 10}, - std::vector{ - 1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, - 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, - 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, - 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 10}, - std::vector{ - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094}, - std::vector{ - 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, - 0.554688, 0.585938, 0.5625, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.578125, 0.570312, - 0.554688, 0.59375, 0.5625, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.585938, 0.570312, - 0.554688, 0.601562, 0.570312, 0.578125, 0.601562, 0.59375, 0.625, 0.601562, 0.59375, 0.578125, + 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, 6, + 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, 3.82812, 7.28125, + 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, 1.57812, 9.125, 6, + 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, 1.42969, 4.5625, 1.10156, 5.4375, + 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, 8.625, 4.125, 6.1875, 1.375, 6.1875, + 8.875, 6, 3.40625, 1.75781, 4.8125, 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, + 8.25, 7.40625, 2.40625, 7, 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, + 7, 7, 2.5, 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, + 2.4375, 3.34375, 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, + 3.76562, 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, + 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, 1.32812, + 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, 6.8125, 9.25, + 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, 3.3125, 3.03125, 8.5, + 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, 2.5, 4.0625, 6.15625, 8, + 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, 9.625, 7.5, 7.84375, 7.40625, 9.75, + 7.09375, 2.0625, 1.5, 6.53125, 5, 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, + 4.0625, 4.1875, 1.46875, 5, 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, + 2.71875, 9.9375, 7.8125, 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, + 6.625, 5.34375, 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, + 6.1875, 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, + 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, 7.3125, + 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, 8.625, 4.4375, + 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, 7.125, 8.9375, 6.6875, + 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, 1.03906, 7.28125, 2.64062, 8.125, + 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, 6.25, 8.75, 1.80469, 3.375, 2.4375, + 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, + 7.40625, 6.375, 7.875, 4, 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, + 7.625, 5.1875, 6.71875, 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, + 2.625, 1.21875, 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, + 2.5, 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, + 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, 2.625, + 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, 6.15625, 5.3125, + 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, 9.875, 9.8125, 5.78125, + 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, 3.1875, 4.75, 8.25, 6.125, + 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, 4.40625, 6.375, 4.375, 1.48438, 2.65625, + 1.80469, 7.5, 9.875, 7.25, 7.875, 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, + 9.875, 1.76562, 3.3125, 10}, + std::vector{ + 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, 9.0625, + 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, 2.39062, 9.25, + 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, 2.65625, 2.10938, 8.375, + 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, 7.625, 8.25, 2.10938, 8.625, + 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, 8.5625, 8.75, 7.46875, 9.625, 8.875, + 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, + 7.65625, 1.75, 2.96875, 3.875, 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, + 1.86719, 9.25, 7.125, 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, + 9.375, 9.1875, 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, + 6.25, 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, + 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, 4.0625, + 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, 6.25, 7.3125, + 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, 2.10938, 9.5, 6.25, + 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, 1.79688, 9, 7.9375, 2.64062, + 9.75, 8.75, 9.6875, 3.59375, 4, 10, 8.875, 2.82812, 9.0625, 8.8125, 1.76562, + 2.23438, 6.625, 2.375, 3.70312, 8.375, 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, + 9.375, 1.625, 2.03125, 9.5, 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, + 5.65625, 3.92188, 4.125, 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, + 1.65625, 3.54688, 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, + 2.78125, 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, + 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, 5.34375, + 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, 7.21875, 7.125, + 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, 7.875, 4.6875, 8.0625, + 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, 7.75, 2.28125, 8.75, 7.6875, + 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, 4.9375, 5.21875, 1.5, 5.125, 7.5, + 7.1875, 6, 2.71875, 6.5625, 9.875, 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, + 1.84375, 8.75, 8.875, 9.6875, 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, + 5.6875, 9.75, 8.125, 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, + 4.6875, 9.875, 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, + 7.8125, 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, + 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, 3.09375, + 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, 8.75, 4.21875, + 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, 1.25, 3.76562, 7.75, + 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, 2, 9, 4.46875, 7.25, + 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, 7.5625, 1.92969, 2.32812, 3.25, 4.375, + 1.125, 7.75, 2.4375, 3.34375, 5.6875, 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, + 1.73438, 2.5, 3.09375, 10}, + std::vector{1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, + 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, + 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, + 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 10}, + std::vector{0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094}, + std::vector{ + 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, + 0.554688, 0.585938, 0.5625, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.578125, 0.570312, + 0.554688, 0.59375, 0.5625, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.585938, 0.570312, + 0.554688, 0.601562, 0.570312, 0.578125, 0.601562, 0.59375, 0.625, 0.601562, 0.59375, 0.578125, 0.554688, 0.617188, 0.570312, 0.585938, 0.617188, 0.609375, 0.640625, 0.617188, 0.609375, 0.585938, - 0.554688, 0.632812, 0.578125, 0.59375, 0.632812, 0.625, 0.65625, 0.632812, 0.625, 0.601562, + 0.554688, 0.632812, 0.578125, 0.59375, 0.632812, 0.625, 0.65625, 0.632812, 0.625, 0.601562, 0.546875, 0.648438, 0.585938, 0.609375, 0.648438, 0.640625, 0.664062, 0.648438, 0.640625, 0.617188, - 0.546875, 0.664062, 0.601562, 0.625, 0.65625, 0.65625, 0.667969, 0.65625, 0.65625, 0.632812, + 0.546875, 0.664062, 0.601562, 0.625, 0.65625, 0.65625, 0.667969, 0.65625, 0.65625, 0.632812, 0.539062, 0.667969, 0.617188, 0.640625, 0.664062, 0.664062, 0.667969, 0.664062, 0.664062, 0.648438, - 0.523438, 0.667969, 0.632812, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, - 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, - 0.578125, 0.5625, 0.578125, 0.59375, 0.554688, 0.570312, 0.585938, 0.59375, 0.585938, 0.585938, - 0.585938, 0.5625, 0.585938, 0.609375, 0.5625, 0.570312, 0.601562, 0.601562, 0.59375, 0.601562, - 0.601562, 0.5625, 0.601562, 0.625, 0.5625, 0.578125, 0.617188, 0.617188, 0.601562, 0.617188, - 0.617188, 0.570312, 0.617188, 0.640625, 0.5625, 0.585938, 0.632812, 0.632812, 0.617188, 0.632812, - 0.632812, 0.570312, 0.632812, 0.65625, 0.570312, 0.601562, 0.648438, 0.648438, 0.632812, 0.648438, - 0.648438, 0.578125, 0.648438, 0.664062, 0.570312, 0.617188, 0.65625, 0.664062, 0.648438, 0.664062, - 0.65625, 0.585938, 0.664062, 0.667969, 0.578125, 0.632812, 0.664062, 0.667969, 0.664062, 0.664062, + 0.523438, 0.667969, 0.632812, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, + 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, + 0.578125, 0.5625, 0.578125, 0.59375, 0.554688, 0.570312, 0.585938, 0.59375, 0.585938, 0.585938, + 0.585938, 0.5625, 0.585938, 0.609375, 0.5625, 0.570312, 0.601562, 0.601562, 0.59375, 0.601562, + 0.601562, 0.5625, 0.601562, 0.625, 0.5625, 0.578125, 0.617188, 0.617188, 0.601562, 0.617188, + 0.617188, 0.570312, 0.617188, 0.640625, 0.5625, 0.585938, 0.632812, 0.632812, 0.617188, 0.632812, + 0.632812, 0.570312, 0.632812, 0.65625, 0.570312, 0.601562, 0.648438, 0.648438, 0.632812, 0.648438, + 0.648438, 0.578125, 0.648438, 0.664062, 0.570312, 0.617188, 0.65625, 0.664062, 0.648438, 0.664062, + 0.65625, 0.585938, 0.664062, 0.667969, 0.578125, 0.632812, 0.664062, 0.667969, 0.664062, 0.664062, 0.664062, 0.601562, 0.664062, 0.667969, 0.585938, 0.648438, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.617188, 0.667969, 0.667969, 0.601562, 0.664062, 0.667969, 0.667969, 0.667969, 0.667969, - 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, - 0.585938, 0.570312, 0.59375, 0.570312, 0.59375, 0.578125, 0.5625, 0.5625, 0.585938, 0.5625, - 0.59375, 0.578125, 0.601562, 0.578125, 0.601562, 0.585938, 0.570312, 0.5625, 0.59375, 0.5625, - 0.601562, 0.585938, 0.617188, 0.585938, 0.617188, 0.601562, 0.570312, 0.5625, 0.609375, 0.5625, - 0.617188, 0.601562, 0.632812, 0.601562, 0.632812, 0.617188, 0.578125, 0.570312, 0.625, 0.570312, + 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, + 0.585938, 0.570312, 0.59375, 0.570312, 0.59375, 0.578125, 0.5625, 0.5625, 0.585938, 0.5625, + 0.59375, 0.578125, 0.601562, 0.578125, 0.601562, 0.585938, 0.570312, 0.5625, 0.59375, 0.5625, + 0.601562, 0.585938, 0.617188, 0.585938, 0.617188, 0.601562, 0.570312, 0.5625, 0.609375, 0.5625, + 0.617188, 0.601562, 0.632812, 0.601562, 0.632812, 0.617188, 0.578125, 0.570312, 0.625, 0.570312, 0.632812, 0.617188, 0.648438, 0.617188, 0.648438, 0.632812, 0.585938, 0.570312, 0.640625, 0.570312, - 0.648438, 0.632812, 0.664062, 0.632812, 0.664062, 0.648438, 0.601562, 0.578125, 0.65625, 0.585938, - 0.664062, 0.648438, 0.667969, 0.648438, 0.667969, 0.65625, 0.617188, 0.585938, 0.664062, 0.59375, - 0.667969, 0.65625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.601562, 0.667969, 0.601562, + 0.648438, 0.632812, 0.664062, 0.632812, 0.664062, 0.648438, 0.601562, 0.578125, 0.65625, 0.585938, + 0.664062, 0.648438, 0.667969, 0.648438, 0.667969, 0.65625, 0.617188, 0.585938, 0.664062, 0.59375, + 0.667969, 0.65625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.601562, 0.667969, 0.601562, 0.667969, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.617188, 0.667969, 0.617188, - 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, - 0.554688, 0.578125, 0.570312, 0.585938, 0.570312, 0.5625, 0.578125, 0.5625, 0.570312, 0.585938, - 0.554688, 0.585938, 0.570312, 0.59375, 0.578125, 0.5625, 0.585938, 0.5625, 0.570312, 0.59375, - 0.554688, 0.601562, 0.578125, 0.609375, 0.585938, 0.570312, 0.59375, 0.570312, 0.578125, 0.609375, - 0.554688, 0.617188, 0.585938, 0.625, 0.59375, 0.570312, 0.609375, 0.570312, 0.585938, 0.625, - 0.554688, 0.632812, 0.59375, 0.640625, 0.609375, 0.585938, 0.625, 0.578125, 0.601562, 0.640625, - 0.554688, 0.648438, 0.609375, 0.65625, 0.625, 0.59375, 0.640625, 0.585938, 0.617188, 0.65625, - 0.5625, 0.664062, 0.625, 0.664062, 0.640625, 0.601562, 0.65625, 0.601562, 0.632812, 0.664062, - 0.5625, 0.664062, 0.640625, 0.667969, 0.65625, 0.617188, 0.664062, 0.617188, 0.648438, 0.667969, - 0.5625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.667969, 0.632812, 0.65625, 0.667969, - 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938, - 0.570312, 0.585938, 0.570312, 0.570312, 0.585938, 0.585938, 0.585938, 0.5625, 0.570312, 0.59375, - 0.578125, 0.59375, 0.578125, 0.570312, 0.601562, 0.601562, 0.601562, 0.5625, 0.570312, 0.609375, - 0.585938, 0.609375, 0.585938, 0.578125, 0.617188, 0.617188, 0.617188, 0.5625, 0.578125, 0.625, - 0.601562, 0.625, 0.59375, 0.585938, 0.632812, 0.632812, 0.632812, 0.570312, 0.585938, 0.640625, - 0.617188, 0.640625, 0.609375, 0.59375, 0.648438, 0.648438, 0.648438, 0.570312, 0.601562, 0.65625, - 0.632812, 0.65625, 0.625, 0.609375, 0.65625, 0.65625, 0.65625, 0.585938, 0.617188, 0.664062, - 0.648438, 0.664062, 0.640625, 0.625, 0.664062, 0.664062, 0.664062, 0.59375, 0.632812, 0.667969, - 0.65625, 0.667969, 0.65625, 0.648438, 0.667969, 0.667969, 0.667969, 0.601562, 0.648438, 0.667969, - 0.664062, 0.667969, 0.664062, 0.65625, 0.667969, 0.667969, 0.667969, 0.617188, 0.65625, 0.667969}, - std::vector{ - 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, - 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, - 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, - 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, - 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, - std::vector{ - 1.20312, 1.30469, 1.22656, 1.24219, 1.28906, 1.28125, 1.35938, 1.29688, 1.28125, 1.25, - 1.28906, 1.21875, 1.29688, 1.375, 1.21875, 1.25, 1.32812, 1.35156, 1.30469, 1.34375, - 1.30469, 1.26562, 1.35156, 1.26562, 1.35156, 1.28906, 1.23438, 1.21875, 1.32031, 1.21875, - 1.21875, 1.29688, 1.24219, 1.32031, 1.25781, 1.22656, 1.28125, 1.22656, 1.25, 1.3125, - 1.26562, 1.32031, 1.25781, 1.24219, 1.34375, 1.32812, 1.32812, 1.21875, 1.25, 1.375}), + 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, + 0.554688, 0.578125, 0.570312, 0.585938, 0.570312, 0.5625, 0.578125, 0.5625, 0.570312, 0.585938, + 0.554688, 0.585938, 0.570312, 0.59375, 0.578125, 0.5625, 0.585938, 0.5625, 0.570312, 0.59375, + 0.554688, 0.601562, 0.578125, 0.609375, 0.585938, 0.570312, 0.59375, 0.570312, 0.578125, 0.609375, + 0.554688, 0.617188, 0.585938, 0.625, 0.59375, 0.570312, 0.609375, 0.570312, 0.585938, 0.625, + 0.554688, 0.632812, 0.59375, 0.640625, 0.609375, 0.585938, 0.625, 0.578125, 0.601562, 0.640625, + 0.554688, 0.648438, 0.609375, 0.65625, 0.625, 0.59375, 0.640625, 0.585938, 0.617188, 0.65625, + 0.5625, 0.664062, 0.625, 0.664062, 0.640625, 0.601562, 0.65625, 0.601562, 0.632812, 0.664062, + 0.5625, 0.664062, 0.640625, 0.667969, 0.65625, 0.617188, 0.664062, 0.617188, 0.648438, 0.667969, + 0.5625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.667969, 0.632812, 0.65625, 0.667969, + 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938, + 0.570312, 0.585938, 0.570312, 0.570312, 0.585938, 0.585938, 0.585938, 0.5625, 0.570312, 0.59375, + 0.578125, 0.59375, 0.578125, 0.570312, 0.601562, 0.601562, 0.601562, 0.5625, 0.570312, 0.609375, + 0.585938, 0.609375, 0.585938, 0.578125, 0.617188, 0.617188, 0.617188, 0.5625, 0.578125, 0.625, + 0.601562, 0.625, 0.59375, 0.585938, 0.632812, 0.632812, 0.632812, 0.570312, 0.585938, 0.640625, + 0.617188, 0.640625, 0.609375, 0.59375, 0.648438, 0.648438, 0.648438, 0.570312, 0.601562, 0.65625, + 0.632812, 0.65625, 0.625, 0.609375, 0.65625, 0.65625, 0.65625, 0.585938, 0.617188, 0.664062, + 0.648438, 0.664062, 0.640625, 0.625, 0.664062, 0.664062, 0.664062, 0.59375, 0.632812, 0.667969, + 0.65625, 0.667969, 0.65625, 0.648438, 0.667969, 0.667969, 0.667969, 0.601562, 0.648438, 0.667969, + 0.664062, 0.667969, 0.664062, 0.65625, 0.667969, 0.667969, 0.667969, 0.617188, 0.65625, 0.667969}, + std::vector{0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, + 0.5625, 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, + 0.570312, 0.578125, 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, + 0.554688, 0.578125, 0.554688, 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, + 0.570312, 0.5625, 0.5625, 0.578125, 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, + 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, + std::vector{1.20312, 1.30469, 1.22656, 1.24219, 1.28906, 1.28125, 1.35938, 1.29688, 1.28125, 1.25, + 1.28906, 1.21875, 1.29688, 1.375, 1.21875, 1.25, 1.32812, 1.35156, 1.30469, 1.34375, + 1.30469, 1.26562, 1.35156, 1.26562, 1.35156, 1.28906, 1.23438, 1.21875, 1.32031, 1.21875, + 1.21875, 1.29688, 1.24219, 1.32031, 1.25781, 1.22656, 1.28125, 1.22656, 1.25, 1.3125, + 1.26562, 1.32031, 1.25781, 1.24219, 1.34375, 1.32812, 1.32812, 1.21875, 1.25, 1.375}), LSTMSequenceV1Params( - 5, 10, 10, 5, - 0.7f, true, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.7f, + true, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, - 5.78125, 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, - 2.39062, 7.71875, 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, - 8.25, 6.90625, 6.625, 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, - 1.45312, 6.78125, 8.25, 7.4375, 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, - 2.15625, 7.5625, 8.5, 9.9375, 3.85938, 7.0625, 7.625, 8.125, 6.375, 2.53125, - 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, 8.375, 1.21875, 9.125, 5.4375, - 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, 9, 8.25, 7.5625, - 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, 5.375, 2.96875, - 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, 2.59375, - 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, - 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, - 1.125, 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, - 1.90625, 7.1875, 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, - 9.375, 9, 4.6875, 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, - 1.74219, 3.03125, 9.0625, 3.20312, 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, - 7.75, 9.5, 6.90625, 5.8125, 4.25, 3.26562, 4.375, 7.5, 6.84375, 4.3125, - 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, 8.25, 6.84375, 1.58594, 3.8125, - 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, 9.5, 3.3125, 1.96875, - 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, 7.84375, 1.38281, - 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, 2.28125, - 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, - 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, - 5.15625, 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, - 9.9375, 9.3125, 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 10}, - std::vector{ - 1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, - 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, - 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, - 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, - 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 9.25, - 9.6875, 2.34375, 3.3125, 9.625, 7.8125, 4.34375, 2.71875, 7.4375, 3.53125, 1.9375, - 7.9375, 8.875, 1.07031, 6.25, 4.1875, 7.125, 3.09375, 9, 4.4375, 2.60938, - 1.98438, 2.76562, 4.65625, 5.125, 4.625, 8.375, 7.9375, 6.6875, 8.5625, 6.8125, - 4.53125, 5.09375, 5.1875, 6.0625, 1.9375, 7, 2.71875, 6.8125, 7.0625, 1.42188, - 5.25, 3.34375, 8.1875, 1.07812, 3.21875, 8.6875, 7.6875, 1.27344, 7.0625, 10}, - std::vector{ - 1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, - 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, - 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, - 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, - 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 4.9375, - 1.32031, 3.67188, 4, 7.4375, 8.875, 6.75, 3.28125, 1.71875, 8.25, 2.39062, - 5.84375, 6.84375, 9.0625, 1.71875, 6.25, 7, 7.28125, 3.8125, 7.53125, 6.0625, - 1.48438, 2.64062, 5.6875, 2.34375, 6.4375, 9.375, 9.625, 7.25, 3.70312, 7.5, - 3.65625, 8.375, 10, 6.5, 5.65625, 5.9375, 7.0625, 5.5625, 5.375, 9, - 4.625, 7.3125, 4.8125, 1.71875, 1.51562, 2.3125, 8.875, 8.625, 9, 10}, + 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, 5.78125, + 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, 2.39062, 7.71875, + 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, 8.25, 6.90625, 6.625, + 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, 1.45312, 6.78125, 8.25, 7.4375, + 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, 2.15625, 7.5625, 8.5, 9.9375, 3.85938, + 7.0625, 7.625, 8.125, 6.375, 2.53125, 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, + 8.375, 1.21875, 9.125, 5.4375, 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, + 9, 8.25, 7.5625, 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, + 5.375, 2.96875, 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, + 2.59375, 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, + 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, 1.125, + 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, 1.90625, 7.1875, + 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, 9.375, 9, 4.6875, + 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, 1.74219, 3.03125, 9.0625, 3.20312, + 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, 7.75, 9.5, 6.90625, 5.8125, 4.25, + 3.26562, 4.375, 7.5, 6.84375, 4.3125, 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, + 8.25, 6.84375, 1.58594, 3.8125, 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, + 9.5, 3.3125, 1.96875, 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, + 7.84375, 1.38281, 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, + 2.28125, 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, + 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, 5.15625, + 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, 9.9375, 9.3125, + 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 10}, + std::vector{1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, + 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, + 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, + 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, + 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 9.25, + 9.6875, 2.34375, 3.3125, 9.625, 7.8125, 4.34375, 2.71875, 7.4375, 3.53125, 1.9375, + 7.9375, 8.875, 1.07031, 6.25, 4.1875, 7.125, 3.09375, 9, 4.4375, 2.60938, + 1.98438, 2.76562, 4.65625, 5.125, 4.625, 8.375, 7.9375, 6.6875, 8.5625, 6.8125, + 4.53125, 5.09375, 5.1875, 6.0625, 1.9375, 7, 2.71875, 6.8125, 7.0625, 1.42188, + 5.25, 3.34375, 8.1875, 1.07812, 3.21875, 8.6875, 7.6875, 1.27344, 7.0625, 10}, + std::vector{1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, + 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, + 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, + 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, + 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 4.9375, + 1.32031, 3.67188, 4, 7.4375, 8.875, 6.75, 3.28125, 1.71875, 8.25, 2.39062, + 5.84375, 6.84375, 9.0625, 1.71875, 6.25, 7, 7.28125, 3.8125, 7.53125, 6.0625, + 1.48438, 2.64062, 5.6875, 2.34375, 6.4375, 9.375, 9.625, 7.25, 3.70312, 7.5, + 3.65625, 8.375, 10, 6.5, 5.65625, 5.9375, 7.0625, 5.5625, 5.375, 9, + 4.625, 7.3125, 4.8125, 1.71875, 1.51562, 2.3125, 8.875, 8.625, 9, 10}, std::vector{5, 5, 5, 5, 5}, std::vector{ - 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, - 6, 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, - 3.82812, 7.28125, 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, - 1.57812, 9.125, 6, 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, - 1.42969, 4.5625, 1.10156, 5.4375, 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, - 8.625, 4.125, 6.1875, 1.375, 6.1875, 8.875, 6, 3.40625, 1.75781, 4.8125, - 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, 8.25, 7.40625, 2.40625, 7, - 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, 7, 7, 2.5, - 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, 2.4375, 3.34375, - 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, 3.76562, - 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, - 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, - 1.32812, 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, - 6.8125, 9.25, 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, - 3.3125, 3.03125, 8.5, 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, - 2.5, 4.0625, 6.15625, 8, 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, - 9.625, 7.5, 7.84375, 7.40625, 9.75, 7.09375, 2.0625, 1.5, 6.53125, 5, - 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, 4.0625, 4.1875, 1.46875, 5, - 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, 2.71875, 9.9375, 7.8125, - 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, 6.625, 5.34375, - 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, 6.1875, - 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, - 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, - 7.3125, 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, - 8.625, 4.4375, 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, - 7.125, 8.9375, 6.6875, 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, - 1.03906, 7.28125, 2.64062, 8.125, 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, - 6.25, 8.75, 1.80469, 3.375, 2.4375, 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, - 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, 7.40625, 6.375, 7.875, 4, - 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, 7.625, 5.1875, 6.71875, - 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, 2.625, 1.21875, - 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, 2.5, - 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, - 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, - 2.625, 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, - 6.15625, 5.3125, 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, - 9.875, 9.8125, 5.78125, 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, - 3.1875, 4.75, 8.25, 6.125, 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, - 4.40625, 6.375, 4.375, 1.48438, 2.65625, 1.80469, 7.5, 9.875, 7.25, 7.875, - 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, 9.875, 1.76562, 3.3125, 3.10938, - 2.78125, 6.9375, 7.3125, 5.59375, 1.03125, 5.9375, 3.15625, 6.1875, 3.15625, 7.5, - 4.625, 5.65625, 2.89062, 2.71875, 8.75, 1.85938, 3.8125, 2.71875, 4.03125, 6.25, - 5.0625, 8, 7.4375, 5.625, 3, 1.1875, 6.75, 4.4375, 5.6875, 7.625, - 5.125, 9.625, 5.4375, 3.28125, 1.78125, 2.03125, 6.65625, 6.875, 3.85938, 7.0625, - 8.1875, 2.15625, 6.8125, 3.84375, 5.15625, 8.875, 7.09375, 8.375, 8.875, 8.75, - 2.79688, 3.1875, 2.0625, 9.75, 9.4375, 4.3125, 5.5625, 8.8125, 5.09375, 4, - 5.375, 7.375, 4.75, 8.875, 6.5, 1.25, 5.9375, 8.125, 7.4375, 5.625, - 7.34375, 9.75, 8.625, 7.125, 3.5625, 1.67969, 6.75, 3.35938, 2.375, 5.9375, - 8.375, 1.95312, 4.8125, 4.0625, 4.5625, 1.21875, 3.10938, 1.96094, 4.625, 3.4375, - 1.97656, 2.32812, 6.28125, 5.0625, 4.5625, 1.375, 2.53125, 1.23438, 8.125, 9.75, - 1.59375, 4.6875, 1.89062, 2.625, 7.3125, 5.5, 2.15625, 6.84375, 4.0625, 9.875, - 8.9375, 5.4375, 9.9375, 3.96875, 9.75, 7.5, 6.59375, 2.96875, 6.625, 1.05469, - 8.125, 7.6875, 5, 3.92188, 8.3125, 6.65625, 9.4375, 8.125, 1.53125, 3.75, - 4.875, 9.375, 9, 5.53125, 3.65625, 2.29688, 6.125, 4.21875, 9.375, 1.39062, - 6.125, 8, 1.34375, 6.90625, 6.84375, 6.4375, 1.26562, 4.375, 5.875, 5.0625, - 6.375, 2.73438, 9.4375, 7.90625, 6.15625, 6.3125, 1.46875, 6.125, 2.32812, 2.53125, - 4.71875, 7.40625, 2.57812, 1.9375, 8.75, 5.0625, 2.25, 1.95312, 2.79688, 3.40625, - 6.53125, 3.98438, 9.75, 4.875, 2.67188, 9.25, 1.5, 6.9375, 9.25, 2.46875, - 6.6875, 2.1875, 2.48438, 6.40625, 2.9375, 1.25, 8.875, 3.8125, 9.5, 2.375, - 2.53125, 8.5, 3.28125, 7.4375, 2.9375, 6.53125, 2.0625, 3.45312, 3.5, 1.60938, - 8, 5.25, 6.5, 8.875, 2.89062, 4.5625, 9.4375, 9.625, 9.375, 3.4375, - 5, 7.46875, 3.71875, 2.875, 1.09375, 6.0625, 5.4375, 4.4375, 8.375, 9.25, - 4.9375, 9.625, 4.5, 4.28125, 9.0625, 1.92188, 3.5625, 6.15625, 7.84375, 7.09375, - 9.25, 3.04688, 8.875, 7.5, 3.90625, 6.40625, 8.875, 8.9375, 7.125, 9.5, - 7.375, 8.875, 6, 1.03125, 9.875, 1.27344, 5.9375, 3.8125, 7.96875, 5.6875, - 7.1875, 9.625, 2.07812, 2.5, 4.1875, 6.375, 7.125, 6.4375, 5.09375, 9.375, - 5.5625, 6.40625, 7.5625, 3.3125, 2.09375, 1.07812, 8.25, 9.0625, 5.4375, 8.375, - 5.0625, 2.5, 7.1875, 1.04688, 3.40625, 7, 9.125, 1.21875, 2.46875, 2.53125, - 7.5625, 6.125, 3.04688, 9.375, 4.75, 10, 6.15625, 2.0625, 5.4375, 8.5, - 6.375, 7.875, 5.5, 3.375, 9.75, 7.9375, 2.03125, 2.0625, 6.03125, 5.5625, - 1.625, 1.13281, 1.22656, 7.09375, 8.5625, 1.77344, 8.625, 7.6875, 7.5, 7.34375, - 7.65625, 3.20312, 5.9375, 6.1875, 1.01562, 5.65625, 5.78125, 2.21875, 9, 2.04688, - 5.71875, 5.125, 4.96875, 2.53125, 1.33594, 4.1875, 9.75, 3.0625, 9, 7.1875, - 3.46875, 3.75, 3.09375, 2.85938, 9.125, 1.35938, 7.84375, 3.82812, 8.1875, 4.75, - 2.65625, 1.40625, 8.5, 5.375, 6.75, 1.69531, 5.875, 6.75, 4.59375, 2.625, - 4.125, 5.375, 4.125, 9.375, 6.25, 7.3125, 8.375, 1.55469, 8.3125, 5.125, - 9.4375, 5.03125, 1.3125, 8.625, 3.15625, 1.30469, 9, 7.90625, 7.875, 7.8125, - 1.45312, 5.4375, 2.84375, 1.23438, 4.96875, 7.59375, 4.65625, 2.04688, 8.25, 4.21875, - 9.4375, 5.9375, 2.64062, 5.75, 3.15625, 9.5, 1.42188, 8.4375, 5.3125, 5, - 9.25, 7.875, 8.875, 4, 6.875, 8.625, 2.875, 2.54688, 8.75, 10}, - std::vector{ - 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, - 9.0625, 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, - 2.39062, 9.25, 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, - 2.65625, 2.10938, 8.375, 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, - 7.625, 8.25, 2.10938, 8.625, 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, - 8.5625, 8.75, 7.46875, 9.625, 8.875, 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, - 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, 7.65625, 1.75, 2.96875, 3.875, - 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, 1.86719, 9.25, 7.125, - 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, 9.375, 9.1875, - 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, 6.25, - 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, - 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, - 4.0625, 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, - 6.25, 7.3125, 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, - 2.10938, 9.5, 6.25, 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, - 1.79688, 9, 7.9375, 2.64062, 9.75, 8.75, 9.6875, 3.59375, 4, 10, - 8.875, 2.82812, 9.0625, 8.8125, 1.76562, 2.23438, 6.625, 2.375, 3.70312, 8.375, - 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, 9.375, 1.625, 2.03125, 9.5, - 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, 5.65625, 3.92188, 4.125, - 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, 1.65625, 3.54688, - 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, 2.78125, - 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, - 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, - 5.34375, 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, - 7.21875, 7.125, 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, - 7.875, 4.6875, 8.0625, 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, - 7.75, 2.28125, 8.75, 7.6875, 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, - 4.9375, 5.21875, 1.5, 5.125, 7.5, 7.1875, 6, 2.71875, 6.5625, 9.875, - 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, 1.84375, 8.75, 8.875, 9.6875, - 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, 5.6875, 9.75, 8.125, - 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, 4.6875, 9.875, - 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, 7.8125, - 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, - 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, - 3.09375, 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, - 8.75, 4.21875, 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, - 1.25, 3.76562, 7.75, 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, - 2, 9, 4.46875, 7.25, 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, - 7.5625, 1.92969, 2.32812, 3.25, 4.375, 1.125, 7.75, 2.4375, 3.34375, 5.6875, - 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, 1.73438, 2.5, 3.09375, 1.28906, - 1.75, 8.4375, 4.875, 3.5, 7.78125, 6.8125, 1.42188, 5.125, 7.6875, 3.90625, - 4.125, 9.8125, 2.4375, 4.625, 9.9375, 9.75, 7.625, 5.875, 9.5, 9.125, - 9.5, 1.03125, 1.15625, 8.5625, 5.34375, 2.75, 5.6875, 6.03125, 2.6875, 3.15625, - 9.75, 2.04688, 8.875, 4.6875, 4.40625, 5, 3.78125, 1.17188, 7, 3.92188, - 3.48438, 9.0625, 4.0625, 3.34375, 3.5625, 6.6875, 5.5625, 8.875, 5.25, 2.34375, - 1.48438, 1.14844, 7.21875, 7.25, 5.375, 7.1875, 3.34375, 1.5625, 8.1875, 1.95312, - 7.21875, 1.48438, 8.625, 9.25, 1.14062, 4.65625, 5.15625, 9.75, 2.28125, 1.71875, - 6.8125, 9.25, 6.125, 2.84375, 7.21875, 4.09375, 9, 4.8125, 6.15625, 7.625, - 6.625, 6, 7.5, 2.46875, 6.125, 1.33594, 8.25, 5.125, 3.53125, 6.875, - 4.4375, 3.10938, 7.5625, 9.25, 7.1875, 1.15625, 7.875, 3.21875, 7.40625, 6.46875, - 4.875, 5.3125, 7.09375, 9.375, 8.75, 3.75, 9.3125, 2.25, 9.5, 3.375, - 7.3125, 6.875, 8.5625, 6.5, 5.09375, 6.4375, 6.625, 4.28125, 6.75, 2.65625, - 8.25, 7, 4.1875, 5.4375, 8.125, 2.71875, 4.3125, 8, 2.65625, 6.375, - 3.67188, 3.6875, 8.125, 8.125, 4.09375, 2.25, 9.6875, 1.04688, 5.375, 1.96875, - 3.03125, 2.42188, 7.75, 5.125, 8.25, 6.9375, 6.8125, 8.375, 8.5, 1.04688, - 1.39062, 4.21875, 2.03125, 5.40625, 8.25, 9, 6.5625, 4.25, 8.5, 4.9375, - 7.875, 5.875, 5.75, 9.4375, 6.84375, 4.0625, 9, 3.375, 4.84375, 4.375, - 9.75, 6.5, 7.125, 9.375, 4.5, 1.40625, 2.71875, 8.75, 5.59375, 8.875, - 8.5625, 4.375, 9.625, 5.5625, 7.0625, 9, 5.9375, 4.1875, 2.1875, 8.75, - 2.90625, 6.5, 5.96875, 5.15625, 4.4375, 7.25, 5.0625, 1.65625, 4.1875, 5.46875, - 5.03125, 2.59375, 3.78125, 7.84375, 3.125, 2.46875, 4.03125, 4.5625, 6.0625, 9.25, - 2.6875, 6.75, 3.14062, 3.71875, 9.875, 5.9375, 1.96875, 4.375, 6.6875, 7.6875, - 7.1875, 6.375, 6.8125, 1.76562, 8.125, 8.625, 7.96875, 2.45312, 2.20312, 1.65625, - 6.625, 7.8125, 4.65625, 5.25, 4.875, 3.71875, 8.8125, 7.3125, 1.54688, 4.3125, - 5.34375, 1.8125, 1.03125, 7.84375, 2.09375, 1.8125, 5.6875, 4.3125, 3.8125, 8.25, - 1.48438, 2.75, 8.75, 6.4375, 7, 1.67188, 9.125, 7.875, 9.625, 7.875, - 1.46875, 10, 2.15625, 7.28125, 5.03125, 4.34375, 7.4375, 8.1875, 5.21875, 2.625, - 9.625, 10, 7.6875, 7.75, 8.75, 2.25, 4.71875, 6.375, 5.84375, 8.8125, - 1.54688, 6.4375, 7.125, 7.25, 8.875, 5.25, 8.25, 10, 1.03125, 1.45312, - 6.5625, 4.5625, 4.125, 4.125, 7.53125, 8.75, 1.53125, 7.4375, 6.125, 2.71875, - 4.9375, 6.25, 6.5, 2.95312, 9.375, 9.625, 4.5, 5.40625, 1.16406, 2.71875, - 1.08594, 8.875, 5.3125, 2.34375, 7.09375, 8.875, 4.71875, 3.95312, 3.79688, 5.375, - 2.59375, 9.0625, 6.125, 8.25, 3.5625, 5.375, 9.5, 7.5625, 8.75, 3.75, - 1.125, 3.21875, 5.5625, 3.59375, 4.625, 8.5, 7.71875, 3.15625, 8, 8.25, - 8.6875, 4.78125, 2.625, 4.28125, 5.6875, 1.625, 6.375, 2.4375, 8.625, 5.75, - 9, 2.39062, 1.76562, 1.5, 8.6875, 3.96875, 6.75, 2.40625, 6.4375, 8.8125, - 3.375, 2.15625, 8.75, 3.625, 4.9375, 7.9375, 9.625, 8.125, 2.96875, 9.625, - 4.4375, 9.4375, 2.6875, 3.625, 3.59375, 9.25, 4.1875, 2.6875, 5.9375, 7.875, - 7.1875, 8, 7.90625, 4.28125, 6.0625, 8.875, 3.90625, 1.69531, 3.5, 3.34375, - 7.75, 2.46875, 6.875, 4.1875, 8.5625, 5.1875, 5.34375, 6.15625, 9.375, 10}, - std::vector{ - 1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, - 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, - 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, - 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 8.75, - 9.875, 5.75, 7.1875, 5.65625, 7.375, 9.25, 6.03125, 9.75, 8.625, 1.07031, - 6.8125, 2.90625, 6.1875, 4.6875, 7.25, 1.14062, 9.0625, 2.78125, 5.625, 6.875, - 2.0625, 3.3125, 9.875, 8.9375, 5.6875, 5.875, 3.65625, 2.78125, 8.625, 4.1875, - 7.125, 7.09375, 5.125, 2.625, 3.10938, 9.4375, 5.5625, 5.8125, 3.5625, 10}, - std::vector{ - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094}, + 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, 6, + 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, 3.82812, 7.28125, + 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, 1.57812, 9.125, 6, + 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, 1.42969, 4.5625, 1.10156, 5.4375, + 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, 8.625, 4.125, 6.1875, 1.375, 6.1875, + 8.875, 6, 3.40625, 1.75781, 4.8125, 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, + 8.25, 7.40625, 2.40625, 7, 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, + 7, 7, 2.5, 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, + 2.4375, 3.34375, 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, + 3.76562, 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, + 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, 1.32812, + 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, 6.8125, 9.25, + 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, 3.3125, 3.03125, 8.5, + 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, 2.5, 4.0625, 6.15625, 8, + 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, 9.625, 7.5, 7.84375, 7.40625, 9.75, + 7.09375, 2.0625, 1.5, 6.53125, 5, 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, + 4.0625, 4.1875, 1.46875, 5, 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, + 2.71875, 9.9375, 7.8125, 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, + 6.625, 5.34375, 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, + 6.1875, 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, + 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, 7.3125, + 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, 8.625, 4.4375, + 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, 7.125, 8.9375, 6.6875, + 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, 1.03906, 7.28125, 2.64062, 8.125, + 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, 6.25, 8.75, 1.80469, 3.375, 2.4375, + 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, + 7.40625, 6.375, 7.875, 4, 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, + 7.625, 5.1875, 6.71875, 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, + 2.625, 1.21875, 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, + 2.5, 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, + 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, 2.625, + 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, 6.15625, 5.3125, + 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, 9.875, 9.8125, 5.78125, + 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, 3.1875, 4.75, 8.25, 6.125, + 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, 4.40625, 6.375, 4.375, 1.48438, 2.65625, + 1.80469, 7.5, 9.875, 7.25, 7.875, 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, + 9.875, 1.76562, 3.3125, 3.10938, 2.78125, 6.9375, 7.3125, 5.59375, 1.03125, 5.9375, 3.15625, + 6.1875, 3.15625, 7.5, 4.625, 5.65625, 2.89062, 2.71875, 8.75, 1.85938, 3.8125, 2.71875, + 4.03125, 6.25, 5.0625, 8, 7.4375, 5.625, 3, 1.1875, 6.75, 4.4375, 5.6875, + 7.625, 5.125, 9.625, 5.4375, 3.28125, 1.78125, 2.03125, 6.65625, 6.875, 3.85938, 7.0625, + 8.1875, 2.15625, 6.8125, 3.84375, 5.15625, 8.875, 7.09375, 8.375, 8.875, 8.75, 2.79688, + 3.1875, 2.0625, 9.75, 9.4375, 4.3125, 5.5625, 8.8125, 5.09375, 4, 5.375, 7.375, + 4.75, 8.875, 6.5, 1.25, 5.9375, 8.125, 7.4375, 5.625, 7.34375, 9.75, 8.625, + 7.125, 3.5625, 1.67969, 6.75, 3.35938, 2.375, 5.9375, 8.375, 1.95312, 4.8125, 4.0625, + 4.5625, 1.21875, 3.10938, 1.96094, 4.625, 3.4375, 1.97656, 2.32812, 6.28125, 5.0625, 4.5625, + 1.375, 2.53125, 1.23438, 8.125, 9.75, 1.59375, 4.6875, 1.89062, 2.625, 7.3125, 5.5, + 2.15625, 6.84375, 4.0625, 9.875, 8.9375, 5.4375, 9.9375, 3.96875, 9.75, 7.5, 6.59375, + 2.96875, 6.625, 1.05469, 8.125, 7.6875, 5, 3.92188, 8.3125, 6.65625, 9.4375, 8.125, + 1.53125, 3.75, 4.875, 9.375, 9, 5.53125, 3.65625, 2.29688, 6.125, 4.21875, 9.375, + 1.39062, 6.125, 8, 1.34375, 6.90625, 6.84375, 6.4375, 1.26562, 4.375, 5.875, 5.0625, + 6.375, 2.73438, 9.4375, 7.90625, 6.15625, 6.3125, 1.46875, 6.125, 2.32812, 2.53125, 4.71875, + 7.40625, 2.57812, 1.9375, 8.75, 5.0625, 2.25, 1.95312, 2.79688, 3.40625, 6.53125, 3.98438, + 9.75, 4.875, 2.67188, 9.25, 1.5, 6.9375, 9.25, 2.46875, 6.6875, 2.1875, 2.48438, + 6.40625, 2.9375, 1.25, 8.875, 3.8125, 9.5, 2.375, 2.53125, 8.5, 3.28125, 7.4375, + 2.9375, 6.53125, 2.0625, 3.45312, 3.5, 1.60938, 8, 5.25, 6.5, 8.875, 2.89062, + 4.5625, 9.4375, 9.625, 9.375, 3.4375, 5, 7.46875, 3.71875, 2.875, 1.09375, 6.0625, + 5.4375, 4.4375, 8.375, 9.25, 4.9375, 9.625, 4.5, 4.28125, 9.0625, 1.92188, 3.5625, + 6.15625, 7.84375, 7.09375, 9.25, 3.04688, 8.875, 7.5, 3.90625, 6.40625, 8.875, 8.9375, + 7.125, 9.5, 7.375, 8.875, 6, 1.03125, 9.875, 1.27344, 5.9375, 3.8125, 7.96875, + 5.6875, 7.1875, 9.625, 2.07812, 2.5, 4.1875, 6.375, 7.125, 6.4375, 5.09375, 9.375, + 5.5625, 6.40625, 7.5625, 3.3125, 2.09375, 1.07812, 8.25, 9.0625, 5.4375, 8.375, 5.0625, + 2.5, 7.1875, 1.04688, 3.40625, 7, 9.125, 1.21875, 2.46875, 2.53125, 7.5625, 6.125, + 3.04688, 9.375, 4.75, 10, 6.15625, 2.0625, 5.4375, 8.5, 6.375, 7.875, 5.5, + 3.375, 9.75, 7.9375, 2.03125, 2.0625, 6.03125, 5.5625, 1.625, 1.13281, 1.22656, 7.09375, + 8.5625, 1.77344, 8.625, 7.6875, 7.5, 7.34375, 7.65625, 3.20312, 5.9375, 6.1875, 1.01562, + 5.65625, 5.78125, 2.21875, 9, 2.04688, 5.71875, 5.125, 4.96875, 2.53125, 1.33594, 4.1875, + 9.75, 3.0625, 9, 7.1875, 3.46875, 3.75, 3.09375, 2.85938, 9.125, 1.35938, 7.84375, + 3.82812, 8.1875, 4.75, 2.65625, 1.40625, 8.5, 5.375, 6.75, 1.69531, 5.875, 6.75, + 4.59375, 2.625, 4.125, 5.375, 4.125, 9.375, 6.25, 7.3125, 8.375, 1.55469, 8.3125, + 5.125, 9.4375, 5.03125, 1.3125, 8.625, 3.15625, 1.30469, 9, 7.90625, 7.875, 7.8125, + 1.45312, 5.4375, 2.84375, 1.23438, 4.96875, 7.59375, 4.65625, 2.04688, 8.25, 4.21875, 9.4375, + 5.9375, 2.64062, 5.75, 3.15625, 9.5, 1.42188, 8.4375, 5.3125, 5, 9.25, 7.875, + 8.875, 4, 6.875, 8.625, 2.875, 2.54688, 8.75, 10}, + std::vector{ + 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, 9.0625, + 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, 2.39062, 9.25, + 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, 2.65625, 2.10938, 8.375, + 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, 7.625, 8.25, 2.10938, 8.625, + 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, 8.5625, 8.75, 7.46875, 9.625, 8.875, + 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, + 7.65625, 1.75, 2.96875, 3.875, 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, + 1.86719, 9.25, 7.125, 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, + 9.375, 9.1875, 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, + 6.25, 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, + 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, 4.0625, + 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, 6.25, 7.3125, + 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, 2.10938, 9.5, 6.25, + 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, 1.79688, 9, 7.9375, 2.64062, + 9.75, 8.75, 9.6875, 3.59375, 4, 10, 8.875, 2.82812, 9.0625, 8.8125, 1.76562, + 2.23438, 6.625, 2.375, 3.70312, 8.375, 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, + 9.375, 1.625, 2.03125, 9.5, 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, + 5.65625, 3.92188, 4.125, 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, + 1.65625, 3.54688, 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, + 2.78125, 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, + 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, 5.34375, + 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, 7.21875, 7.125, + 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, 7.875, 4.6875, 8.0625, + 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, 7.75, 2.28125, 8.75, 7.6875, + 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, 4.9375, 5.21875, 1.5, 5.125, 7.5, + 7.1875, 6, 2.71875, 6.5625, 9.875, 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, + 1.84375, 8.75, 8.875, 9.6875, 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, + 5.6875, 9.75, 8.125, 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, + 4.6875, 9.875, 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, + 7.8125, 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, + 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, 3.09375, + 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, 8.75, 4.21875, + 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, 1.25, 3.76562, 7.75, + 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, 2, 9, 4.46875, 7.25, + 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, 7.5625, 1.92969, 2.32812, 3.25, 4.375, + 1.125, 7.75, 2.4375, 3.34375, 5.6875, 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, + 1.73438, 2.5, 3.09375, 1.28906, 1.75, 8.4375, 4.875, 3.5, 7.78125, 6.8125, 1.42188, + 5.125, 7.6875, 3.90625, 4.125, 9.8125, 2.4375, 4.625, 9.9375, 9.75, 7.625, 5.875, + 9.5, 9.125, 9.5, 1.03125, 1.15625, 8.5625, 5.34375, 2.75, 5.6875, 6.03125, 2.6875, + 3.15625, 9.75, 2.04688, 8.875, 4.6875, 4.40625, 5, 3.78125, 1.17188, 7, 3.92188, + 3.48438, 9.0625, 4.0625, 3.34375, 3.5625, 6.6875, 5.5625, 8.875, 5.25, 2.34375, 1.48438, + 1.14844, 7.21875, 7.25, 5.375, 7.1875, 3.34375, 1.5625, 8.1875, 1.95312, 7.21875, 1.48438, + 8.625, 9.25, 1.14062, 4.65625, 5.15625, 9.75, 2.28125, 1.71875, 6.8125, 9.25, 6.125, + 2.84375, 7.21875, 4.09375, 9, 4.8125, 6.15625, 7.625, 6.625, 6, 7.5, 2.46875, + 6.125, 1.33594, 8.25, 5.125, 3.53125, 6.875, 4.4375, 3.10938, 7.5625, 9.25, 7.1875, + 1.15625, 7.875, 3.21875, 7.40625, 6.46875, 4.875, 5.3125, 7.09375, 9.375, 8.75, 3.75, + 9.3125, 2.25, 9.5, 3.375, 7.3125, 6.875, 8.5625, 6.5, 5.09375, 6.4375, 6.625, + 4.28125, 6.75, 2.65625, 8.25, 7, 4.1875, 5.4375, 8.125, 2.71875, 4.3125, 8, + 2.65625, 6.375, 3.67188, 3.6875, 8.125, 8.125, 4.09375, 2.25, 9.6875, 1.04688, 5.375, + 1.96875, 3.03125, 2.42188, 7.75, 5.125, 8.25, 6.9375, 6.8125, 8.375, 8.5, 1.04688, + 1.39062, 4.21875, 2.03125, 5.40625, 8.25, 9, 6.5625, 4.25, 8.5, 4.9375, 7.875, + 5.875, 5.75, 9.4375, 6.84375, 4.0625, 9, 3.375, 4.84375, 4.375, 9.75, 6.5, + 7.125, 9.375, 4.5, 1.40625, 2.71875, 8.75, 5.59375, 8.875, 8.5625, 4.375, 9.625, + 5.5625, 7.0625, 9, 5.9375, 4.1875, 2.1875, 8.75, 2.90625, 6.5, 5.96875, 5.15625, + 4.4375, 7.25, 5.0625, 1.65625, 4.1875, 5.46875, 5.03125, 2.59375, 3.78125, 7.84375, 3.125, + 2.46875, 4.03125, 4.5625, 6.0625, 9.25, 2.6875, 6.75, 3.14062, 3.71875, 9.875, 5.9375, + 1.96875, 4.375, 6.6875, 7.6875, 7.1875, 6.375, 6.8125, 1.76562, 8.125, 8.625, 7.96875, + 2.45312, 2.20312, 1.65625, 6.625, 7.8125, 4.65625, 5.25, 4.875, 3.71875, 8.8125, 7.3125, + 1.54688, 4.3125, 5.34375, 1.8125, 1.03125, 7.84375, 2.09375, 1.8125, 5.6875, 4.3125, 3.8125, + 8.25, 1.48438, 2.75, 8.75, 6.4375, 7, 1.67188, 9.125, 7.875, 9.625, 7.875, + 1.46875, 10, 2.15625, 7.28125, 5.03125, 4.34375, 7.4375, 8.1875, 5.21875, 2.625, 9.625, + 10, 7.6875, 7.75, 8.75, 2.25, 4.71875, 6.375, 5.84375, 8.8125, 1.54688, 6.4375, + 7.125, 7.25, 8.875, 5.25, 8.25, 10, 1.03125, 1.45312, 6.5625, 4.5625, 4.125, + 4.125, 7.53125, 8.75, 1.53125, 7.4375, 6.125, 2.71875, 4.9375, 6.25, 6.5, 2.95312, + 9.375, 9.625, 4.5, 5.40625, 1.16406, 2.71875, 1.08594, 8.875, 5.3125, 2.34375, 7.09375, + 8.875, 4.71875, 3.95312, 3.79688, 5.375, 2.59375, 9.0625, 6.125, 8.25, 3.5625, 5.375, + 9.5, 7.5625, 8.75, 3.75, 1.125, 3.21875, 5.5625, 3.59375, 4.625, 8.5, 7.71875, + 3.15625, 8, 8.25, 8.6875, 4.78125, 2.625, 4.28125, 5.6875, 1.625, 6.375, 2.4375, + 8.625, 5.75, 9, 2.39062, 1.76562, 1.5, 8.6875, 3.96875, 6.75, 2.40625, 6.4375, + 8.8125, 3.375, 2.15625, 8.75, 3.625, 4.9375, 7.9375, 9.625, 8.125, 2.96875, 9.625, + 4.4375, 9.4375, 2.6875, 3.625, 3.59375, 9.25, 4.1875, 2.6875, 5.9375, 7.875, 7.1875, + 8, 7.90625, 4.28125, 6.0625, 8.875, 3.90625, 1.69531, 3.5, 3.34375, 7.75, 2.46875, + 6.875, 4.1875, 8.5625, 5.1875, 5.34375, 6.15625, 9.375, 10}, + std::vector{1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, + 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, + 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, + 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 8.75, + 9.875, 5.75, 7.1875, 5.65625, 7.375, 9.25, 6.03125, 9.75, 8.625, 1.07031, + 6.8125, 2.90625, 6.1875, 4.6875, 7.25, 1.14062, 9.0625, 2.78125, 5.625, 6.875, + 2.0625, 3.3125, 9.875, 8.9375, 5.6875, 5.875, 3.65625, 2.78125, 8.625, 4.1875, + 7.125, 7.09375, 5.125, 2.625, 3.10938, 9.4375, 5.5625, 5.8125, 3.5625, 10}, + std::vector{0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094}, std::vector{ 0.466797, 0.667969, 0.617188, 0.648438, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, - 0.433594, 0.664062, 0.570312, 0.617188, 0.664062, 0.65625, 0.667969, 0.664062, 0.65625, 0.625, - 0.410156, 0.65625, 0.523438, 0.570312, 0.648438, 0.632812, 0.664062, 0.648438, 0.632812, 0.585938, - 0.390625, 0.625, 0.480469, 0.523438, 0.617188, 0.601562, 0.65625, 0.617188, 0.601562, 0.539062, + 0.433594, 0.664062, 0.570312, 0.617188, 0.664062, 0.65625, 0.667969, 0.664062, 0.65625, 0.625, + 0.410156, 0.65625, 0.523438, 0.570312, 0.648438, 0.632812, 0.664062, 0.648438, 0.632812, 0.585938, + 0.390625, 0.625, 0.480469, 0.523438, 0.617188, 0.601562, 0.65625, 0.617188, 0.601562, 0.539062, 0.380859, 0.585938, 0.443359, 0.480469, 0.570312, 0.554688, 0.632812, 0.578125, 0.554688, 0.490234, - 0.570312, 0.427734, 0.578125, 0.632812, 0.417969, 0.5, 0.609375, 0.625, 0.585938, 0.617188, - 0.617188, 0.458984, 0.625, 0.65625, 0.443359, 0.546875, 0.640625, 0.648438, 0.625, 0.648438, - 0.648438, 0.5, 0.648438, 0.664062, 0.476562, 0.59375, 0.664062, 0.664062, 0.65625, 0.664062, + 0.570312, 0.427734, 0.578125, 0.632812, 0.417969, 0.5, 0.609375, 0.625, 0.585938, 0.617188, + 0.617188, 0.458984, 0.625, 0.65625, 0.443359, 0.546875, 0.640625, 0.648438, 0.625, 0.648438, + 0.648438, 0.5, 0.648438, 0.664062, 0.476562, 0.59375, 0.664062, 0.664062, 0.65625, 0.664062, 0.664062, 0.546875, 0.664062, 0.667969, 0.523438, 0.632812, 0.667969, 0.667969, 0.664062, 0.667969, - 0.667969, 0.59375, 0.667969, 0.667969, 0.570312, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, + 0.667969, 0.59375, 0.667969, 0.667969, 0.570312, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, 0.640625, 0.585938, 0.667969, 0.59375, 0.664062, 0.648438, 0.667969, 0.648438, 0.667969, 0.664062, 0.601562, 0.539062, 0.667969, 0.546875, - 0.65625, 0.617188, 0.664062, 0.625, 0.664062, 0.648438, 0.554688, 0.496094, 0.65625, 0.5, - 0.625, 0.570312, 0.648438, 0.578125, 0.648438, 0.609375, 0.507812, 0.458984, 0.640625, 0.464844, - 0.585938, 0.523438, 0.625, 0.53125, 0.625, 0.5625, 0.466797, 0.427734, 0.601562, 0.433594, + 0.65625, 0.617188, 0.664062, 0.625, 0.664062, 0.648438, 0.554688, 0.496094, 0.65625, 0.5, + 0.625, 0.570312, 0.648438, 0.578125, 0.648438, 0.609375, 0.507812, 0.458984, 0.640625, 0.464844, + 0.585938, 0.523438, 0.625, 0.53125, 0.625, 0.5625, 0.466797, 0.427734, 0.601562, 0.433594, 0.396484, 0.578125, 0.484375, 0.601562, 0.515625, 0.449219, 0.546875, 0.443359, 0.492188, 0.59375, - 0.417969, 0.625, 0.53125, 0.632812, 0.5625, 0.484375, 0.59375, 0.480469, 0.539062, 0.632812, - 0.443359, 0.648438, 0.578125, 0.65625, 0.609375, 0.53125, 0.632812, 0.523438, 0.585938, 0.65625, - 0.476562, 0.664062, 0.625, 0.667969, 0.648438, 0.578125, 0.65625, 0.570312, 0.632812, 0.664062, - 0.523438, 0.667969, 0.648438, 0.667969, 0.664062, 0.625, 0.667969, 0.617188, 0.65625, 0.667969, - 0.664062, 0.667969, 0.664062, 0.648438, 0.667969, 0.667969, 0.667969, 0.59375, 0.648438, 0.667969, - 0.648438, 0.667969, 0.648438, 0.625, 0.667969, 0.667969, 0.667969, 0.546875, 0.625, 0.65625, - 0.625, 0.65625, 0.609375, 0.578125, 0.664062, 0.664062, 0.664062, 0.5, 0.578125, 0.632812, - 0.578125, 0.632812, 0.5625, 0.53125, 0.648438, 0.648438, 0.648438, 0.464844, 0.53125, 0.601562, - 0.53125, 0.601562, 0.515625, 0.484375, 0.617188, 0.609375, 0.609375, 0.433594, 0.484375, 0.554688, - 0.398438, 0.507812, 0.523438, 0.601562, 0.625, 0.585938, 0.492188, 0.421875, 0.617188, 0.458984, + 0.417969, 0.625, 0.53125, 0.632812, 0.5625, 0.484375, 0.59375, 0.480469, 0.539062, 0.632812, + 0.443359, 0.648438, 0.578125, 0.65625, 0.609375, 0.53125, 0.632812, 0.523438, 0.585938, 0.65625, + 0.476562, 0.664062, 0.625, 0.667969, 0.648438, 0.578125, 0.65625, 0.570312, 0.632812, 0.664062, + 0.523438, 0.667969, 0.648438, 0.667969, 0.664062, 0.625, 0.667969, 0.617188, 0.65625, 0.667969, + 0.664062, 0.667969, 0.664062, 0.648438, 0.667969, 0.667969, 0.667969, 0.59375, 0.648438, 0.667969, + 0.648438, 0.667969, 0.648438, 0.625, 0.667969, 0.667969, 0.667969, 0.546875, 0.625, 0.65625, + 0.625, 0.65625, 0.609375, 0.578125, 0.664062, 0.664062, 0.664062, 0.5, 0.578125, 0.632812, + 0.578125, 0.632812, 0.5625, 0.53125, 0.648438, 0.648438, 0.648438, 0.464844, 0.53125, 0.601562, + 0.53125, 0.601562, 0.515625, 0.484375, 0.617188, 0.609375, 0.609375, 0.433594, 0.484375, 0.554688, + 0.398438, 0.507812, 0.523438, 0.601562, 0.625, 0.585938, 0.492188, 0.421875, 0.617188, 0.458984, 0.417969, 0.554688, 0.570312, 0.640625, 0.648438, 0.632812, 0.539062, 0.449219, 0.648438, 0.496094, - 0.445312, 0.601562, 0.617188, 0.65625, 0.664062, 0.65625, 0.585938, 0.484375, 0.664062, 0.539062, - 0.484375, 0.640625, 0.648438, 0.667969, 0.667969, 0.664062, 0.632812, 0.53125, 0.667969, 0.585938, - 0.523438, 0.65625, 0.664062, 0.667969, 0.667969, 0.667969, 0.65625, 0.578125, 0.667969, 0.632812, + 0.445312, 0.601562, 0.617188, 0.65625, 0.664062, 0.65625, 0.585938, 0.484375, 0.664062, 0.539062, + 0.484375, 0.640625, 0.648438, 0.667969, 0.667969, 0.664062, 0.632812, 0.53125, 0.667969, 0.585938, + 0.523438, 0.65625, 0.664062, 0.667969, 0.667969, 0.667969, 0.65625, 0.578125, 0.667969, 0.632812, 0.667969, 0.667969, 0.667969, 0.578125, 0.667969, 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, - 0.664062, 0.664062, 0.667969, 0.53125, 0.664062, 0.664062, 0.667969, 0.640625, 0.667969, 0.664062, - 0.648438, 0.65625, 0.664062, 0.484375, 0.648438, 0.65625, 0.65625, 0.609375, 0.65625, 0.648438, - 0.617188, 0.632812, 0.648438, 0.449219, 0.625, 0.632812, 0.632812, 0.554688, 0.640625, 0.625, - 0.570312, 0.59375, 0.625, 0.421875, 0.578125, 0.59375, 0.601562, 0.507812, 0.601562, 0.578125, - 0.410156, 0.46875, 0.570312, 0.453125, 0.585938, 0.625, 0.632812, 0.601562, 0.507812, 0.601562, - 0.433594, 0.507812, 0.617188, 0.490234, 0.625, 0.65625, 0.65625, 0.632812, 0.554688, 0.640625, - 0.464844, 0.554688, 0.648438, 0.539062, 0.65625, 0.664062, 0.664062, 0.65625, 0.601562, 0.65625, + 0.664062, 0.664062, 0.667969, 0.53125, 0.664062, 0.664062, 0.667969, 0.640625, 0.667969, 0.664062, + 0.648438, 0.65625, 0.664062, 0.484375, 0.648438, 0.65625, 0.65625, 0.609375, 0.65625, 0.648438, + 0.617188, 0.632812, 0.648438, 0.449219, 0.625, 0.632812, 0.632812, 0.554688, 0.640625, 0.625, + 0.570312, 0.59375, 0.625, 0.421875, 0.578125, 0.59375, 0.601562, 0.507812, 0.601562, 0.578125, + 0.410156, 0.46875, 0.570312, 0.453125, 0.585938, 0.625, 0.632812, 0.601562, 0.507812, 0.601562, + 0.433594, 0.507812, 0.617188, 0.490234, 0.625, 0.65625, 0.65625, 0.632812, 0.554688, 0.640625, + 0.464844, 0.554688, 0.648438, 0.539062, 0.65625, 0.664062, 0.664062, 0.65625, 0.601562, 0.65625, 0.507812, 0.601562, 0.664062, 0.585938, 0.664062, 0.667969, 0.667969, 0.667969, 0.640625, 0.667969, - 0.554688, 0.640625, 0.667969, 0.625, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.667969, - 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, + 0.554688, 0.640625, 0.667969, 0.625, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.667969, + 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.640625, 0.667969, 0.667969, 0.664062, 0.664062, 0.664062, 0.664062, 0.664062, 0.664062, 0.667969, - 0.601562, 0.664062, 0.664062, 0.65625, 0.648438, 0.648438, 0.65625, 0.648438, 0.640625, 0.664062, - 0.554688, 0.648438, 0.65625, 0.625, 0.617188, 0.617188, 0.632812, 0.609375, 0.609375, 0.648438, - 0.507812, 0.617188, 0.632812, 0.585938, 0.570312, 0.578125, 0.59375, 0.5625, 0.554688, 0.625, - 0.539062, 0.601562, 0.546875, 0.421875, 0.412109, 0.453125, 0.625, 0.617188, 0.625, 0.632812, - 0.585938, 0.632812, 0.59375, 0.449219, 0.4375, 0.490234, 0.648438, 0.648438, 0.648438, 0.65625, - 0.632812, 0.65625, 0.632812, 0.484375, 0.46875, 0.539062, 0.664062, 0.664062, 0.664062, 0.664062, - 0.65625, 0.667969, 0.65625, 0.53125, 0.507812, 0.585938, 0.667969, 0.667969, 0.667969, 0.667969, - 0.664062, 0.667969, 0.664062, 0.578125, 0.554688, 0.625, 0.667969, 0.667969, 0.667969, 0.667969}, + 0.601562, 0.664062, 0.664062, 0.65625, 0.648438, 0.648438, 0.65625, 0.648438, 0.640625, 0.664062, + 0.554688, 0.648438, 0.65625, 0.625, 0.617188, 0.617188, 0.632812, 0.609375, 0.609375, 0.648438, + 0.507812, 0.617188, 0.632812, 0.585938, 0.570312, 0.578125, 0.59375, 0.5625, 0.554688, 0.625, + 0.539062, 0.601562, 0.546875, 0.421875, 0.412109, 0.453125, 0.625, 0.617188, 0.625, 0.632812, + 0.585938, 0.632812, 0.59375, 0.449219, 0.4375, 0.490234, 0.648438, 0.648438, 0.648438, 0.65625, + 0.632812, 0.65625, 0.632812, 0.484375, 0.46875, 0.539062, 0.664062, 0.664062, 0.664062, 0.664062, + 0.65625, 0.667969, 0.65625, 0.53125, 0.507812, 0.585938, 0.667969, 0.667969, 0.667969, 0.667969, + 0.664062, 0.667969, 0.664062, 0.578125, 0.554688, 0.625, 0.667969, 0.667969, 0.667969, 0.667969}, std::vector{ 0.380859, 0.585938, 0.443359, 0.480469, 0.570312, 0.554688, 0.632812, 0.578125, 0.554688, 0.490234, - 0.570312, 0.427734, 0.578125, 0.632812, 0.417969, 0.5, 0.609375, 0.625, 0.585938, 0.617188, - 0.585938, 0.523438, 0.625, 0.53125, 0.625, 0.5625, 0.466797, 0.427734, 0.601562, 0.433594, + 0.570312, 0.427734, 0.578125, 0.632812, 0.417969, 0.5, 0.609375, 0.625, 0.585938, 0.617188, + 0.585938, 0.523438, 0.625, 0.53125, 0.625, 0.5625, 0.466797, 0.427734, 0.601562, 0.433594, 0.396484, 0.578125, 0.484375, 0.601562, 0.515625, 0.449219, 0.546875, 0.443359, 0.492188, 0.59375, - 0.53125, 0.601562, 0.515625, 0.484375, 0.617188, 0.609375, 0.609375, 0.433594, 0.484375, 0.554688, - 0.398438, 0.507812, 0.523438, 0.601562, 0.625, 0.585938, 0.492188, 0.421875, 0.617188, 0.458984, - 0.570312, 0.59375, 0.625, 0.421875, 0.578125, 0.59375, 0.601562, 0.507812, 0.601562, 0.578125, - 0.410156, 0.46875, 0.570312, 0.453125, 0.585938, 0.625, 0.632812, 0.601562, 0.507812, 0.601562, - 0.507812, 0.617188, 0.632812, 0.585938, 0.570312, 0.578125, 0.59375, 0.5625, 0.554688, 0.625, - 0.539062, 0.601562, 0.546875, 0.421875, 0.412109, 0.453125, 0.625, 0.617188, 0.625, 0.632812}, - std::vector{ - 0.648438, 1.375, 0.800781, 0.902344, 1.28125, 1.17969, 1.78125, 1.3125, 1.17969, 0.945312, - 1.29688, 0.761719, 1.34375, 1.8125, 0.730469, 0.972656, 1.53125, 1.71875, 1.375, 1.65625, - 1.375, 1.05469, 1.71875, 1.09375, 1.71875, 1.25, 0.867188, 0.761719, 1.51562, 0.769531, - 0.6875, 1.34375, 0.925781, 1.46875, 1.03125, 0.816406, 1.17188, 0.800781, 0.949219, 1.42188, - 1.09375, 1.46875, 1.03125, 0.929688, 1.625, 1.57812, 1.57812, 0.769531, 0.929688, 1.17969, - 0.691406, 1, 1.05469, 1.5, 1.6875, 1.40625, 0.949219, 0.746094, 1.625, 0.839844, - 1.29688, 1.42188, 1.71875, 0.746094, 1.34375, 1.4375, 1.46875, 1.01562, 1.5, 1.32812, - 0.714844, 0.878906, 1.28125, 0.832031, 1.375, 1.75, 1.78125, 1.46875, 1.01562, 1.5, - 1, 1.625, 1.82812, 1.375, 1.26562, 1.3125, 1.4375, 1.25, 1.21875, 1.6875, - 1.125, 1.46875, 1.15625, 0.746094, 0.722656, 0.832031, 1.6875, 1.65625, 1.6875, 1.82812}), + 0.53125, 0.601562, 0.515625, 0.484375, 0.617188, 0.609375, 0.609375, 0.433594, 0.484375, 0.554688, + 0.398438, 0.507812, 0.523438, 0.601562, 0.625, 0.585938, 0.492188, 0.421875, 0.617188, 0.458984, + 0.570312, 0.59375, 0.625, 0.421875, 0.578125, 0.59375, 0.601562, 0.507812, 0.601562, 0.578125, + 0.410156, 0.46875, 0.570312, 0.453125, 0.585938, 0.625, 0.632812, 0.601562, 0.507812, 0.601562, + 0.507812, 0.617188, 0.632812, 0.585938, 0.570312, 0.578125, 0.59375, 0.5625, 0.554688, 0.625, + 0.539062, 0.601562, 0.546875, 0.421875, 0.412109, 0.453125, 0.625, 0.617188, 0.625, 0.632812}, + std::vector{ + 0.648438, 1.375, 0.800781, 0.902344, 1.28125, 1.17969, 1.78125, 1.3125, 1.17969, 0.945312, + 1.29688, 0.761719, 1.34375, 1.8125, 0.730469, 0.972656, 1.53125, 1.71875, 1.375, 1.65625, + 1.375, 1.05469, 1.71875, 1.09375, 1.71875, 1.25, 0.867188, 0.761719, 1.51562, 0.769531, + 0.6875, 1.34375, 0.925781, 1.46875, 1.03125, 0.816406, 1.17188, 0.800781, 0.949219, 1.42188, + 1.09375, 1.46875, 1.03125, 0.929688, 1.625, 1.57812, 1.57812, 0.769531, 0.929688, 1.17969, + 0.691406, 1, 1.05469, 1.5, 1.6875, 1.40625, 0.949219, 0.746094, 1.625, 0.839844, + 1.29688, 1.42188, 1.71875, 0.746094, 1.34375, 1.4375, 1.46875, 1.01562, 1.5, 1.32812, + 0.714844, 0.878906, 1.28125, 0.832031, 1.375, 1.75, 1.78125, 1.46875, 1.01562, 1.5, + 1, 1.625, 1.82812, 1.375, 1.26562, 1.3125, 1.4375, 1.25, 1.21875, 1.6875, + 1.125, 1.46875, 1.15625, 0.746094, 0.722656, 0.832031, 1.6875, 1.65625, 1.6875, 1.82812}), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParamsBF16(), @@ -3364,7 +3461,7 @@ std::vector generateCombinedParams() { } std::vector generateV1CombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateV1Params(), generateV1Params(), generateV1Params(), @@ -3378,10 +3475,14 @@ std::vector generateV1CombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LSTMSequence_With_Hardcoded_Refs, ReferenceLSTMSequenceTest, - testing::ValuesIn(generateCombinedParams()), ReferenceLSTMSequenceTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMSequence_With_Hardcoded_Refs, + ReferenceLSTMSequenceTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceLSTMSequenceTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_LSTMSequence_With_Hardcoded_Refs, ReferenceLSTMSequenceV1Test, - testing::ValuesIn(generateV1CombinedParams()), ReferenceLSTMSequenceV1Test::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMSequence_With_Hardcoded_Refs, + ReferenceLSTMSequenceV1Test, + testing::ValuesIn(generateV1CombinedParams()), + ReferenceLSTMSequenceV1Test::getTestCaseName); -} // namespace \ No newline at end of file +} // namespace \ No newline at end of file diff --git a/src/plugins/template/tests/functional/op_reference/matmul.cpp b/src/plugins/template/tests/functional/op_reference/matmul.cpp index a59eb87b3660ec..7b8d9551f68486 100644 --- a/src/plugins/template/tests/functional/op_reference/matmul.cpp +++ b/src/plugins/template/tests/functional/op_reference/matmul.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/matmul.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/matmul.hpp" using namespace reference_tests; using namespace ov; diff --git a/src/plugins/template/tests/functional/op_reference/matrix_nms.cpp b/src/plugins/template/tests/functional/op_reference/matrix_nms.cpp index 95bbd6ebcac3d6..4c2fd3ee50755c 100644 --- a/src/plugins/template/tests/functional/op_reference/matrix_nms.cpp +++ b/src/plugins/template/tests/functional/op_reference/matrix_nms.cpp @@ -4,24 +4,29 @@ #include -#include "openvino/opsets/opset8.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset8.hpp" using namespace reference_tests; using namespace ov; namespace { struct MatrixNmsParams { - MatrixNmsParams( - const opset8::MatrixNms::Attributes& attrs, - const reference_tests::Tensor& boxes, const reference_tests::Tensor& scores, - const reference_tests::Tensor& expectedSelectedScores, const reference_tests::Tensor& expectedSelectedIndices, - const reference_tests::Tensor& expectedValidOutputs, const std::string& testcaseName = "") : - attrs(attrs), - boxes(boxes), scores(scores), - expectedSelectedScores(expectedSelectedScores), expectedSelectedIndices(expectedSelectedIndices), - expectedValidOutputs(expectedValidOutputs), testcaseName(testcaseName) {} + MatrixNmsParams(const opset8::MatrixNms::Attributes& attrs, + const reference_tests::Tensor& boxes, + const reference_tests::Tensor& scores, + const reference_tests::Tensor& expectedSelectedScores, + const reference_tests::Tensor& expectedSelectedIndices, + const reference_tests::Tensor& expectedValidOutputs, + const std::string& testcaseName = "") + : attrs(attrs), + boxes(boxes), + scores(scores), + expectedSelectedScores(expectedSelectedScores), + expectedSelectedIndices(expectedSelectedIndices), + expectedValidOutputs(expectedValidOutputs), + testcaseName(testcaseName) {} opset8::MatrixNms::Attributes attrs; reference_tests::Tensor boxes; @@ -83,384 +88,489 @@ std::vector generateParams() { using T = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { + std::vector params{ MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - 0, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + 0, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {3, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, - 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {3, 6}, + std::vector{1.00, + 0.95, + 0.00, + 0.00, + 1.00, + 1.00, + 1.00, + 0.8, + 0.00, + 10.00, + 1.00, + 11.00, + 1.00, + 0.13636364, + 0.0, + 0.1, + 1.0, + 1.1}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs "matrix_nms_output_type_i64"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - 0, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + 0, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {3, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, - 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {3, 6}, + std::vector{1.00, + 0.95, + 0.00, + 0.00, + 1.00, + 1.00, + 1.00, + 0.8, + 0.00, + 10.00, + 1.00, + 11.00, + 1.00, + 0.13636364, + 0.0, + 0.1, + 1.0, + 1.1}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs "matrix_nms_output_type_i32"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - 0, // background_class - opset8::MatrixNms::DecayFunction::GAUSSIAN, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + 0, // background_class + opset8::MatrixNms::DecayFunction::GAUSSIAN, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {3, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, - 10.00, 1.00, 11.00, 1.00, 0.1966116, 0.0, 0.1, 1.0, 1.1}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {3, 6}, + std::vector{1.00, + 0.95, + 0.00, + 0.00, + 1.00, + 1.00, + 1.00, + 0.8, + 0.00, + 10.00, + 1.00, + 11.00, + 1.00, + 0.1966116, + 0.0, + 0.1, + 1.0, + 1.1}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs "matrix_nms_gaussian"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - 0, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + 0, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {6, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {6, 1}, std::vector{0, 3, 1, 6, 9, 7}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {6, 6}, + std::vector{1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, + 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {6, 1}, std::vector{0, 3, 1, 6, 9, 7}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs "matrix_nms_two_batches_two_classes"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - true, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.5f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + true, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.5f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 9, 6, 0, 6, 3, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{ + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, + 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, + 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 9, 6, 0, 6, 3, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "matrix_nms_two_batches_two_classes_by_score_cross_batch"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::CLASSID, // sort_result_type - true, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.5f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::CLASSID, // sort_result_type + true, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.5f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 9, 6, 0, 3, 6, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{ + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 0.00, + 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, + 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 9, 6, 0, 3, 6, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "matrix_nms_two_batches_two_classes_by_classid_cross_batch"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::CLASSID, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - 3, // keep_top_k - 0, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::CLASSID, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + 3, // keep_top_k + 0, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {6, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {6, 1}, std::vector{0, 3, 1, 6, 9, 7}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {6, 6}, + std::vector{1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, + 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {6, 1}, std::vector{0, 3, 1, 6, 9, 7}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs "matrix_nms_by_keep_top_k"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {6, 6}, std::vector{ - 0.00, 0.95, 0.0, 10.0, 1.0, 11.0, 1.00, 0.95, 0.0, 0.0, 1.0, 1.0, 0.00, 0.9, 0.0, 0.0, 1.0, 1.0, - 1.00, 0.8, 0.0, 10.0, 1.0, 11.0, 0.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {6, 1}, std::vector{3, 0, 0, 3, 1, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{6}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {6, 6}, + std::vector{0.00, 0.95, 0.0, 10.0, 1.0, 11.0, 1.00, 0.95, 0.0, 0.0, 1.0, 1.0, + 0.00, 0.9, 0.0, 0.0, 1.0, 1.0, 1.00, 0.8, 0.0, 10.0, 1.0, 11.0, + 0.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {6, 1}, std::vector{3, 0, 0, 3, 1, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{6}), // expected_valid_outputs "matrix_nms_background"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {3, 6}, std::vector{ - 0.00, 0.95, 0.0, 10.0, 1.0, 11.0, 0.00, 0.9, 1.0, 1.0, 0.0, 0.0, 0.00, 0.75, 0.0, 0.1, 1.0, 1.1}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {3, 1}, std::vector{3, 0, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, + 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, + 0.0, 11.1, 1.0, 101.0, 0.0, 100.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {3, 6}, + std::vector{0.00, + 0.95, + 0.0, + 10.0, + 1.0, + 11.0, + 0.00, + 0.9, + 1.0, + 1.0, + 0.0, + 0.0, + 0.00, + 0.75, + 0.0, + 0.1, + 1.0, + 1.1}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {3, 1}, std::vector{3, 0, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs "matrix_nms_flipped_coordinates"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.8f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.8f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {2, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.9, 0.00, 0.00, 1.00, 1.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {2, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.9, 0.00, 0.00, 1.00, 1.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs "matrix_nms_post_threshold"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.3f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.3f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 10}, std::vector{ - 0.4, 0.01, 0.2, 0.09, 0.15, 0.05, 0.02, 0.03, 0.05, 0.0}), // scores - reference_tests::Tensor(ET_TH, {1, 6}, std::vector{ - 0.00, 0.40, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 10, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 1, 10}, + std::vector{0.4, 0.01, 0.2, 0.09, 0.15, 0.05, 0.02, 0.03, 0.05, 0.0}), // scores + reference_tests::Tensor(ET_TH, + {1, 6}, + std::vector{0.00, 0.40, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs "matrix_nms_identical_boxes"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 2, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 2, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {2, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {2, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs "matrix_nms_nms_top_k"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 1}, std::vector{0.9}), // scores - reference_tests::Tensor(ET_TH, {1, 6}, std::vector{ - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 1}, std::vector{0.9}), // scores + reference_tests::Tensor(ET_TH, + {1, 6}, + std::vector{0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs "matrix_nms_single_box"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 2.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 2.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {0, 6}, std::vector{}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {0, 1}, std::vector{}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{0}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {0, 6}, std::vector{}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {0, 1}, std::vector{}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{0}), // expected_valid_outputs "matrix_nms_no_output"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -476,6 +586,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_MatrixNms_With_Hardcoded_Refs, ReferenceMatrixNmsTest, - testing::ValuesIn(generateCombinedParams()), ReferenceMatrixNmsTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_MatrixNms_With_Hardcoded_Refs, + ReferenceMatrixNmsTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceMatrixNmsTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/max_pool.cpp b/src/plugins/template/tests/functional/op_reference/max_pool.cpp index 1ae548a93ee471..2a599eb58315d8 100644 --- a/src/plugins/template/tests/functional/op_reference/max_pool.cpp +++ b/src/plugins/template/tests/functional/op_reference/max_pool.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/max_pool.hpp" + #include -#include "openvino/op/max_pool.hpp" #include "base_reference_test.hpp" using namespace reference_tests; diff --git a/src/plugins/template/tests/functional/op_reference/maximum.cpp b/src/plugins/template/tests/functional/op_reference/maximum.cpp index faf8e328a1323c..1fafa5499d0f9f 100644 --- a/src/plugins/template/tests/functional/op_reference/maximum.cpp +++ b/src/plugins/template/tests/functional/op_reference/maximum.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/maximum.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/maximum.hpp" using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct MaximumParams { template MaximumParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -57,9 +59,9 @@ class ReferenceMaximumLayerTest : public testing::TestWithParam, private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto maximum = std::make_shared(in1, in2); @@ -76,14 +78,12 @@ template std::vector generateParamsForMaximumFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - MaximumParams(ov::PartialShape{2, 2, 2}, - ov::PartialShape{2, 2, 2}, - IN_ET, - std::vector{1, 8, -8, 17, -0.5, 0.5, 2, 1}, - std::vector{1, 2, 4, 8, 0, 0, 1, 1.5}, - std::vector{1, 8, 4, 17, 0, 0.5, 2, 1.5}) - }; + std::vector params{MaximumParams(ov::PartialShape{2, 2, 2}, + ov::PartialShape{2, 2, 2}, + IN_ET, + std::vector{1, 8, -8, 17, -0.5, 0.5, 2, 1}, + std::vector{1, 2, 4, 8, 0, 0, 1, 1.5}, + std::vector{1, 8, 4, 17, 0, 0.5, 2, 1.5})}; return params; } @@ -91,14 +91,12 @@ template std::vector generateParamsForMaximumInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - MaximumParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{0x40000140, 0x40000001, -8, 17}, - std::vector{0x40000170, 0x40000000, 4, 8}, - std::vector{0x40000170, 0x40000001, 4, 17}) - }; + std::vector params{MaximumParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{0x40000140, 0x40000001, -8, 17}, + std::vector{0x40000170, 0x40000000, 4, 8}, + std::vector{0x40000170, 0x40000001, 4, 17})}; return params; } @@ -106,14 +104,12 @@ template std::vector generateParamsForMaximumInt64() { using T = typename element_type_traits::value_type; - std::vector params{ - MaximumParams(ov::PartialShape{2, 2, 2}, - ov::PartialShape{2, 2, 2}, - IN_ET, - std::vector{1, 8, -8, 17, -5, 67635216, 2, 17179887632}, - std::vector{1, 2, 4, 8, 0, 18448, 1, 28059}, - std::vector{1, 8, 4, 17, 0, 67635216, 2, 17179887632}) - }; + std::vector params{MaximumParams(ov::PartialShape{2, 2, 2}, + ov::PartialShape{2, 2, 2}, + IN_ET, + std::vector{1, 8, -8, 17, -5, 67635216, 2, 17179887632}, + std::vector{1, 2, 4, 8, 0, 18448, 1, 28059}, + std::vector{1, 8, 4, 17, 0, 67635216, 2, 17179887632})}; return params; } @@ -121,22 +117,18 @@ template std::vector generateParamsForMaximumUnsignedInt() { using T = typename element_type_traits::value_type; - std::vector params{ - MaximumParams(ov::PartialShape{2, 2, 2}, - ov::PartialShape{2, 2, 2}, - IN_ET, - std::vector{1, 8, 7, 17, 5, 67635216, 2, 17179887}, - std::vector{1, 2, 4, 8, 0, 18448, 1, 28059}, - std::vector{1, 8, 7, 17, 5, 67635216, 2, 17179887}) - }; + std::vector params{MaximumParams(ov::PartialShape{2, 2, 2}, + ov::PartialShape{2, 2, 2}, + IN_ET, + std::vector{1, 8, 7, 17, 5, 67635216, 2, 17179887}, + std::vector{1, 2, 4, 8, 0, 18448, 1, 28059}, + std::vector{1, 8, 7, 17, 5, 67635216, 2, 17179887})}; return params; } std::vector generateCombinedParamsForMaximumFloat() { - const std::vector> allTypeParams{ - generateParamsForMaximumFloat(), - generateParamsForMaximumFloat() - }; + const std::vector> allTypeParams{generateParamsForMaximumFloat(), + generateParamsForMaximumFloat()}; std::vector combinedParams; @@ -148,9 +140,7 @@ std::vector generateCombinedParamsForMaximumFloat() { } std::vector generateCombinedParamsForMaximumInt32() { - const std::vector> allTypeParams{ - generateParamsForMaximumInt32() - }; + const std::vector> allTypeParams{generateParamsForMaximumInt32()}; std::vector combinedParams; @@ -162,9 +152,7 @@ std::vector generateCombinedParamsForMaximumInt32() { } std::vector generateCombinedParamsForMaximumInt64() { - const std::vector> allTypeParams{ - generateParamsForMaximumInt64() - }; + const std::vector> allTypeParams{generateParamsForMaximumInt64()}; std::vector combinedParams; @@ -178,8 +166,7 @@ std::vector generateCombinedParamsForMaximumInt64() { std::vector generateCombinedParamsForMaximumUnsignedInt() { const std::vector> allTypeParams{ generateParamsForMaximumUnsignedInt(), - generateParamsForMaximumUnsignedInt() - }; + generateParamsForMaximumUnsignedInt()}; std::vector combinedParams; @@ -190,28 +177,24 @@ std::vector generateCombinedParamsForMaximumUnsignedInt() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Maximum_Float_With_Hardcoded_Refs, - ReferenceMaximumLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMaximumFloat()), - ReferenceMaximumLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Maximum_Int32_With_Hardcoded_Refs, - ReferenceMaximumLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMaximumInt32()), - ReferenceMaximumLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Maximume_Int64_With_Hardcoded_Refs, - ReferenceMaximumLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMaximumInt64()), - ReferenceMaximumLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Maximume_UnsignedInt_With_Hardcoded_Refs, - ReferenceMaximumLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMaximumUnsignedInt()), - ReferenceMaximumLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Maximum_Float_With_Hardcoded_Refs, + ReferenceMaximumLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMaximumFloat()), + ReferenceMaximumLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Maximum_Int32_With_Hardcoded_Refs, + ReferenceMaximumLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMaximumInt32()), + ReferenceMaximumLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Maximume_Int64_With_Hardcoded_Refs, + ReferenceMaximumLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMaximumInt64()), + ReferenceMaximumLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Maximume_UnsignedInt_With_Hardcoded_Refs, + ReferenceMaximumLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMaximumUnsignedInt()), + ReferenceMaximumLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/memory.cpp b/src/plugins/template/tests/functional/op_reference/memory.cpp index 01c7a321b53e5e..b2fb97d6acc76e 100644 --- a/src/plugins/template/tests/functional/op_reference/memory.cpp +++ b/src/plugins/template/tests/functional/op_reference/memory.cpp @@ -699,7 +699,6 @@ INSTANTIATE_TEST_SUITE_P(smoke_Memory_With_Hardcoded_Refs, ::testing::ValuesIn(generateCombinedParamsForReadValueAssignAddReset()), ReferenceReadValueAssignAddResetLayerTest::getTestCaseName); - class ReferenceReadValueAssignAddModifyLayerTest : public ReferenceMemoryTest { protected: std::shared_ptr CreateFunction(const ov::Shape& input_shape, @@ -861,7 +860,6 @@ INSTANTIATE_TEST_SUITE_P(smoke_Memory_With_Hardcoded_Refs, ::testing::ValuesIn(generateCombinedParamsForReadValueAssignAddModify()), ReferenceReadValueAssignAddModifyLayerTest::getTestCaseName); - class ReferenceReadValueAssignAddMultiVariableModifyLayerTest : public ReferenceMemoryTest { protected: std::shared_ptr CreateFunction(const ov::Shape& input_shape, @@ -923,20 +921,20 @@ std::vector generateParamsForReadValueAssignAddMultiVariableMo } std::transform(first_result_shape1.begin(), - first_result_shape1.end(), - first_result_shape1.begin(), - first_result_shape1.begin(), - std::plus()); + first_result_shape1.end(), + first_result_shape1.begin(), + first_result_shape1.begin(), + std::plus()); std::transform(first_result_shape22.begin(), - first_result_shape22.end(), - first_result_shape22.begin(), - first_result_shape22.begin(), - std::plus()); + first_result_shape22.end(), + first_result_shape22.begin(), + first_result_shape22.begin(), + std::plus()); std::transform(first_result_shape123.begin(), - first_result_shape123.end(), - first_result_shape123.begin(), - first_result_shape123.begin(), - std::plus()); + first_result_shape123.end(), + first_result_shape123.begin(), + first_result_shape123.begin(), + std::plus()); for (size_t i = count_runs - reset_on_run; i < count_runs; i++) { std::transform(new_result_shape1.begin(), diff --git a/src/plugins/template/tests/functional/op_reference/minimum.cpp b/src/plugins/template/tests/functional/op_reference/minimum.cpp index 852d299cbe7ec6..f955c76190eebe 100644 --- a/src/plugins/template/tests/functional/op_reference/minimum.cpp +++ b/src/plugins/template/tests/functional/op_reference/minimum.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/minimum.hpp" + #include -#include "openvino/op/minimum.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -13,8 +14,10 @@ using namespace reference_tests; struct MinimumParams { template MinimumParams(const PartialShape& s, - const element::Type& iType, const element::Type& oType, - const std::vector& iValues1, const std::vector& iValues2, + const element::Type& iType, + const element::Type& oType, + const std::vector& iValues1, + const std::vector& iValues2, const std::vector& oValues) : pshape(s), inType(iType), @@ -60,47 +63,48 @@ TEST_P(ReferenceMinimumLayerTest, CompareWithHardcodedRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_Minimum, ReferenceMinimumLayerTest, ::testing::Values( - MinimumParams(PartialShape {8}, - element::u8, - element::u8, - std::vector {1, 8, 8, 17, 5, 5, 2, 3}, - std::vector {1, 2, 4, 8, 0, 2, 1, 200}, - std::vector {1, 2, 4, 8, 0, 2, 1, 3}), - MinimumParams(PartialShape {8}, - element::u16, - element::u16, - std::vector {1, 8, 8, 17, 5, 7, 123, 3}, - std::vector {1, 2, 4, 8, 0, 2, 1, 1037}, - std::vector {1, 2, 4, 8, 0, 2, 1, 3}), - MinimumParams(PartialShape {8}, - element::u32, - element::u32, - std::vector {1, 8, 8, 17, 5, 5, 2, 1}, - std::vector {1, 2, 4, 8, 0, 2, 1, 222}, - std::vector {1, 2, 4, 8, 0, 2, 1, 1}), - MinimumParams(PartialShape {8}, - element::u64, - element::u64, - std::vector {1, 8, 8, 17, 5, 5, 2, 13}, - std::vector {1, 2, 4, 8, 0, 2, 1, 2222}, - std::vector {1, 2, 4, 8, 0, 2, 1, 13}), - MinimumParams(PartialShape {8}, - element::f32, - element::f32, - std::vector {1, 8, -8, 17, -0.5, 0.5, 2, 1}, - std::vector {1, 2, 4, 8, 0, 0, 1, 1.5}, - std::vector {1, 2, -8, 8, -.5, 0, 1, 1}), - MinimumParams(PartialShape {8}, - element::i32, - element::i32, - std::vector {1, 8, -8, 17, -5, 67635216, 2, 1}, - std::vector {1, 2, 4, 8, 0, 18448, 1, 6}, - std::vector {1, 2, -8, 8, -5, 18448, 1, 1}), - MinimumParams(PartialShape {8}, - element::i64, - element::i64, - std::vector {1, 8, -8, 17, -5, 67635216, 2, 17179887632}, - std::vector {1, 2, 4, 8, 0, 18448, 1, 280592}, - std::vector {1, 2, -8, 8, -5, 18448, 1, 280592})), - ReferenceMinimumLayerTest::getTestCaseName); + smoke_Minimum, + ReferenceMinimumLayerTest, + ::testing::Values(MinimumParams(PartialShape{8}, + element::u8, + element::u8, + std::vector{1, 8, 8, 17, 5, 5, 2, 3}, + std::vector{1, 2, 4, 8, 0, 2, 1, 200}, + std::vector{1, 2, 4, 8, 0, 2, 1, 3}), + MinimumParams(PartialShape{8}, + element::u16, + element::u16, + std::vector{1, 8, 8, 17, 5, 7, 123, 3}, + std::vector{1, 2, 4, 8, 0, 2, 1, 1037}, + std::vector{1, 2, 4, 8, 0, 2, 1, 3}), + MinimumParams(PartialShape{8}, + element::u32, + element::u32, + std::vector{1, 8, 8, 17, 5, 5, 2, 1}, + std::vector{1, 2, 4, 8, 0, 2, 1, 222}, + std::vector{1, 2, 4, 8, 0, 2, 1, 1}), + MinimumParams(PartialShape{8}, + element::u64, + element::u64, + std::vector{1, 8, 8, 17, 5, 5, 2, 13}, + std::vector{1, 2, 4, 8, 0, 2, 1, 2222}, + std::vector{1, 2, 4, 8, 0, 2, 1, 13}), + MinimumParams(PartialShape{8}, + element::f32, + element::f32, + std::vector{1, 8, -8, 17, -0.5, 0.5, 2, 1}, + std::vector{1, 2, 4, 8, 0, 0, 1, 1.5}, + std::vector{1, 2, -8, 8, -.5, 0, 1, 1}), + MinimumParams(PartialShape{8}, + element::i32, + element::i32, + std::vector{1, 8, -8, 17, -5, 67635216, 2, 1}, + std::vector{1, 2, 4, 8, 0, 18448, 1, 6}, + std::vector{1, 2, -8, 8, -5, 18448, 1, 1}), + MinimumParams(PartialShape{8}, + element::i64, + element::i64, + std::vector{1, 8, -8, 17, -5, 67635216, 2, 17179887632}, + std::vector{1, 2, 4, 8, 0, 18448, 1, 280592}, + std::vector{1, 2, -8, 8, -5, 18448, 1, 280592})), + ReferenceMinimumLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/mish.cpp b/src/plugins/template/tests/functional/op_reference/mish.cpp index 9557e6ef61b194..d78b90d02e1104 100644 --- a/src/plugins/template/tests/functional/op_reference/mish.cpp +++ b/src/plugins/template/tests/functional/op_reference/mish.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/mish.hpp" + #include #include -#include "openvino/op/mish.hpp" + #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,8 +16,11 @@ using namespace ov; namespace { struct MishParams { template - MishParams(const ov::PartialShape& dynamicShape, const ov::Shape& inputShape, - const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, + MishParams(const ov::PartialShape& dynamicShape, + const ov::Shape& inputShape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, const std::string& test_name = "") : dynamicShape(dynamicShape), inputShape(inputShape), @@ -61,7 +66,7 @@ class ReferenceMishLayerTest : public testing::TestWithParam, public static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type) { const auto in = std::make_shared(input_type, input_shape); const auto Mish = std::make_shared(in); - return std::make_shared(NodeVector {Mish}, ParameterVector {in}); + return std::make_shared(NodeVector{Mish}, ParameterVector{in}); } }; @@ -70,7 +75,9 @@ TEST_P(ReferenceMishLayerTest, CompareWithRefs) { } template -std::vector generateMishFloatParams(const PartialShape& dynamicShape, const Shape& staticShape, const std::string& test_name = "") { +std::vector generateMishFloatParams(const PartialShape& dynamicShape, + const Shape& staticShape, + const std::string& test_name = "") { using T = typename element_type_traits::value_type; // generate input tensor (with possible type conversion) @@ -92,28 +99,27 @@ std::vector generateMishFloatParams(const PartialShape& dynamicShape std::vector mishParams; if (test_name != "") { - mishParams = { - MishParams(dynamicShape, staticShape, IN_ET, input, expected, test_name) - }; + mishParams = {MishParams(dynamicShape, staticShape, IN_ET, input, expected, test_name)}; } else { - mishParams = { - MishParams(dynamicShape, staticShape, IN_ET, input, expected) - }; + mishParams = {MishParams(dynamicShape, staticShape, IN_ET, input, expected)}; } return mishParams; } std::vector generateMishCombinedParams() { - const std::vector> mishTypeParams { + const std::vector> mishTypeParams{ generateMishFloatParams({2, 5}, {2, 5}), generateMishFloatParams({2, 3, 4, 5}, {2, 3, 4, 5}), generateMishFloatParams(PartialShape::dynamic(), {2, 3, 4, 5}), - generateMishFloatParams({2, Dimension::dynamic(), 4, 5}, {2, 3, 4, 5}, "dimensionDynamic"), + generateMishFloatParams({2, Dimension::dynamic(), 4, 5}, + {2, 3, 4, 5}, + "dimensionDynamic"), generateMishFloatParams({2, 5}, {2, 5}), generateMishFloatParams({2, 3, 4, 5}, {2, 3, 4, 5}), generateMishFloatParams(PartialShape::dynamic(), {2, 3, 4, 5}), - generateMishFloatParams({2, Dimension::dynamic(), 4, 5}, {2, 3, 4, 5}, "dimensionDynamic") - }; + generateMishFloatParams({2, Dimension::dynamic(), 4, 5}, + {2, 3, 4, 5}, + "dimensionDynamic")}; std::vector combinedParams; for (const auto& params : mishTypeParams) { @@ -122,7 +128,9 @@ std::vector generateMishCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Mish_With_Hardcoded_Refs, ReferenceMishLayerTest, - testing::ValuesIn(generateMishCombinedParams()), ReferenceMishLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Mish_With_Hardcoded_Refs, + ReferenceMishLayerTest, + testing::ValuesIn(generateMishCombinedParams()), + ReferenceMishLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/mod.cpp b/src/plugins/template/tests/functional/op_reference/mod.cpp index f1283194571d07..e72c725b78ea31 100644 --- a/src/plugins/template/tests/functional/op_reference/mod.cpp +++ b/src/plugins/template/tests/functional/op_reference/mod.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/mod.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/mod.hpp" using namespace ov; using namespace reference_tests; @@ -57,9 +59,9 @@ class ReferenceModLayerTest : public testing::TestWithParam, public C private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto mod = std::make_shared(in1, in2); @@ -89,9 +91,9 @@ class ReferenceModInPlaceLayerTest : public testing::TestWithParam, p private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); auto mod = std::make_shared(in1, in2); @@ -113,38 +115,36 @@ template std::vector generateParamsForMod() { using T = typename element_type_traits::value_type; - std::vector params{ - ModParams(ov::PartialShape{1, 2}, - ov::PartialShape{1, 2}, - IN_ET, - std::vector{256, 56}, - std::vector{256, 56}, - std::vector{0, 0}), - ModParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{256, 56, 21, 14}, - std::vector{112, 56, 6, 8}, - std::vector{32, 0, 3, 6}), - ModParams(ov::PartialShape{1, 2}, - ov::PartialShape{3, 2, 2}, - IN_ET, - std::vector{1, 2}, - std::vector{5, 6, 7, 8, 2, 3, 1, 5, 6, 7, 1, 3}, - std::vector{1, 2, 1, 2, 1, 2, 0, 2, 1, 2, 0, 2}), - ModParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{57}, - std::vector{13}, - std::vector{5}), - ModParams(ov::PartialShape{2, 2}, - ov::PartialShape{1}, - IN_ET, - std::vector{2, 4, 7, 8}, - std::vector{8}, - std::vector{2, 4, 7, 0}) - }; + std::vector params{ModParams(ov::PartialShape{1, 2}, + ov::PartialShape{1, 2}, + IN_ET, + std::vector{256, 56}, + std::vector{256, 56}, + std::vector{0, 0}), + ModParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{256, 56, 21, 14}, + std::vector{112, 56, 6, 8}, + std::vector{32, 0, 3, 6}), + ModParams(ov::PartialShape{1, 2}, + ov::PartialShape{3, 2, 2}, + IN_ET, + std::vector{1, 2}, + std::vector{5, 6, 7, 8, 2, 3, 1, 5, 6, 7, 1, 3}, + std::vector{1, 2, 1, 2, 1, 2, 0, 2, 1, 2, 0, 2}), + ModParams(ov::PartialShape{1}, + ov::PartialShape{1}, + IN_ET, + std::vector{57}, + std::vector{13}, + std::vector{5}), + ModParams(ov::PartialShape{2, 2}, + ov::PartialShape{1}, + IN_ET, + std::vector{2, 4, 7, 8}, + std::vector{8}, + std::vector{2, 4, 7, 0})}; return params; } @@ -152,14 +152,12 @@ template std::vector generateParamsForModNegative() { using T = typename element_type_traits::value_type; - std::vector params{ - ModParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{-57, -14, -12, -6}, - std::vector{13, -7, 5, -5}, - std::vector{-5, 0, -2, -1}) - }; + std::vector params{ModParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{-57, -14, -12, -6}, + std::vector{13, -7, 5, -5}, + std::vector{-5, 0, -2, -1})}; return params; } @@ -167,24 +165,20 @@ template std::vector generateParamsForModInPlace() { using T = typename element_type_traits::value_type; - std::vector params{ - ModParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{1, 2, 3, 4}, - std::vector{5, 6, 7, 8}, - std::vector{0, 0, 0, 0}) - }; + std::vector params{ModParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{1, 2, 3, 4}, + std::vector{5, 6, 7, 8}, + std::vector{0, 0, 0, 0})}; return params; } std::vector generateCombinedParamsForMod() { - const std::vector> allTypeParams{ - generateParamsForMod(), - generateParamsForMod(), - generateParamsForMod(), - generateParamsForMod() - }; + const std::vector> allTypeParams{generateParamsForMod(), + generateParamsForMod(), + generateParamsForMod(), + generateParamsForMod()}; std::vector combinedParams; @@ -196,12 +190,10 @@ std::vector generateCombinedParamsForMod() { } std::vector generateCombinedParamsForModNegative() { - const std::vector> allTypeParams{ - generateParamsForModNegative(), - generateParamsForModNegative(), - generateParamsForModNegative(), - generateParamsForModNegative() - }; + const std::vector> allTypeParams{generateParamsForModNegative(), + generateParamsForModNegative(), + generateParamsForModNegative(), + generateParamsForModNegative()}; std::vector combinedParams; @@ -212,14 +204,11 @@ std::vector generateCombinedParamsForModNegative() { return combinedParams; } - std::vector generateCombinedParamsForModInPlace() { - const std::vector> allTypeParams{ - generateParamsForModInPlace(), - generateParamsForModInPlace(), - generateParamsForModInPlace(), - generateParamsForModInPlace() - }; + const std::vector> allTypeParams{generateParamsForModInPlace(), + generateParamsForModInPlace(), + generateParamsForModInPlace(), + generateParamsForModInPlace()}; std::vector combinedParams; @@ -230,22 +219,19 @@ std::vector generateCombinedParamsForModInPlace() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Mod_With_Hardcoded_Refs, - ReferenceModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMod()), - ReferenceModLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Mod_Negative_With_Hardcoded_Refs, - ReferenceModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForModNegative()), - ReferenceModLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Mod_InPlace_With_Hardcoded_Refs, - ReferenceModInPlaceLayerTest, - ::testing::ValuesIn(generateCombinedParamsForModInPlace()), - ReferenceModInPlaceLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Mod_With_Hardcoded_Refs, + ReferenceModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMod()), + ReferenceModLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Mod_Negative_With_Hardcoded_Refs, + ReferenceModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForModNegative()), + ReferenceModLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Mod_InPlace_With_Hardcoded_Refs, + ReferenceModInPlaceLayerTest, + ::testing::ValuesIn(generateCombinedParamsForModInPlace()), + ReferenceModInPlaceLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/multiclass_nms.cpp b/src/plugins/template/tests/functional/op_reference/multiclass_nms.cpp index 890051dec755be..0610af6c45982f 100644 --- a/src/plugins/template/tests/functional/op_reference/multiclass_nms.cpp +++ b/src/plugins/template/tests/functional/op_reference/multiclass_nms.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/multiclass_nms.hpp" + #include -#include "openvino/op/multiclass_nms.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,33 +13,38 @@ using namespace ov; namespace { struct MulticlassNmsParams { - MulticlassNmsParams( - const int nms_top_k, - const float iou_threshold, - const float score_threshold, - const op::v8::MulticlassNms::SortResultType sort_result_type, - const int keep_top_k, - const int background_class, - const float nms_eta, - const ov::element::Type output_type, - const bool sort_result_across_batch, - const bool normalized, - const reference_tests::Tensor& boxes, const reference_tests::Tensor& scores, - const reference_tests::Tensor& expectedSelectedScores, const reference_tests::Tensor& expectedSelectedIndices, - const reference_tests::Tensor& expectedValidOutputs, const std::string& testcaseName = "") : - nms_top_k(nms_top_k), - iou_threshold(iou_threshold), - score_threshold(score_threshold), - sort_result_type(sort_result_type), - keep_top_k(keep_top_k), - background_class(background_class), - nms_eta(nms_eta), - output_type(output_type), - sort_result_across_batch(sort_result_across_batch), - normalized(normalized), - boxes(boxes), scores(scores), - expectedSelectedScores(expectedSelectedScores), expectedSelectedIndices(expectedSelectedIndices), - expectedValidOutputs(expectedValidOutputs), testcaseName(testcaseName) {} + MulticlassNmsParams(const int nms_top_k, + const float iou_threshold, + const float score_threshold, + const op::v8::MulticlassNms::SortResultType sort_result_type, + const int keep_top_k, + const int background_class, + const float nms_eta, + const ov::element::Type output_type, + const bool sort_result_across_batch, + const bool normalized, + const reference_tests::Tensor& boxes, + const reference_tests::Tensor& scores, + const reference_tests::Tensor& expectedSelectedScores, + const reference_tests::Tensor& expectedSelectedIndices, + const reference_tests::Tensor& expectedValidOutputs, + const std::string& testcaseName = "") + : nms_top_k(nms_top_k), + iou_threshold(iou_threshold), + score_threshold(score_threshold), + sort_result_type(sort_result_type), + keep_top_k(keep_top_k), + background_class(background_class), + nms_eta(nms_eta), + output_type(output_type), + sort_result_across_batch(sort_result_across_batch), + normalized(normalized), + boxes(boxes), + scores(scores), + expectedSelectedScores(expectedSelectedScores), + expectedSelectedIndices(expectedSelectedIndices), + expectedValidOutputs(expectedValidOutputs), + testcaseName(testcaseName) {} int nms_top_k; float iou_threshold; @@ -122,431 +128,498 @@ std::vector generateParams() { using T = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { + std::vector params{ MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {4, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, - 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, 0.00, 0.00, - 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {4, 6}, std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, + 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, + 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs "multiclass_nms_by_score"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {4, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, - 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, 0.00, 0.00, - 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {4, 6}, std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, + 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, + 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs "multiclass_nms_by_class_id"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {4, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, - 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, 0.00, 0.00, - 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {4, 6}, std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, + 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, + 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs "multiclass_nms_output_type_i32"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 0, 3, 9, 6, 6, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 0, 3, 9, 6, 6, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "multiclass_nms_two_batches_two_classes_by_score"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 0, 3, 9, 6, 6, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 0, 3, 9, 6, 6, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "multiclass_nms_two_batches_two_classes_by_class_id"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - true, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 9, 6, 0, 6, 3, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + true, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{ + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, + 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, + 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 9, 6, 0, 6, 3, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "multiclass_nms_two_batches_two_classes_by_score_cross_batch"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - true, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 9, 6, 0, 3, 6, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + true, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{ + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 0.00, + 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, + 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 9, 6, 0, 3, 6, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "multiclass_nms_two_batches_two_classes_by_class_id_cross_batch"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {3, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 1.00, 1.00, 0.00, 0.00, 0.00, 0.75, 0.00, 0.10, 1.00, 1.10}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {3, 1}, std::vector{3, 0, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, + 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, + 0.0, 11.1, 1.0, 101.0, 0.0, 100.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {3, 6}, + std::vector{0.00, + 0.95, + 0.00, + 10.00, + 1.00, + 11.00, + 0.00, + 0.90, + 1.00, + 1.00, + 0.00, + 0.00, + 0.00, + 0.75, + 0.00, + 0.10, + 1.00, + 1.10}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {3, 1}, std::vector{3, 0, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs "multiclass_nms_flipped_coordinates"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 10}, std::vector{ - 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9}), // scores - reference_tests::Tensor(ET_TH, {1, 6}, std::vector{ - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {1, 10, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, + 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0}), // boxes + reference_tests::Tensor(ET_TH, + {1, 1, 10}, + std::vector{0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9}), // scores + reference_tests::Tensor(ET_TH, {1, 6}, std::vector{0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs "multiclass_nms_identical_boxes"), MulticlassNmsParams( - 2, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {2, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs + 2, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {2, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs "multiclass_nms_limit_output_size"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 1}, std::vector{0.9}), // scores - reference_tests::Tensor(ET_TH, {1, 6}, std::vector{ - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 1}, std::vector{0.9}), // scores + reference_tests::Tensor(ET_TH, + {1, 6}, + std::vector{0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs "multiclass_nms_single_box"), MulticlassNmsParams( - 3, // nms_top_k - 0.2f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {2, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs + 3, // nms_top_k + 0.2f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {2, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs "multiclass_nms_by_IOU"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.95f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.96, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {1, 6}, std::vector{ - 0.00, 0.96, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {1, 1}, std::vector{3}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.95f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.96, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {1, 6}, + std::vector{0.00, 0.96, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {1, 1}, std::vector{3}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs "multiclass_nms_by_IOU_and_scores"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 2.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {0, 6}, std::vector{}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {0, 1}, std::vector{}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{0}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 2.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {0, 6}, std::vector{}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {0, 1}, std::vector{}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{0}), // expected_valid_outputs "multiclass_nms_no_output"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - 0, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {4, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {4, 1}, std::vector{0, 3, 6, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{2, 2}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + 0, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {4, 6}, std::vector{1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, + 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {4, 1}, std::vector{0, 3, 6, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{2, 2}), // expected_valid_outputs "multiclass_nms_by_background"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - 3, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {6, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, - 0.00, 1.00, 1.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, - 0.00, 1.00, 1.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {6, 1}, std::vector{3, 0, 0, 9, 6, 6}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + 3, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {6, 6}, + std::vector{ + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, + 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {6, 1}, std::vector{3, 0, 0, 9, 6, 6}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs "multiclass_nms_by_keep_top_k"), MulticlassNmsParams( - -1, // nms_top_k - 1.0f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - -1, // background_class - 0.1f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {12, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 0.00, 0.30, 0.00, - 100.00, 1.00, 101.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.30, 0.00, 100.00, 1.00, 101.00, 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, - 0.00, 1.00, 1.00, 0.00, 0.30, 0.00, 100.00, 1.00, 101.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, 1.00, 0.30, 0.00, 100.00, 1.00, 101.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {12, 1}, std::vector{ - 3, 0, 5, 0, 3, 5, 9, 6, 11, 6, 9, 11}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{6, 6}), // expected_valid_outputs + -1, // nms_top_k + 1.0f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + -1, // background_class + 0.1f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {12, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, + 0.00, 0.30, 0.00, 100.00, 1.00, 101.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, 1.00, 0.30, 0.00, 100.00, 1.00, 101.00, + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, + 0.00, 0.30, 0.00, 100.00, 1.00, 101.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, 1.00, 0.30, 0.00, 100.00, 1.00, 101.00}), + // expected_selected_scores + reference_tests::Tensor( + ET_IND, + {12, 1}, + std::vector{3, 0, 5, 0, 3, 5, 9, 6, 11, 6, 9, 11}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{6, 6}), // expected_valid_outputs "multiclass_nms_by_nms_eta"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -562,6 +635,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_MulticlassNms_With_Hardcoded_Refs, ReferenceMulticlassNmsTest, - testing::ValuesIn(generateCombinedParams()), ReferenceMulticlassNmsTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_MulticlassNms_With_Hardcoded_Refs, + ReferenceMulticlassNmsTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceMulticlassNmsTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/multiply.cpp b/src/plugins/template/tests/functional/op_reference/multiply.cpp index 607ff5dc0e7efb..bd3b27f500aeac 100644 --- a/src/plugins/template/tests/functional/op_reference/multiply.cpp +++ b/src/plugins/template/tests/functional/op_reference/multiply.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/multiply.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/multiply.hpp" using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct MultiplyParams { template MultiplyParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -57,9 +59,9 @@ class ReferenceMultiplyLayerTest : public testing::TestWithParam private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto multiply = std::make_shared(in1, in2); @@ -83,21 +85,20 @@ std::vector generateParamsForMultiply() { std::vector{1, 2, 3, 4}, std::vector{5, 6, 7, 8}, std::vector{5, 12, 21, 32}), - MultiplyParams(ov::PartialShape{3, 2, 1}, - ov::PartialShape{1, 6}, - IN_ET, - std::vector{12, 24, 36, 48, 60, 72}, - std::vector{1, 2, 3, 4, 6, 1}, - std::vector{12, 24, 36, 48, 72, 12, 24, 48, 72, 96, 144, 24, - 36, 72, 108, 144, 216, 36, 48, 96, 144, 192, 288, 48, - 60, 120, 180, 240, 360, 60, 72, 144, 216, 288, 432, 72}), + MultiplyParams( + ov::PartialShape{3, 2, 1}, + ov::PartialShape{1, 6}, + IN_ET, + std::vector{12, 24, 36, 48, 60, 72}, + std::vector{1, 2, 3, 4, 6, 1}, + std::vector{12, 24, 36, 48, 72, 12, 24, 48, 72, 96, 144, 24, 36, 72, 108, 144, 216, 36, + 48, 96, 144, 192, 288, 48, 60, 120, 180, 240, 360, 60, 72, 144, 216, 288, 432, 72}), MultiplyParams(ov::PartialShape{1}, ov::PartialShape{1}, IN_ET, std::vector{2}, std::vector{8}, - std::vector{16}) - }; + std::vector{16})}; return params; } @@ -105,27 +106,23 @@ template std::vector generateParamsForMultiplyFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - MultiplyParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{3.1}, - std::vector{8}, - std::vector{24.8}) - }; + std::vector params{MultiplyParams(ov::PartialShape{1}, + ov::PartialShape{1}, + IN_ET, + std::vector{3.1}, + std::vector{8}, + std::vector{24.8})}; return params; } std::vector generateCombinedParamsForMultiply() { - const std::vector> allTypeParams{ - generateParamsForMultiply(), - generateParamsForMultiply(), - generateParamsForMultiply(), - generateParamsForMultiply(), - generateParamsForMultiply(), - generateParamsForMultiply(), - generateParamsForMultiply() - }; + const std::vector> allTypeParams{generateParamsForMultiply(), + generateParamsForMultiply(), + generateParamsForMultiply(), + generateParamsForMultiply(), + generateParamsForMultiply(), + generateParamsForMultiply(), + generateParamsForMultiply()}; std::vector combinedParams; @@ -139,8 +136,7 @@ std::vector generateCombinedParamsForMultiply() { std::vector generateCombinedParamsForMultiplyFloat() { const std::vector> allTypeParams{ generateParamsForMultiplyFloat(), - generateParamsForMultiplyFloat() - }; + generateParamsForMultiplyFloat()}; std::vector combinedParams; @@ -151,16 +147,14 @@ std::vector generateCombinedParamsForMultiplyFloat() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Multiply_With_Hardcoded_Refs, - ReferenceMultiplyLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMultiply()), - ReferenceMultiplyLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Multiply_Float_With_Hardcoded_Refs, - ReferenceMultiplyLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMultiplyFloat()), - ReferenceMultiplyLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Multiply_With_Hardcoded_Refs, + ReferenceMultiplyLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMultiply()), + ReferenceMultiplyLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Multiply_Float_With_Hardcoded_Refs, + ReferenceMultiplyLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMultiplyFloat()), + ReferenceMultiplyLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/mvn.cpp b/src/plugins/template/tests/functional/op_reference/mvn.cpp index 5816351c2daf03..d16c7a9a76131b 100644 --- a/src/plugins/template/tests/functional/op_reference/mvn.cpp +++ b/src/plugins/template/tests/functional/op_reference/mvn.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/mvn.hpp" + #include -#include "openvino/op/mvn.hpp" #include "base_reference_test.hpp" #include "shared_test_classes/base/layer_test_utils.hpp" @@ -14,8 +15,12 @@ using namespace reference_tests; // ------------------------------ V0 ------------------------------ struct MVN1Params { - MVN1Params(const reference_tests::Tensor& paramInput, const ov::AxisSet& paramReductionAxes, const bool paramAcrossChannels, const bool paramNormalizeVariance, - const double paramEps, const reference_tests::Tensor& paramExpected) + MVN1Params(const reference_tests::Tensor& paramInput, + const ov::AxisSet& paramReductionAxes, + const bool paramAcrossChannels, + const bool paramNormalizeVariance, + const double paramEps, + const reference_tests::Tensor& paramExpected) : input(paramInput), reductionAxes(paramReductionAxes), acrossChannels(paramAcrossChannels), @@ -34,7 +39,11 @@ class ReferenceMVN1LayerTest : public testing::TestWithParam, public public: void SetUp() override { auto params = GetParam(); - function = CreateFunction(params.input, params.reductionAxes, params.acrossChannels, params.normalizeVariance, params.eps); + function = CreateFunction(params.input, + params.reductionAxes, + params.acrossChannels, + params.normalizeVariance, + params.eps); inputData = {params.input.data}; refOutData = {params.expected.data}; } @@ -54,14 +63,17 @@ class ReferenceMVN1LayerTest : public testing::TestWithParam, public } private: - static std::shared_ptr CreateFunction(const reference_tests::Tensor& input, const ov::AxisSet& reductionAxes, const bool acrossChannels, - const bool normalizeVariance, const double eps) { + static std::shared_ptr CreateFunction(const reference_tests::Tensor& input, + const ov::AxisSet& reductionAxes, + const bool acrossChannels, + const bool normalizeVariance, + const double eps) { const auto in = std::make_shared(input.type, input.shape); auto mvn = std::make_shared(in, acrossChannels, normalizeVariance, eps); if (!reductionAxes.empty()) { mvn = std::make_shared(in, reductionAxes, normalizeVariance, eps); } - return std::make_shared(NodeVector {mvn}, ParameterVector {in}); + return std::make_shared(NodeVector{mvn}, ParameterVector{in}); } }; @@ -69,79 +81,110 @@ TEST_P(ReferenceMVN1LayerTest, CompareWithHardcodedRefs) { Exec(); } -const ov::AxisSet emptyReductionAxes {}; +const ov::AxisSet emptyReductionAxes{}; INSTANTIATE_TEST_SUITE_P( - smoke_MVN1_With_Hardcoded_Refs, ReferenceMVN1LayerTest, + smoke_MVN1_With_Hardcoded_Refs, + ReferenceMVN1LayerTest, ::testing::Values( // across_channels=false, variance=false - MVN1Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + MVN1Params(reference_tests::Tensor{{1, 3, 3, 3}, + ov::element::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, emptyReductionAxes, false, false, 1e-9, - reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {-4, -3, -2, -1, 0, 1, 2, 3, 4, -4, -3, -2, -1, 0, - 1, 2, 3, 4, -4, -3, -2, -1, 0, 1, 2, 3, 4}}), + reference_tests::Tensor{{1, 3, 3, 3}, + ov::element::f32, + std::vector{-4, -3, -2, -1, 0, 1, 2, 3, 4, -4, -3, -2, -1, 0, + 1, 2, 3, 4, -4, -3, -2, -1, 0, 1, 2, 3, 4}}), // across_channels=true, variance=false MVN1Params( - reference_tests::Tensor {{1, 3, 2, 2}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3}}, + reference_tests::Tensor{{1, 3, 2, 2}, + ov::element::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3}}, emptyReductionAxes, true, false, 1e-9, - reference_tests::Tensor {{1, 3, 2, 2}, ov::element::f32, std::vector {-3.25, -2.25, -1.25, -0.25, 0.75, 1.75, 2.75, 3.75, 4.75, -3.25, -2.25, -1.25}}), + reference_tests::Tensor{ + {1, 3, 2, 2}, + ov::element::f32, + std::vector{-3.25, -2.25, -1.25, -0.25, 0.75, 1.75, 2.75, 3.75, 4.75, -3.25, -2.25, -1.25}}), // across_channels=false, variance=true - MVN1Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - emptyReductionAxes, - false, - true, - 1e-9, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), + MVN1Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + emptyReductionAxes, + false, + true, + 1e-9, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), // across_channels=true, variance=true - MVN1Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - emptyReductionAxes, - true, - true, - 1e-9, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), + MVN1Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + emptyReductionAxes, + true, + true, + 1e-9, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), // reductionAxes, variance=false MVN1Params( - reference_tests::Tensor {{1, 3, 2, 2}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3}}, + reference_tests::Tensor{{1, 3, 2, 2}, + ov::element::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3}}, {1, 2, 3}, false, false, 1e-9, - reference_tests::Tensor {{1, 3, 2, 2}, ov::element::f32, std::vector {-3.25, -2.25, -1.25, -0.25, 0.75, 1.75, 2.75, 3.75, 4.75, -3.25, -2.25, -1.25}}), + reference_tests::Tensor{ + {1, 3, 2, 2}, + ov::element::f32, + std::vector{-3.25, -2.25, -1.25, -0.25, 0.75, 1.75, 2.75, 3.75, 4.75, -3.25, -2.25, -1.25}}), // reductionAxes, variance=true - MVN1Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - {2, 3}, - false, - true, - 1e-9, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}})), + MVN1Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + {2, 3}, + false, + true, + 1e-9, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}})), ReferenceMVN1LayerTest::getTestCaseName); // ------------------------------ V6 ------------------------------ struct MVN6Params { - MVN6Params(const reference_tests::Tensor& paramInput, const reference_tests::Tensor& paramReductionAxes, const bool paramNormalizeVariance, const double paramEps, - const op::MVNEpsMode mode, const reference_tests::Tensor& paramExpected) + MVN6Params(const reference_tests::Tensor& paramInput, + const reference_tests::Tensor& paramReductionAxes, + const bool paramNormalizeVariance, + const double paramEps, + const op::MVNEpsMode mode, + const reference_tests::Tensor& paramExpected) : input(paramInput), reductionAxes(paramReductionAxes), normalizeVariance(paramNormalizeVariance), @@ -160,7 +203,8 @@ class ReferenceMVN6LayerTest : public testing::TestWithParam, public public: void SetUp() override { auto params = GetParam(); - function = CreateFunction(params.input, params.reductionAxes, params.normalizeVariance, params.eps, params.epsMode); + function = + CreateFunction(params.input, params.reductionAxes, params.normalizeVariance, params.eps, params.epsMode); inputData = {params.input.data}; refOutData = {params.expected.data}; } @@ -177,8 +221,11 @@ class ReferenceMVN6LayerTest : public testing::TestWithParam, public } private: - static std::shared_ptr CreateFunction(const reference_tests::Tensor& input, const reference_tests::Tensor& reductionAxes, const bool normalizeVariance, const double eps, - const op::MVNEpsMode epsMode) { + static std::shared_ptr CreateFunction(const reference_tests::Tensor& input, + const reference_tests::Tensor& reductionAxes, + const bool normalizeVariance, + const double eps, + const op::MVNEpsMode epsMode) { std::vector dataVector(reductionAxes.shape[0]); const auto in = std::make_shared(input.type, input.shape); const auto refBuffer = reductionAxes.data.data(); @@ -187,7 +234,7 @@ class ReferenceMVN6LayerTest : public testing::TestWithParam, public } const auto axes = std::make_shared(reductionAxes.type, reductionAxes.shape, dataVector); auto mvn = std::make_shared(in, axes, normalizeVariance, static_cast(eps), epsMode); - return std::make_shared(NodeVector {mvn}, ParameterVector {in}); + return std::make_shared(NodeVector{mvn}, ParameterVector{in}); } }; @@ -196,51 +243,68 @@ TEST_P(ReferenceMVN6LayerTest, CompareWithHardcodedRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_MVN6_With_Hardcoded_Refs, ReferenceMVN6LayerTest, + smoke_MVN6_With_Hardcoded_Refs, + ReferenceMVN6LayerTest, ::testing::Values( // variance=false, OUTSIDE_SQRT - MVN6Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - reference_tests::Tensor {Shape {2}, ov::element::i64, std::vector {2, 3}}, + MVN6Params(reference_tests::Tensor{{1, 3, 3, 3}, + ov::element::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + reference_tests::Tensor{Shape{2}, ov::element::i64, std::vector{2, 3}}, false, 1e-9, op::MVNEpsMode::OUTSIDE_SQRT, - reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {-4, -3, -2, -1, 0, 1, 2, 3, 4, -4, -3, -2, -1, 0, - 1, 2, 3, 4, -4, -3, -2, -1, 0, 1, 2, 3, 4}}), + reference_tests::Tensor{{1, 3, 3, 3}, + ov::element::f32, + std::vector{-4, -3, -2, -1, 0, 1, 2, 3, 4, -4, -3, -2, -1, 0, + 1, 2, 3, 4, -4, -3, -2, -1, 0, 1, 2, 3, 4}}), // variance=true, OUTSIDE_SQRT - MVN6Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - reference_tests::Tensor {Shape {2}, ov::element::i64, std::vector {2, 3}}, - true, - 1e-9, - op::MVNEpsMode::OUTSIDE_SQRT, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), + MVN6Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + reference_tests::Tensor{Shape{2}, ov::element::i64, std::vector{2, 3}}, + true, + 1e-9, + op::MVNEpsMode::OUTSIDE_SQRT, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), // variance=true, INSIDE_SQRT - MVN6Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - reference_tests::Tensor {Shape {2}, ov::element::i64, std::vector {2, 3}}, - true, - 1e-9, - op::MVNEpsMode::INSIDE_SQRT, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), + MVN6Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + reference_tests::Tensor{Shape{2}, ov::element::i64, std::vector{2, 3}}, + true, + 1e-9, + op::MVNEpsMode::INSIDE_SQRT, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), // variance=true, another reductionAxes, OUTSIDE_SQRT - MVN6Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector({1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9})}, - reference_tests::Tensor {Shape {3}, ov::element::i64, std::vector({1, 2, 3})}, - true, - 1e-9, - op::MVNEpsMode::OUTSIDE_SQRT, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}})), + MVN6Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector({1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9})}, + reference_tests::Tensor{Shape{3}, ov::element::i64, std::vector({1, 2, 3})}, + true, + 1e-9, + op::MVNEpsMode::OUTSIDE_SQRT, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}})), ReferenceMVN6LayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/negative.cpp b/src/plugins/template/tests/functional/op_reference/negative.cpp index caf94a0fbc0cc6..89cda5cfe3c85a 100644 --- a/src/plugins/template/tests/functional/op_reference/negative.cpp +++ b/src/plugins/template/tests/functional/op_reference/negative.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/negative.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/negative.hpp" using namespace ov; using namespace reference_tests; @@ -14,9 +16,9 @@ namespace { struct NegativeParams { template NegativeParams(const PartialShape& shape, - const element::Type& iType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -50,8 +52,8 @@ class ReferenceNegativeLayerTest : public testing::TestWithParam private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto negative = std::make_shared(in); return std::make_shared(NodeVector{negative}, ParameterVector{in}); @@ -66,12 +68,10 @@ template std::vector generateParamsForNegativeFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - NegativeParams(ov::PartialShape{6}, - IN_ET, - std::vector{1, -2, 0, -4.75f, 8.75f, -8.75f}, - std::vector{-1, 2, 0, 4.75f, -8.75f, 8.75f}) - }; + std::vector params{NegativeParams(ov::PartialShape{6}, + IN_ET, + std::vector{1, -2, 0, -4.75f, 8.75f, -8.75f}, + std::vector{-1, 2, 0, 4.75f, -8.75f, 8.75f})}; return params; } @@ -79,12 +79,10 @@ template std::vector generateParamsForNegativeInt() { using T = typename element_type_traits::value_type; - std::vector params{ - NegativeParams(ov::PartialShape{10}, - IN_ET, - std::vector{1, 8, -8, 17, -2, 1, 8, -8, 17, -1}, - std::vector{-1, -8, 8, -17, 2, -1, -8, 8, -17, 1}) - }; + std::vector params{NegativeParams(ov::PartialShape{10}, + IN_ET, + std::vector{1, 8, -8, 17, -2, 1, 8, -8, 17, -1}, + std::vector{-1, -8, 8, -17, 2, -1, -8, 8, -17, 1})}; return params; } @@ -94,8 +92,7 @@ std::vector generateCombinedParamsForNegative() { generateParamsForNegativeFloat(), generateParamsForNegativeFloat(), generateParamsForNegativeInt(), - generateParamsForNegativeInt() - }; + generateParamsForNegativeInt()}; std::vector combinedParams; @@ -106,9 +103,8 @@ std::vector generateCombinedParamsForNegative() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Negative_With_Hardcoded_Refs, - ReferenceNegativeLayerTest, - ::testing::ValuesIn(generateCombinedParamsForNegative()), - ReferenceNegativeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Negative_With_Hardcoded_Refs, + ReferenceNegativeLayerTest, + ::testing::ValuesIn(generateCombinedParamsForNegative()), + ReferenceNegativeLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/non_max_suppression.cpp b/src/plugins/template/tests/functional/op_reference/non_max_suppression.cpp index 5e309f4e6e9743..333ea4cf0d2845 100644 --- a/src/plugins/template/tests/functional/op_reference/non_max_suppression.cpp +++ b/src/plugins/template/tests/functional/op_reference/non_max_suppression.cpp @@ -4,11 +4,11 @@ #include -#include "openvino/opsets/opset5.hpp" -#include "openvino/opsets/opset4.hpp" -#include "openvino/opsets/opset3.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset3.hpp" +#include "openvino/opsets/opset4.hpp" +#include "openvino/opsets/opset5.hpp" using namespace reference_tests; using namespace ov; @@ -42,7 +42,8 @@ struct Builder : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder, testcaseName); }; -class ReferenceNonMaxSuppressionTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceNonMaxSuppressionTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -76,14 +77,19 @@ class ReferenceNonMaxSuppressionTest : public testing::TestWithParam CreateFunction(const NonMaxSuppressionParams& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape, params.maxOutputBoxesPerClass.data.data()); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape, params.iouThreshold.data.data()); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape, params.scoreThreshold.data.data()); - const auto soft_nms_sigma = std::make_shared( - params.softNmsSigma.type, params.softNmsSigma.shape, params.softNmsSigma.data.data()); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape, + params.maxOutputBoxesPerClass.data.data()); + const auto iou_threshold = std::make_shared(params.iouThreshold.type, + params.iouThreshold.shape, + params.iouThreshold.data.data()); + const auto score_threshold = std::make_shared(params.scoreThreshold.type, + params.scoreThreshold.shape, + params.scoreThreshold.data.data()); + const auto soft_nms_sigma = std::make_shared(params.softNmsSigma.type, + params.softNmsSigma.shape, + params.softNmsSigma.data.data()); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -103,8 +109,12 @@ class ReferenceNonMaxSuppressionTestWithoutConstants : public ReferenceNonMaxSup void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.boxes.data, params.scores.data, params.maxOutputBoxesPerClass.data, - params.iouThreshold.data, params.scoreThreshold.data, params.softNmsSigma.data}; + inputData = {params.boxes.data, + params.scores.data, + params.maxOutputBoxesPerClass.data, + params.iouThreshold.data, + params.scoreThreshold.data, + params.softNmsSigma.data}; refOutData = {params.expectedSelectedIndices.data, params.expectedSelectedScores.data, params.expectedValidOutputs.data}; @@ -114,14 +124,15 @@ class ReferenceNonMaxSuppressionTestWithoutConstants : public ReferenceNonMaxSup static std::shared_ptr CreateFunction(const NonMaxSuppressionParams& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape); - const auto soft_nms_sigma = std::make_shared( - params.softNmsSigma.type, params.softNmsSigma.shape); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape); + const auto iou_threshold = + std::make_shared(params.iouThreshold.type, params.iouThreshold.shape); + const auto score_threshold = + std::make_shared(params.scoreThreshold.type, params.scoreThreshold.shape); + const auto soft_nms_sigma = + std::make_shared(params.softNmsSigma.type, params.softNmsSigma.shape); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -131,9 +142,9 @@ class ReferenceNonMaxSuppressionTestWithoutConstants : public ReferenceNonMaxSup params.boxEncoding, false, params.expectedSelectedIndices.type); - const auto f = std::make_shared(nms->outputs(), - ParameterVector{boxes, scores, max_output_boxes_per_class, - iou_threshold, score_threshold, soft_nms_sigma}); + const auto f = std::make_shared( + nms->outputs(), + ParameterVector{boxes, scores, max_output_boxes_per_class, iou_threshold, score_threshold, soft_nms_sigma}); return f; } }; @@ -152,268 +163,174 @@ std::vector generateParams() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, 0.5, 0.4, 1.0, 1.0, - 0.5, 10.5, 1.0, 1.0, 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CENTER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {3, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{3})) - .testcaseName( - "nonmaxsuppression_center_point_box_format"), - - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {3, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{3})) - .testcaseName( - "nonmaxsuppression_flipped_coordinates"), - - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0, 0.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{1})) - .testcaseName( - "nonmaxsuppression_identical_boxes"), - - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {2, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{2})) - .testcaseName( - "nonmaxsuppression_limit_output_size"), - - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0, 0.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{1})) - .testcaseName( - "nonmaxsuppression_single_box"), - - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {3, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{3})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU"), - - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{ - 0, 0, 3, 0, 0, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {2, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{2})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores"), - - Builder {} - .boxes( - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {2, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 1, 0, 3, 1, 0, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {4, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 1.0, 0.0, 0.95, 1.0, 0.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{4})) - .testcaseName( - "nonmaxsuppression_two_batches"), - - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {4, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 1.0, 0.95, 0.0, 1.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{4})) - .testcaseName( - "nonmaxsuppression_two_classes"), + std::vector params{ + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, + 0.5, 0.4, 1.0, 1.0, 0.5, 10.5, 1.0, 1.0, + 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CENTER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .expectedSelectedScores( + reference_tests::Tensor(ET_TH, {3, 3}, std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{3})) + .testcaseName("nonmaxsuppression_center_point_box_format"), + + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, + 0.0, 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, + 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .expectedSelectedScores( + reference_tests::Tensor(ET_TH, {3, 3}, std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{3})) + .testcaseName("nonmaxsuppression_flipped_coordinates"), + + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 10, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, + {1, 1, 10}, + std::vector{0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .expectedSelectedScores(reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0, 0.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{1})) + .testcaseName("nonmaxsuppression_identical_boxes"), + + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .expectedSelectedScores( + reference_tests::Tensor(ET_TH, {2, 3}, std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{2})) + .testcaseName("nonmaxsuppression_limit_output_size"), + + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .expectedSelectedScores(reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0, 0.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{1})) + .testcaseName("nonmaxsuppression_single_box"), + + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .expectedSelectedScores( + reference_tests::Tensor(ET_TH, {3, 3}, std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{3})) + .testcaseName("nonmaxsuppression_suppress_by_IOU"), + + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .expectedSelectedScores( + reference_tests::Tensor(ET_TH, {2, 3}, std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{2})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores"), + + Builder{} + .boxes(reference_tests::Tensor(ET, {2, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {2, 1, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 1, 0, 3, 1, 0, 0})) + .expectedSelectedScores(reference_tests::Tensor( + ET_TH, + {4, 3}, + std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 1.0, 0.0, 0.95, 1.0, 0.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{4})) + .testcaseName("nonmaxsuppression_two_batches"), + + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) + .expectedSelectedScores(reference_tests::Tensor( + ET_TH, + {4, 3}, + std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 1.0, 0.95, 0.0, 1.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{4})) + .testcaseName("nonmaxsuppression_two_classes"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -435,45 +352,52 @@ std::vector generateParamsWithoutConstants() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, - 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {1}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {1}, std::vector{0.4f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {1}, std::vector{0.2f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {1}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0f, 0.0f, 0.95f})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{1})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), + std::vector params{ + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, + 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, + 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, + 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {1}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {1}, std::vector{0.4f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {1}, std::vector{0.2f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {1}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) + .expectedSelectedScores(reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0f, 0.0f, 0.95f})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{1})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), }; return params; } std::vector generateCombinedParamsWithoutConstants() { - const std::vector> generatedParams { - generateParamsWithoutConstants(), - generateParamsWithoutConstants(), - generateParamsWithoutConstants(), - generateParamsWithoutConstants(), - generateParamsWithoutConstants(), - generateParamsWithoutConstants(), + const std::vector> generatedParams{ + generateParamsWithoutConstants(), + generateParamsWithoutConstants(), + generateParamsWithoutConstants(), + generateParamsWithoutConstants(), + generateParamsWithoutConstants(), + generateParamsWithoutConstants(), }; std::vector combinedParams; @@ -483,11 +407,14 @@ std::vector generateCombinedParamsWithoutConstants() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppressionTest, - testing::ValuesIn(generateCombinedParams()), ReferenceNonMaxSuppressionTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppressionTestWithoutConstants, - testing::ValuesIn(generateCombinedParamsWithoutConstants()), ReferenceNonMaxSuppressionTestWithoutConstants::getTestCaseName); - +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppressionTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceNonMaxSuppressionTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppressionTestWithoutConstants, + testing::ValuesIn(generateCombinedParamsWithoutConstants()), + ReferenceNonMaxSuppressionTestWithoutConstants::getTestCaseName); struct NonMaxSuppression4Params { reference_tests::Tensor boxes; @@ -511,7 +438,8 @@ struct Builder4 : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder4, testcaseName); }; -class ReferenceNonMaxSuppression4Test : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceNonMaxSuppression4Test : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -539,12 +467,16 @@ class ReferenceNonMaxSuppression4Test : public testing::TestWithParam CreateFunction(const NonMaxSuppression4Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape, params.maxOutputBoxesPerClass.data.data()); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape, params.iouThreshold.data.data()); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape, params.scoreThreshold.data.data()); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape, + params.maxOutputBoxesPerClass.data.data()); + const auto iou_threshold = std::make_shared(params.iouThreshold.type, + params.iouThreshold.shape, + params.iouThreshold.data.data()); + const auto score_threshold = std::make_shared(params.scoreThreshold.type, + params.scoreThreshold.shape, + params.scoreThreshold.data.data()); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -563,8 +495,11 @@ class ReferenceNonMaxSuppression4TestWithoutConstants : public ReferenceNonMaxSu void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.boxes.data, params.scores.data, params.maxOutputBoxesPerClass.data, - params.iouThreshold.data, params.scoreThreshold.data}; + inputData = {params.boxes.data, + params.scores.data, + params.maxOutputBoxesPerClass.data, + params.iouThreshold.data, + params.scoreThreshold.data}; refOutData = {params.expectedSelectedIndices.data}; } @@ -572,12 +507,13 @@ class ReferenceNonMaxSuppression4TestWithoutConstants : public ReferenceNonMaxSu static std::shared_ptr CreateFunction(const NonMaxSuppression4Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape); + const auto iou_threshold = + std::make_shared(params.iouThreshold.type, params.iouThreshold.shape); + const auto score_threshold = + std::make_shared(params.scoreThreshold.type, params.scoreThreshold.shape); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -586,9 +522,9 @@ class ReferenceNonMaxSuppression4TestWithoutConstants : public ReferenceNonMaxSu params.boxEncoding, false, params.expectedSelectedIndices.type); - const auto f = std::make_shared(nms->outputs(), - ParameterVector{boxes, scores, max_output_boxes_per_class, - iou_threshold, score_threshold}); + const auto f = std::make_shared( + nms->outputs(), + ParameterVector{boxes, scores, max_output_boxes_per_class, iou_threshold, score_threshold}); return f; } }; @@ -607,207 +543,136 @@ std::vector generateParams4() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, 0.5, 0.4, 1.0, 1.0, - 0.5, 10.5, 1.0, 1.0, 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CENTER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_center_point_box_format"), - - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_flipped_coordinates"), - - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_identical_boxes"), - - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_limit_output_size"), - - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_single_box"), - - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU"), - - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{ - 0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores"), - - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {2, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 1, 0, 3, 1, 0, 0})) - .testcaseName( - "nonmaxsuppression_two_batches"), - - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) - .testcaseName( - "nonmaxsuppression_two_classes"), + std::vector params{ + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, + 0.5, 0.4, 1.0, 1.0, 0.5, 10.5, 1.0, 1.0, + 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CENTER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_center_point_box_format"), + + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, + 0.0, 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, + 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_flipped_coordinates"), + + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 10, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, + {1, 1, 10}, + std::vector{0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_identical_boxes"), + + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_limit_output_size"), + + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_single_box"), + + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_suppress_by_IOU"), + + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores"), + + Builder4{} + .boxes(reference_tests::Tensor(ET, {2, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {2, 1, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 1, 0, 3, 1, 0, 0})) + .testcaseName("nonmaxsuppression_two_batches"), + + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) + .testcaseName("nonmaxsuppression_two_classes"), }; return params; } std::vector generateCombinedParams4() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams4(), generateParams4(), generateParams4(), @@ -829,39 +694,49 @@ std::vector generateParams4WithoutConstants() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, - 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), + std::vector params{ + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, + 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, + 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, + 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), }; return params; } std::vector generateCombinedParams4WithoutConstants() { - const std::vector> generatedParams { - generateParams4WithoutConstants(), - generateParams4WithoutConstants(), - generateParams4WithoutConstants(), - generateParams4WithoutConstants(), - generateParams4WithoutConstants(), - generateParams4WithoutConstants(), + const std::vector> generatedParams{ + generateParams4WithoutConstants(), + generateParams4WithoutConstants(), + generateParams4WithoutConstants(), + generateParams4WithoutConstants(), + generateParams4WithoutConstants(), + generateParams4WithoutConstants(), }; std::vector combinedParams; @@ -871,11 +746,14 @@ std::vector generateCombinedParams4WithoutConstants() return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression4Test, - testing::ValuesIn(generateCombinedParams4()), ReferenceNonMaxSuppression4Test::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression4TestWithoutConstants, - testing::ValuesIn(generateCombinedParams4WithoutConstants()), ReferenceNonMaxSuppression4TestWithoutConstants::getTestCaseName); - +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression4Test, + testing::ValuesIn(generateCombinedParams4()), + ReferenceNonMaxSuppression4Test::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression4TestWithoutConstants, + testing::ValuesIn(generateCombinedParams4WithoutConstants()), + ReferenceNonMaxSuppression4TestWithoutConstants::getTestCaseName); struct NonMaxSuppression3Params { reference_tests::Tensor boxes; @@ -899,7 +777,8 @@ struct Builder3 : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder3, testcaseName); }; -class ReferenceNonMaxSuppression3Test : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceNonMaxSuppression3Test : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -927,12 +806,16 @@ class ReferenceNonMaxSuppression3Test : public testing::TestWithParam CreateFunction(const NonMaxSuppression3Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape, params.maxOutputBoxesPerClass.data.data()); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape, params.iouThreshold.data.data()); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape, params.scoreThreshold.data.data()); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape, + params.maxOutputBoxesPerClass.data.data()); + const auto iou_threshold = std::make_shared(params.iouThreshold.type, + params.iouThreshold.shape, + params.iouThreshold.data.data()); + const auto score_threshold = std::make_shared(params.scoreThreshold.type, + params.scoreThreshold.shape, + params.scoreThreshold.data.data()); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -951,8 +834,11 @@ class ReferenceNonMaxSuppression3TestWithoutConstants : public ReferenceNonMaxSu void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.boxes.data, params.scores.data, params.maxOutputBoxesPerClass.data, - params.iouThreshold.data, params.scoreThreshold.data}; + inputData = {params.boxes.data, + params.scores.data, + params.maxOutputBoxesPerClass.data, + params.iouThreshold.data, + params.scoreThreshold.data}; refOutData = {params.expectedSelectedIndices.data}; } @@ -960,12 +846,13 @@ class ReferenceNonMaxSuppression3TestWithoutConstants : public ReferenceNonMaxSu static std::shared_ptr CreateFunction(const NonMaxSuppression3Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape); + const auto iou_threshold = + std::make_shared(params.iouThreshold.type, params.iouThreshold.shape); + const auto score_threshold = + std::make_shared(params.scoreThreshold.type, params.scoreThreshold.shape); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -974,9 +861,9 @@ class ReferenceNonMaxSuppression3TestWithoutConstants : public ReferenceNonMaxSu params.boxEncoding, false, params.expectedSelectedIndices.type); - const auto f = std::make_shared(nms->outputs(), - ParameterVector{boxes, scores, max_output_boxes_per_class, - iou_threshold, score_threshold}); + const auto f = std::make_shared( + nms->outputs(), + ParameterVector{boxes, scores, max_output_boxes_per_class, iou_threshold, score_threshold}); return f; } }; @@ -995,183 +882,117 @@ std::vector generateParams3() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, 0.5, 0.4, 1.0, 1.0, - 0.5, 10.5, 1.0, 1.0, 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CENTER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_center_point_box_format"), - - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_flipped_coordinates"), - - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_identical_boxes"), - - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_limit_output_size"), - - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_single_box"), - - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU"), - - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{ - 0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores"), - - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) - .testcaseName( - "nonmaxsuppression_two_classes"), + std::vector params{ + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, + 0.5, 0.4, 1.0, 1.0, 0.5, 10.5, 1.0, 1.0, + 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CENTER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_center_point_box_format"), + + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, + 0.0, 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, + 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_flipped_coordinates"), + + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 10, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, + {1, 1, 10}, + std::vector{0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_identical_boxes"), + + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_limit_output_size"), + + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_single_box"), + + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_suppress_by_IOU"), + + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores"), + + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) + .testcaseName("nonmaxsuppression_two_classes"), }; return params; } std::vector generateCombinedParams3() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams3(), generateParams3(), generateParams3(), @@ -1193,39 +1014,49 @@ std::vector generateParams3WithoutConstants() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, - 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), + std::vector params{ + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, + 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, + 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, + 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), }; return params; } std::vector generateCombinedParams3WithoutConstants() { - const std::vector> generatedParams { - generateParams3WithoutConstants(), - generateParams3WithoutConstants(), - generateParams3WithoutConstants(), - generateParams3WithoutConstants(), - generateParams3WithoutConstants(), - generateParams3WithoutConstants(), + const std::vector> generatedParams{ + generateParams3WithoutConstants(), + generateParams3WithoutConstants(), + generateParams3WithoutConstants(), + generateParams3WithoutConstants(), + generateParams3WithoutConstants(), + generateParams3WithoutConstants(), }; std::vector combinedParams; @@ -1235,11 +1066,14 @@ std::vector generateCombinedParams3WithoutConstants() return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression3Test, - testing::ValuesIn(generateCombinedParams3()), ReferenceNonMaxSuppression3Test::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression3TestWithoutConstants, - testing::ValuesIn(generateCombinedParams3WithoutConstants()), ReferenceNonMaxSuppression3TestWithoutConstants::getTestCaseName); - +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression3Test, + testing::ValuesIn(generateCombinedParams3()), + ReferenceNonMaxSuppression3Test::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression3TestWithoutConstants, + testing::ValuesIn(generateCombinedParams3WithoutConstants()), + ReferenceNonMaxSuppression3TestWithoutConstants::getTestCaseName); struct NonMaxSuppression1Params { reference_tests::Tensor boxes; @@ -1263,7 +1097,8 @@ struct Builder1 : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder1, testcaseName); }; -class ReferenceNonMaxSuppression1Test : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceNonMaxSuppression1Test : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -1291,12 +1126,16 @@ class ReferenceNonMaxSuppression1Test : public testing::TestWithParam CreateFunction(const NonMaxSuppression1Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape, params.maxOutputBoxesPerClass.data.data()); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape, params.iouThreshold.data.data()); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape, params.scoreThreshold.data.data()); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape, + params.maxOutputBoxesPerClass.data.data()); + const auto iou_threshold = std::make_shared(params.iouThreshold.type, + params.iouThreshold.shape, + params.iouThreshold.data.data()); + const auto score_threshold = std::make_shared(params.scoreThreshold.type, + params.scoreThreshold.shape, + params.scoreThreshold.data.data()); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -1314,8 +1153,11 @@ class ReferenceNonMaxSuppression1TestWithoutConstants : public ReferenceNonMaxSu void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.boxes.data, params.scores.data, params.maxOutputBoxesPerClass.data, - params.iouThreshold.data, params.scoreThreshold.data}; + inputData = {params.boxes.data, + params.scores.data, + params.maxOutputBoxesPerClass.data, + params.iouThreshold.data, + params.scoreThreshold.data}; refOutData = {params.expectedSelectedIndices.data}; } @@ -1323,12 +1165,13 @@ class ReferenceNonMaxSuppression1TestWithoutConstants : public ReferenceNonMaxSu static std::shared_ptr CreateFunction(const NonMaxSuppression1Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape); + const auto iou_threshold = + std::make_shared(params.iouThreshold.type, params.iouThreshold.shape); + const auto score_threshold = + std::make_shared(params.scoreThreshold.type, params.scoreThreshold.shape); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -1336,9 +1179,9 @@ class ReferenceNonMaxSuppression1TestWithoutConstants : public ReferenceNonMaxSu score_threshold, params.boxEncoding, false); - const auto f = std::make_shared(nms->outputs(), - ParameterVector{boxes, scores, max_output_boxes_per_class, - iou_threshold, score_threshold}); + const auto f = std::make_shared( + nms->outputs(), + ParameterVector{boxes, scores, max_output_boxes_per_class, iou_threshold, score_threshold}); return f; } }; @@ -1357,183 +1200,117 @@ std::vector generateParams1() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, 0.5, 0.4, 1.0, 1.0, - 0.5, 10.5, 1.0, 1.0, 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CENTER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_center_point_box_format"), - - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_flipped_coordinates"), - - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_identical_boxes"), - - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_limit_output_size"), - - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_single_box"), - - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU"), - - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{ - 0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores"), - - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) - .testcaseName( - "nonmaxsuppression_two_classes"), + std::vector params{ + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, + 0.5, 0.4, 1.0, 1.0, 0.5, 10.5, 1.0, 1.0, + 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CENTER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_center_point_box_format"), + + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, + 0.0, 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, + 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_flipped_coordinates"), + + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 10, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, + {1, 1, 10}, + std::vector{0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_identical_boxes"), + + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_limit_output_size"), + + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_single_box"), + + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_suppress_by_IOU"), + + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores"), + + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) + .testcaseName("nonmaxsuppression_two_classes"), }; return params; } std::vector generateCombinedParams1() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams1(), generateParams1(), generateParams1(), @@ -1552,36 +1329,37 @@ std::vector generateParams1WithoutConstants() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, - 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), + std::vector params{ + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, + 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, + 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, + 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), }; return params; } std::vector generateCombinedParams1WithoutConstants() { - const std::vector> generatedParams { - generateParams1WithoutConstants(), - generateParams1WithoutConstants(), - generateParams1WithoutConstants(), + const std::vector> generatedParams{ + generateParams1WithoutConstants(), + generateParams1WithoutConstants(), + generateParams1WithoutConstants(), }; std::vector combinedParams; @@ -1591,8 +1369,12 @@ std::vector generateCombinedParams1WithoutConstants() return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression1Test, - testing::ValuesIn(generateCombinedParams1()), ReferenceNonMaxSuppression1Test::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression1TestWithoutConstants, - testing::ValuesIn(generateCombinedParams1WithoutConstants()), ReferenceNonMaxSuppression1TestWithoutConstants::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression1Test, + testing::ValuesIn(generateCombinedParams1()), + ReferenceNonMaxSuppression1Test::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression1TestWithoutConstants, + testing::ValuesIn(generateCombinedParams1WithoutConstants()), + ReferenceNonMaxSuppression1TestWithoutConstants::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/nonzero.cpp b/src/plugins/template/tests/functional/op_reference/nonzero.cpp index f8baa42bbe2f82..88d0faec87eb80 100644 --- a/src/plugins/template/tests/functional/op_reference/nonzero.cpp +++ b/src/plugins/template/tests/functional/op_reference/nonzero.cpp @@ -5,8 +5,9 @@ #include #include -#include "openvino/op/non_zero.hpp" + #include "base_reference_test.hpp" +#include "openvino/op/non_zero.hpp" using namespace reference_tests; using namespace ov; @@ -14,10 +15,13 @@ using namespace ov; namespace { struct NonZeroParams { template - NonZeroParams(const PartialShape& dynamicShape, const PartialShape& inputShape, - const element::Type& inType, const element::Type& refType, - const std::vector& inputData, const std::vector& refData, - const std::string& test_name = "") + NonZeroParams(const PartialShape& dynamicShape, + const PartialShape& inputShape, + const element::Type& inType, + const element::Type& refType, + const std::vector& inputData, + const std::vector& refData, + const std::string& test_name = "") : dynamicShape(dynamicShape), inputShape(inputShape), inType(inType), @@ -60,11 +64,12 @@ class ReferenceNonZeroLayerTest : public testing::TestWithParam, } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& output_type) { const auto in = std::make_shared(input_type, input_shape); const auto NonZero = std::make_shared(in, output_type); - return std::make_shared(NodeVector {NonZero}, ParameterVector {in}); + return std::make_shared(NodeVector{NonZero}, ParameterVector{in}); } }; @@ -72,191 +77,191 @@ TEST_P(ReferenceNonZeroLayerTest, CompareWithHardcodedRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_NonZero_With_Hardcoded_Refs, ReferenceNonZeroLayerTest, - ::testing::Values( - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i32, - std::vector{1, 1, 1, 1, 1, 1}, - std::vector{0, 0, 1, 1, 2, 2, 0, 1, 0, 1, 0, 1}, - "all_1s"), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i32, - std::vector{0, 0, 0, 0, 0, 0}, - std::vector{}, - "all_0s"), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i64, - std::vector{1, 1, 1, 1, 1, 1}, - std::vector{0, 0, 1, 1, 2, 2, 0, 1, 0, 1, 0, 1}, - "all_1s_int64"), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i64, - std::vector{0, 0, 0, 0, 0, 0}, - std::vector{}, - "all_0s_int64"), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::boolean, - element::i32, - std::vector{false, false, false, false, true, true}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i8, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i16, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i64, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u8, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u16, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u32, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u64, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::bf16, - element::i32, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f16, - element::i32, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f32, - element::i32, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f64, - element::i32, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::boolean, - element::i64, - std::vector{false, false, false, false, true, true}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i8, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i16, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i64, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u8, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u16, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u32, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u64, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::bf16, - element::i64, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f16, - element::i64, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f32, - element::i64, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f64, - element::i64, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1})), +INSTANTIATE_TEST_SUITE_P(smoke_NonZero_With_Hardcoded_Refs, + ReferenceNonZeroLayerTest, + ::testing::Values(NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i32, + std::vector{1, 1, 1, 1, 1, 1}, + std::vector{0, 0, 1, 1, 2, 2, 0, 1, 0, 1, 0, 1}, + "all_1s"), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i32, + std::vector{0, 0, 0, 0, 0, 0}, + std::vector{}, + "all_0s"), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i64, + std::vector{1, 1, 1, 1, 1, 1}, + std::vector{0, 0, 1, 1, 2, 2, 0, 1, 0, 1, 0, 1}, + "all_1s_int64"), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i64, + std::vector{0, 0, 0, 0, 0, 0}, + std::vector{}, + "all_0s_int64"), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::boolean, + element::i32, + std::vector{false, false, false, false, true, true}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i8, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i16, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i64, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u8, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u16, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u32, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u64, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::bf16, + element::i32, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f16, + element::i32, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f32, + element::i32, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f64, + element::i32, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::boolean, + element::i64, + std::vector{false, false, false, false, true, true}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i8, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i16, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i64, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u8, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u16, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u32, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u64, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::bf16, + element::i64, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f16, + element::i64, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f32, + element::i64, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f64, + element::i64, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1})), ReferenceNonZeroLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/normalize_l2.cpp b/src/plugins/template/tests/functional/op_reference/normalize_l2.cpp index da26e601685c17..76789cb4d00f2d 100644 --- a/src/plugins/template/tests/functional/op_reference/normalize_l2.cpp +++ b/src/plugins/template/tests/functional/op_reference/normalize_l2.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/normalize_l2.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/normalize_l2.hpp" using namespace reference_tests; using namespace ov; @@ -78,11 +79,8 @@ class ReferenceNormalizeL2LayerTest : public testing::TestWithParam CreateFunction(const Shape& input_shape, - const element::Type_t& input_type, - const std::vector& axes, - const op::EpsMode& eps_mode, - const float& eps) { + const element::Type_t& input_type, + const std::vector& axes, + const op::EpsMode& eps_mode, + const float& eps) { const auto in = std::make_shared(input_type, input_shape); const auto axes_data = std::make_shared(element::Type_t::i32, Shape{axes.size()}, axes); auto normalize = std::make_shared(in, axes_data, eps, eps_mode); @@ -306,273 +304,305 @@ std::vector generateParamsForNormalizeL2() { 0.1, "normalize_l2_4D_axes_empty_max"), NormalizeL2Params( - Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.0399648, 0.0766909, 0.110424, 0.141413, 0.169897, 0.196106, 0.22025, - 0.242524, 0.263106, 0.282155, 0.299815, 0.316217, 0.331475, 0.345695, 0.358969, - 0.371381, 0.383005, 0.39391, 0.404155, 0.413794, 0.422877, 0.431447, 0.439545, - 0.999913, 0.999121, 0.996981, 0.993816, 0.989888, 0.985403, 0.980528, 0.975393, - 0.970098, 0.964723, 0.959327, 0.953958, 0.94865, 0.94343, 0.938315, 0.933319, - 0.928452, 0.923719, 0.919123, 0.914666, 0.910347, 0.906165, 0.902117, 0.8982}, - std::vector{0}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_0_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.03996804, 0.07669649, 0.11043153, 0.14142135, 0.1699069, 0.19611612, 0.22026087, - 0.2425356, 0.26311737, 0.2821663, 0.2998266, 0.31622776, 0.331486, 0.34570533, 0.35897905, - 0.37139067, 0.38301498, 0.3939193, 0.40416384, 0.41380292, 0.42288542, 0.43145543, 0.43955287, - 0.99999994, 0.9992009, 0.9970544, 0.9938838, 0.98994946, 0.98546, 0.9805806, 0.97544104, - 0.9701424, 0.96476364, 0.9593654, 0.95399374, 0.9486833, 0.9434601, 0.93834305, 0.93334556, - 0.9284767, 0.923742, 0.919145, 0.91468656, 0.9103665, 0.90618306, 0.90213406, 0.8982167}, - std::vector{0}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_0_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.07667395, 0.14138602, 0.19607423, 0.24249104, 0.28212142, 0.31618387, 0.3456632, - 0.37135068, 0.3938816, 0.41376755, 0.43142232, 0.9996529, 0.9967614, 0.9897021, 0.9803712, - 0.96996415, 0.9592128, 0.94855154, 0.93822867, 0.9283767, 0.9190571, 0.9102886, 0.9020648, - 0.5546854, 0.55984336, 0.56467056, 0.56919736, 0.5734503, 0.57745326, 0.58122724, 0.5847912, - 0.58816177, 0.59135413, 0.594382, 0.59725744, 0.8320281, 0.8285682, 0.82528776, 0.82217395, - 0.8192147, 0.8163994, 0.8137182, 0.81116194, 0.8087224, 0.806392, 0.8041638, 0.8020314}, - std::vector{1}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_1_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.07669649, 0.14142135, 0.19611612, 0.2425356, 0.2821663, 0.31622776, 0.34570533, - 0.37139067, 0.3939193, 0.41380292, 0.43145543, 0.99999994, 0.9970544, 0.98994946, 0.9805806, - 0.9701424, 0.9593654, 0.9486833, 0.93834305, 0.9284767, 0.919145, 0.9103665, 0.90213406, - 0.5547002, 0.55985737, 0.56468385, 0.5692099, 0.57346237, 0.57746464, 0.58123815, 0.5848015, - 0.58817166, 0.59136367, 0.59439105, 0.5972662, 0.83205026, 0.82858896, 0.8253072, 0.8221921, - 0.8192319, 0.81641555, 0.8137334, 0.8111763, 0.808736, 0.80640495, 0.8041761, 0.8020432}, - std::vector{1}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_1_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0966285, 0.168971, 0.224168, 0.446934, 0.483143, 0.506912, 0.523058, - 0.893869, 0.869657, 0.844853, 0.821949, 0.424238, 0.43355, 0.441814, 0.449194, - 0.56565, 0.56695, 0.568047, 0.56898, 0.707063, 0.70035, 0.694279, 0.688765, - 0.491529, 0.494579, 0.497422, 0.500077, 0.57345, 0.573712, 0.573949, 0.574163, - 0.655372, 0.652845, 0.650475, 0.648248, 0.517886, 0.519373, 0.520787, 0.522135, - 0.575429, 0.575521, 0.575607, 0.575687, 0.632972, 0.63167, 0.630427, 0.629239}, - std::vector{2}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_2_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.09667365, 0.16903085, 0.22423053, 0.4472136, 0.48336822, 0.50709254, 0.52320457, - 0.8944272, 0.8700628, 0.8451542, 0.8221786, 0.42426404, 0.4335743, 0.4418361, 0.4492145, - 0.5656854, 0.5669818, 0.56807494, 0.569005, 0.7071067, 0.70038927, 0.6943139, 0.68879557, - 0.49153918, 0.4945891, 0.49743116, 0.5000857, 0.57346237, 0.5737234, 0.57395905, 0.5741725, - 0.65538555, 0.6528576, 0.6504869, 0.6482592, 0.51789176, 0.5193782, 0.52079225, 0.5221394, - 0.5754353, 0.5755272, 0.57561255, 0.5756921, 0.63297886, 0.6316762, 0.6304327, 0.62924486}, - std::vector{2}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_2_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.266312, 0.532624, 0.798935, 0.356207, 0.445259, 0.534311, 0.623362, - 0.41811, 0.470373, 0.522637, 0.574901, 0.442898, 0.479806, 0.516714, 0.553622, - 0.456194, 0.484706, 0.513219, 0.541731, 0.464476, 0.4877, 0.510924, 0.534148, - 0.470128, 0.489716, 0.509305, 0.528893, 0.474229, 0.491166, 0.508102, 0.525039, - 0.477341, 0.492258, 0.507175, 0.522092, 0.479783, 0.49311, 0.506437, 0.519764, - 0.481749, 0.493793, 0.505837, 0.517881, 0.483368, 0.494353, 0.505339, 0.516325}, - std::vector{3}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_3_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.26726124, 0.5345225, 0.8017837, 0.3563483, 0.44543537, 0.5345225, 0.62360954, - 0.41816667, 0.4704375, 0.52270836, 0.5749792, 0.44292808, 0.47983873, 0.5167494, 0.5536601, - 0.45621273, 0.484726, 0.5132393, 0.54175264, 0.4644887, 0.4877131, 0.5109376, 0.534162, - 0.47013652, 0.48972553, 0.50931454, 0.5289036, 0.47423577, 0.49117276, 0.50810975, 0.5250467, - 0.47734618, 0.49226326, 0.50718033, 0.5220974, 0.4797868, 0.49311423, 0.50644165, 0.5197691, - 0.48175293, 0.49379677, 0.5058406, 0.51788443, 0.48337057, 0.49435627, 0.50534195, 0.5163277}, - std::vector{3}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_3_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.04445103, 0.08890206, 0.1333531, 0.17780413, 0.22225516, 0.2667062, 0.31115723, - 0.35560825, 0.40005928, 0.4445103, 0.48896134, 0.19420375, 0.2103874, 0.22657104, 0.24275468, - 0.2589383, 0.275122, 0.29130563, 0.30748928, 0.32367292, 0.33985656, 0.3560402, 0.37222385, - 0.2332616, 0.24298084, 0.25270006, 0.2624193, 0.27213854, 0.2818578, 0.291577, 0.30129623, - 0.3110155, 0.3207347, 0.33045393, 0.34017318, 0.2495545, 0.25648656, 0.26341864, 0.27035072, - 0.27728277, 0.28421485, 0.29114693, 0.29807898, 0.30501106, 0.3119431, 0.3188752, 0.32580727}, - std::vector{2, 3}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_23_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.04445542, 0.08891085, 0.13336627, 0.1778217, 0.22227712, 0.26673254, 0.31118798, - 0.3556434, 0.4000988, 0.44455424, 0.48900968, 0.19420628, 0.21039014, 0.226574, 0.24275786, - 0.2589417, 0.27512556, 0.29130942, 0.30749327, 0.32367712, 0.339861, 0.35604486, 0.3722287, - 0.23326269, 0.24298197, 0.25270125, 0.26242054, 0.2721398, 0.28185907, 0.29157835, 0.30129763, - 0.31101692, 0.3207362, 0.33045548, 0.34017476, 0.24955511, 0.2564872, 0.26341927, 0.27035138, - 0.27728346, 0.28421554, 0.29114762, 0.2980797, 0.3050118, 0.3119439, 0.31887597, 0.32580805}, - std::vector{2, 3}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_23_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0152075, 0.030415, 0.0456224, 0.0608299, 0.0760374, 0.0912449, 0.106452, 0.12166, 0.136867, - 0.152075, 0.167282, 0.18249, 0.197697, 0.212905, 0.228112, 0.24332, 0.258527, 0.273735, 0.288942, - 0.30415, 0.319357, 0.334565, 0.349772, 0.135448, 0.141092, 0.146736, 0.15238, 0.158023, 0.163667, - 0.169311, 0.174954, 0.180598, 0.186242, 0.191885, 0.197529, 0.203173, 0.208816, 0.21446, 0.220104, - 0.225747, 0.231391, 0.237035, 0.242678, 0.248322, 0.253966, 0.25961, 0.265253}, - std::vector{1, 2, 3}, - op::EpsMode::ADD, - 1e-9, - "normalize_l2_4D_axes_123_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, 0.10645234, - 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, 0.21290468, 0.22811216, - 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, 0.319357, 0.3345645, 0.34977198, - 0.13544846, 0.14109215, 0.14673583, 0.15237951, 0.15802321, 0.16366689, 0.16931057, 0.17495427, - 0.18059795, 0.18624163, 0.19188532, 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, - 0.22574744, 0.23139112, 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, - std::vector{1, 2, 3}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_123_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0152066, 0.0304132, 0.0456198, 0.0608264, 0.076033, 0.0912396, 0.106446, 0.121653, 0.136859, - 0.152066, 0.167273, 0.182479, 0.197686, 0.212892, 0.228099, 0.243306, 0.258512, 0.273719, 0.288925, - 0.304132, 0.319339, 0.334545, 0.349752, 0.135447, 0.141091, 0.146735, 0.152378, 0.158022, 0.163666, - 0.169309, 0.174953, 0.180597, 0.18624, 0.191884, 0.197527, 0.203171, 0.208815, 0.214458, 0.220102, - 0.225746, 0.231389, 0.237033, 0.242677, 0.24832, 0.253964, 0.259607, 0.265251}, - std::vector{1, 2, 3}, - op::EpsMode::ADD, - 0.5, - "normalize_l2_4D_axes_123_big_eps_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, 0.10645234, - 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, 0.21290468, 0.22811216, - 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, 0.319357, 0.3345645, 0.34977198, - 0.13544846, 0.14109215, 0.14673583, 0.15237951, 0.15802321, 0.16366689, 0.16931057, 0.17495427, - 0.18059795, 0.18624163, 0.19188532, 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, - 0.22574744, 0.23139112, 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, - std::vector{1, 2, 3}, - op::EpsMode::MAX, - 100, - "normalize_l2_4D_axes_123_big_eps_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0152075, 0.030415, 0.0456224, 0.0608299, 0.0760374, 0.0912449, 0.106452, 0.12166, 0.136867, - 0.152075, 0.167282, 0.18249, 0.197697, 0.212905, 0.228112, 0.24332, 0.258527, 0.273735, 0.288942, - 0.30415, 0.319357, 0.334565, 0.349772, 0.135448, 0.141092, 0.146736, 0.15238, 0.158023, 0.163667, - 0.169311, 0.174954, 0.180598, 0.186242, 0.191885, 0.197529, 0.203173, 0.208816, 0.21446, 0.220104, - 0.225747, 0.231391, 0.237035, 0.242678, 0.248322, 0.253966, 0.25961, 0.265253}, - std::vector{3, 1, 2}, - op::EpsMode::ADD, - 1e-9, - "normalize_l2_4D_axes_unsorted_312_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, 0.10645234, - 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, 0.21290468, 0.22811216, - 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, 0.319357, 0.3345645, 0.34977198, - 0.13544846, 0.14109215, 0.14673583, 0.15237951, 0.15802321, 0.16366689, 0.16931057, 0.17495427, - 0.18059795, 0.18624163, 0.19188532, 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, - 0.22574744, 0.23139112, 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, - std::vector{3, 1, 2}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_unsorted_312_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.00529108, 0.01058216, 0.01587324, 0.02116432, 0.02645539, 0.03174648, 0.03703756, - 0.04232863, 0.04761971, 0.05291079, 0.05820187, 0.06349295, 0.06878403, 0.07407511, 0.07936618, - 0.08465727, 0.08994835, 0.09523942, 0.10053051, 0.10582158, 0.11111266, 0.11640374, 0.12169482, - 0.12698591, 0.13227698, 0.13756806, 0.14285913, 0.14815022, 0.1534413, 0.15873237, 0.16402346, - 0.16931453, 0.17460561, 0.1798967, 0.18518777, 0.19047885, 0.19576994, 0.20106101, 0.20635208, - 0.21164316, 0.21693425, 0.22222532, 0.2275164, 0.23280749, 0.23809856, 0.24338964, 0.24868073}, - std::vector{0, 1, 2, 3}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_0123_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.00529108, 0.01058216, 0.01587324, 0.02116432, 0.02645539, 0.03174648, 0.03703756, - 0.04232863, 0.04761971, 0.05291079, 0.05820187, 0.06349295, 0.06878403, 0.07407511, 0.07936618, - 0.08465727, 0.08994835, 0.09523942, 0.10053051, 0.10582158, 0.11111266, 0.11640374, 0.12169482, - 0.12698591, 0.13227698, 0.13756806, 0.14285913, 0.14815022, 0.1534413, 0.15873237, 0.16402346, - 0.16931453, 0.17460561, 0.1798967, 0.18518777, 0.19047885, 0.19576994, 0.20106101, 0.20635208, - 0.21164316, 0.21693425, 0.22222532, 0.2275164, 0.23280749, 0.23809856, 0.24338964, 0.24868073}, - std::vector{0, 1, 2, 3}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_0123_max"), + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.0399648, 0.0766909, 0.110424, 0.141413, 0.169897, 0.196106, 0.22025, + 0.242524, 0.263106, 0.282155, 0.299815, 0.316217, 0.331475, 0.345695, 0.358969, + 0.371381, 0.383005, 0.39391, 0.404155, 0.413794, 0.422877, 0.431447, 0.439545, + 0.999913, 0.999121, 0.996981, 0.993816, 0.989888, 0.985403, 0.980528, 0.975393, + 0.970098, 0.964723, 0.959327, 0.953958, 0.94865, 0.94343, 0.938315, 0.933319, + 0.928452, 0.923719, 0.919123, 0.914666, 0.910347, 0.906165, 0.902117, 0.8982}, + std::vector{0}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_0_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.03996804, 0.07669649, 0.11043153, 0.14142135, 0.1699069, 0.19611612, + 0.22026087, 0.2425356, 0.26311737, 0.2821663, 0.2998266, 0.31622776, 0.331486, + 0.34570533, 0.35897905, 0.37139067, 0.38301498, 0.3939193, 0.40416384, 0.41380292, + 0.42288542, 0.43145543, 0.43955287, 0.99999994, 0.9992009, 0.9970544, 0.9938838, + 0.98994946, 0.98546, 0.9805806, 0.97544104, 0.9701424, 0.96476364, 0.9593654, + 0.95399374, 0.9486833, 0.9434601, 0.93834305, 0.93334556, 0.9284767, 0.923742, + 0.919145, 0.91468656, 0.9103665, 0.90618306, 0.90213406, 0.8982167}, + std::vector{0}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_0_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.07667395, 0.14138602, 0.19607423, 0.24249104, 0.28212142, 0.31618387, + 0.3456632, 0.37135068, 0.3938816, 0.41376755, 0.43142232, 0.9996529, 0.9967614, + 0.9897021, 0.9803712, 0.96996415, 0.9592128, 0.94855154, 0.93822867, 0.9283767, + 0.9190571, 0.9102886, 0.9020648, 0.5546854, 0.55984336, 0.56467056, 0.56919736, + 0.5734503, 0.57745326, 0.58122724, 0.5847912, 0.58816177, 0.59135413, 0.594382, + 0.59725744, 0.8320281, 0.8285682, 0.82528776, 0.82217395, 0.8192147, 0.8163994, + 0.8137182, 0.81116194, 0.8087224, 0.806392, 0.8041638, 0.8020314}, + std::vector{1}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_1_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.07669649, 0.14142135, 0.19611612, 0.2425356, 0.2821663, 0.31622776, + 0.34570533, 0.37139067, 0.3939193, 0.41380292, 0.43145543, 0.99999994, 0.9970544, + 0.98994946, 0.9805806, 0.9701424, 0.9593654, 0.9486833, 0.93834305, 0.9284767, + 0.919145, 0.9103665, 0.90213406, 0.5547002, 0.55985737, 0.56468385, 0.5692099, + 0.57346237, 0.57746464, 0.58123815, 0.5848015, 0.58817166, 0.59136367, 0.59439105, + 0.5972662, 0.83205026, 0.82858896, 0.8253072, 0.8221921, 0.8192319, 0.81641555, + 0.8137334, 0.8111763, 0.808736, 0.80640495, 0.8041761, 0.8020432}, + std::vector{1}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_1_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0966285, 0.168971, 0.224168, 0.446934, 0.483143, 0.506912, 0.523058, + 0.893869, 0.869657, 0.844853, 0.821949, 0.424238, 0.43355, 0.441814, 0.449194, + 0.56565, 0.56695, 0.568047, 0.56898, 0.707063, 0.70035, 0.694279, 0.688765, + 0.491529, 0.494579, 0.497422, 0.500077, 0.57345, 0.573712, 0.573949, 0.574163, + 0.655372, 0.652845, 0.650475, 0.648248, 0.517886, 0.519373, 0.520787, 0.522135, + 0.575429, 0.575521, 0.575607, 0.575687, 0.632972, 0.63167, 0.630427, 0.629239}, + std::vector{2}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_2_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.09667365, 0.16903085, 0.22423053, 0.4472136, 0.48336822, 0.50709254, + 0.52320457, 0.8944272, 0.8700628, 0.8451542, 0.8221786, 0.42426404, 0.4335743, + 0.4418361, 0.4492145, 0.5656854, 0.5669818, 0.56807494, 0.569005, 0.7071067, + 0.70038927, 0.6943139, 0.68879557, 0.49153918, 0.4945891, 0.49743116, 0.5000857, + 0.57346237, 0.5737234, 0.57395905, 0.5741725, 0.65538555, 0.6528576, 0.6504869, + 0.6482592, 0.51789176, 0.5193782, 0.52079225, 0.5221394, 0.5754353, 0.5755272, + 0.57561255, 0.5756921, 0.63297886, 0.6316762, 0.6304327, 0.62924486}, + std::vector{2}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_2_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.266312, 0.532624, 0.798935, 0.356207, 0.445259, 0.534311, 0.623362, + 0.41811, 0.470373, 0.522637, 0.574901, 0.442898, 0.479806, 0.516714, 0.553622, + 0.456194, 0.484706, 0.513219, 0.541731, 0.464476, 0.4877, 0.510924, 0.534148, + 0.470128, 0.489716, 0.509305, 0.528893, 0.474229, 0.491166, 0.508102, 0.525039, + 0.477341, 0.492258, 0.507175, 0.522092, 0.479783, 0.49311, 0.506437, 0.519764, + 0.481749, 0.493793, 0.505837, 0.517881, 0.483368, 0.494353, 0.505339, 0.516325}, + std::vector{3}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_3_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.26726124, 0.5345225, 0.8017837, 0.3563483, 0.44543537, 0.5345225, + 0.62360954, 0.41816667, 0.4704375, 0.52270836, 0.5749792, 0.44292808, 0.47983873, + 0.5167494, 0.5536601, 0.45621273, 0.484726, 0.5132393, 0.54175264, 0.4644887, + 0.4877131, 0.5109376, 0.534162, 0.47013652, 0.48972553, 0.50931454, 0.5289036, + 0.47423577, 0.49117276, 0.50810975, 0.5250467, 0.47734618, 0.49226326, 0.50718033, + 0.5220974, 0.4797868, 0.49311423, 0.50644165, 0.5197691, 0.48175293, 0.49379677, + 0.5058406, 0.51788443, 0.48337057, 0.49435627, 0.50534195, 0.5163277}, + std::vector{3}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_3_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.04445103, 0.08890206, 0.1333531, 0.17780413, 0.22225516, 0.2667062, + 0.31115723, 0.35560825, 0.40005928, 0.4445103, 0.48896134, 0.19420375, 0.2103874, + 0.22657104, 0.24275468, 0.2589383, 0.275122, 0.29130563, 0.30748928, 0.32367292, + 0.33985656, 0.3560402, 0.37222385, 0.2332616, 0.24298084, 0.25270006, 0.2624193, + 0.27213854, 0.2818578, 0.291577, 0.30129623, 0.3110155, 0.3207347, 0.33045393, + 0.34017318, 0.2495545, 0.25648656, 0.26341864, 0.27035072, 0.27728277, 0.28421485, + 0.29114693, 0.29807898, 0.30501106, 0.3119431, 0.3188752, 0.32580727}, + std::vector{2, 3}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_23_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.04445542, 0.08891085, 0.13336627, 0.1778217, 0.22227712, 0.26673254, + 0.31118798, 0.3556434, 0.4000988, 0.44455424, 0.48900968, 0.19420628, 0.21039014, + 0.226574, 0.24275786, 0.2589417, 0.27512556, 0.29130942, 0.30749327, 0.32367712, + 0.339861, 0.35604486, 0.3722287, 0.23326269, 0.24298197, 0.25270125, 0.26242054, + 0.2721398, 0.28185907, 0.29157835, 0.30129763, 0.31101692, 0.3207362, 0.33045548, + 0.34017476, 0.24955511, 0.2564872, 0.26341927, 0.27035138, 0.27728346, 0.28421554, + 0.29114762, 0.2980797, 0.3050118, 0.3119439, 0.31887597, 0.32580805}, + std::vector{2, 3}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_23_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0152075, 0.030415, 0.0456224, 0.0608299, 0.0760374, 0.0912449, 0.106452, + 0.12166, 0.136867, 0.152075, 0.167282, 0.18249, 0.197697, 0.212905, 0.228112, + 0.24332, 0.258527, 0.273735, 0.288942, 0.30415, 0.319357, 0.334565, 0.349772, + 0.135448, 0.141092, 0.146736, 0.15238, 0.158023, 0.163667, 0.169311, 0.174954, + 0.180598, 0.186242, 0.191885, 0.197529, 0.203173, 0.208816, 0.21446, 0.220104, + 0.225747, 0.231391, 0.237035, 0.242678, 0.248322, 0.253966, 0.25961, 0.265253}, + std::vector{1, 2, 3}, + op::EpsMode::ADD, + 1e-9, + "normalize_l2_4D_axes_123_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, + 0.10645234, 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, + 0.21290468, 0.22811216, 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, + 0.319357, 0.3345645, 0.34977198, 0.13544846, 0.14109215, 0.14673583, 0.15237951, + 0.15802321, 0.16366689, 0.16931057, 0.17495427, 0.18059795, 0.18624163, 0.19188532, + 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, 0.22574744, 0.23139112, + 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, + std::vector{1, 2, 3}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_123_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0152066, 0.0304132, 0.0456198, 0.0608264, 0.076033, 0.0912396, 0.106446, + 0.121653, 0.136859, 0.152066, 0.167273, 0.182479, 0.197686, 0.212892, 0.228099, + 0.243306, 0.258512, 0.273719, 0.288925, 0.304132, 0.319339, 0.334545, 0.349752, + 0.135447, 0.141091, 0.146735, 0.152378, 0.158022, 0.163666, 0.169309, 0.174953, + 0.180597, 0.18624, 0.191884, 0.197527, 0.203171, 0.208815, 0.214458, 0.220102, + 0.225746, 0.231389, 0.237033, 0.242677, 0.24832, 0.253964, 0.259607, 0.265251}, + std::vector{1, 2, 3}, + op::EpsMode::ADD, + 0.5, + "normalize_l2_4D_axes_123_big_eps_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, + 0.10645234, 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, + 0.21290468, 0.22811216, 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, + 0.319357, 0.3345645, 0.34977198, 0.13544846, 0.14109215, 0.14673583, 0.15237951, + 0.15802321, 0.16366689, 0.16931057, 0.17495427, 0.18059795, 0.18624163, 0.19188532, + 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, 0.22574744, 0.23139112, + 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, + std::vector{1, 2, 3}, + op::EpsMode::MAX, + 100, + "normalize_l2_4D_axes_123_big_eps_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0152075, 0.030415, 0.0456224, 0.0608299, 0.0760374, 0.0912449, 0.106452, + 0.12166, 0.136867, 0.152075, 0.167282, 0.18249, 0.197697, 0.212905, 0.228112, + 0.24332, 0.258527, 0.273735, 0.288942, 0.30415, 0.319357, 0.334565, 0.349772, + 0.135448, 0.141092, 0.146736, 0.15238, 0.158023, 0.163667, 0.169311, 0.174954, + 0.180598, 0.186242, 0.191885, 0.197529, 0.203173, 0.208816, 0.21446, 0.220104, + 0.225747, 0.231391, 0.237035, 0.242678, 0.248322, 0.253966, 0.25961, 0.265253}, + std::vector{3, 1, 2}, + op::EpsMode::ADD, + 1e-9, + "normalize_l2_4D_axes_unsorted_312_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, + 0.10645234, 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, + 0.21290468, 0.22811216, 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, + 0.319357, 0.3345645, 0.34977198, 0.13544846, 0.14109215, 0.14673583, 0.15237951, + 0.15802321, 0.16366689, 0.16931057, 0.17495427, 0.18059795, 0.18624163, 0.19188532, + 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, 0.22574744, 0.23139112, + 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, + std::vector{3, 1, 2}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_unsorted_312_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.00529108, 0.01058216, 0.01587324, 0.02116432, 0.02645539, 0.03174648, + 0.03703756, 0.04232863, 0.04761971, 0.05291079, 0.05820187, 0.06349295, 0.06878403, + 0.07407511, 0.07936618, 0.08465727, 0.08994835, 0.09523942, 0.10053051, 0.10582158, + 0.11111266, 0.11640374, 0.12169482, 0.12698591, 0.13227698, 0.13756806, 0.14285913, + 0.14815022, 0.1534413, 0.15873237, 0.16402346, 0.16931453, 0.17460561, 0.1798967, + 0.18518777, 0.19047885, 0.19576994, 0.20106101, 0.20635208, 0.21164316, 0.21693425, + 0.22222532, 0.2275164, 0.23280749, 0.23809856, 0.24338964, 0.24868073}, + std::vector{0, 1, 2, 3}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_0123_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.00529108, 0.01058216, 0.01587324, 0.02116432, 0.02645539, 0.03174648, + 0.03703756, 0.04232863, 0.04761971, 0.05291079, 0.05820187, 0.06349295, 0.06878403, + 0.07407511, 0.07936618, 0.08465727, 0.08994835, 0.09523942, 0.10053051, 0.10582158, + 0.11111266, 0.11640374, 0.12169482, 0.12698591, 0.13227698, 0.13756806, 0.14285913, + 0.14815022, 0.1534413, 0.15873237, 0.16402346, 0.16931453, 0.17460561, 0.1798967, + 0.18518777, 0.19047885, 0.19576994, 0.20106101, 0.20635208, 0.21164316, 0.21693425, + 0.22222532, 0.2275164, 0.23280749, 0.23809856, 0.24338964, 0.24868073}, + std::vector{0, 1, 2, 3}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_0123_max"), NormalizeL2Params(Shape{1, 2, 2, 3, 4}, Shape{1, 2, 2, 3, 4}, ET, @@ -593,186 +623,207 @@ std::vector generateParamsForNormalizeL2() { op::EpsMode::MAX, 0.1, "normalize_l2_5D_axes_empty_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0399648, 0.0766909, 0.110424, 0.141413, 0.169897, 0.196106, 0.22025, - 0.242524, 0.263106, 0.282155, 0.299815, 0.316217, 0.331475, 0.345695, 0.358969, - 0.371381, 0.383005, 0.39391, 0.404155, 0.413794, 0.422877, 0.431447, 0.439545, - 0.999913, 0.999121, 0.996981, 0.993816, 0.989888, 0.985403, 0.980528, 0.975393, - 0.970098, 0.964723, 0.959327, 0.953958, 0.94865, 0.94343, 0.938315, 0.933319, - 0.928452, 0.923719, 0.919123, 0.914666, 0.910347, 0.906165, 0.902117, 0.8982}, - std::vector{1}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_1_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.03996804, 0.07669649, 0.11043153, 0.14142135, 0.1699069, 0.19611612, 0.22026087, - 0.2425356, 0.26311737, 0.2821663, 0.2998266, 0.31622776, 0.331486, 0.34570533, 0.35897905, - 0.37139067, 0.38301498, 0.3939193, 0.40416384, 0.41380292, 0.42288542, 0.43145543, 0.43955287, - 0.99999994, 0.9992009, 0.9970544, 0.9938838, 0.98994946, 0.98546, 0.9805806, 0.97544104, - 0.9701424, 0.96476364, 0.9593654, 0.95399374, 0.9486833, 0.9434601, 0.93834305, 0.93334556, - 0.9284767, 0.923742, 0.919145, 0.91468656, 0.9103665, 0.90618306, 0.90213406, 0.8982167}, - std::vector{1}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_1_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.07667395, 0.14138602, 0.19607423, 0.24249104, 0.28212142, 0.31618387, 0.3456632, - 0.37135068, 0.3938816, 0.41376755, 0.43142232, 0.9996529, 0.9967614, 0.9897021, 0.9803712, - 0.96996415, 0.9592128, 0.94855154, 0.93822867, 0.9283767, 0.9190571, 0.9102886, 0.9020648, - 0.5546854, 0.55984336, 0.56467056, 0.56919736, 0.5734503, 0.57745326, 0.58122724, 0.5847912, - 0.58816177, 0.59135413, 0.594382, 0.59725744, 0.8320281, 0.8285682, 0.82528776, 0.82217395, - 0.8192147, 0.8163994, 0.8137182, 0.81116194, 0.8087224, 0.806392, 0.8041638, 0.8020314}, - std::vector{2}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_2_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.07669649, 0.14142135, 0.19611612, 0.2425356, 0.2821663, 0.31622776, 0.34570533, - 0.37139067, 0.3939193, 0.41380292, 0.43145543, 0.99999994, 0.9970544, 0.98994946, 0.9805806, - 0.9701424, 0.9593654, 0.9486833, 0.93834305, 0.9284767, 0.919145, 0.9103665, 0.90213406, - 0.5547002, 0.55985737, 0.56468385, 0.5692099, 0.57346237, 0.57746464, 0.58123815, 0.5848015, - 0.58817166, 0.59136367, 0.59439105, 0.5972662, 0.83205026, 0.82858896, 0.8253072, 0.8221921, - 0.8192319, 0.81641555, 0.8137334, 0.8111763, 0.808736, 0.80640495, 0.8041761, 0.8020432}, - std::vector{2}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_2_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0966285, 0.168971, 0.224168, 0.446934, 0.483143, 0.506912, 0.523058, - 0.893869, 0.869657, 0.844853, 0.821949, 0.424238, 0.43355, 0.441814, 0.449194, - 0.56565, 0.56695, 0.568047, 0.56898, 0.707063, 0.70035, 0.694279, 0.688765, - 0.491529, 0.494579, 0.497422, 0.500077, 0.57345, 0.573712, 0.573949, 0.574163, - 0.655372, 0.652845, 0.650475, 0.648248, 0.517886, 0.519373, 0.520787, 0.522135, - 0.575429, 0.575521, 0.575607, 0.575687, 0.632972, 0.63167, 0.630427, 0.629239}, - std::vector{3}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_3_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.09667365, 0.16903085, 0.22423053, 0.4472136, 0.48336822, 0.50709254, 0.52320457, - 0.8944272, 0.8700628, 0.8451542, 0.8221786, 0.42426404, 0.4335743, 0.4418361, 0.4492145, - 0.5656854, 0.5669818, 0.56807494, 0.569005, 0.7071067, 0.70038927, 0.6943139, 0.68879557, - 0.49153918, 0.4945891, 0.49743116, 0.5000857, 0.57346237, 0.5737234, 0.57395905, 0.5741725, - 0.65538555, 0.6528576, 0.6504869, 0.6482592, 0.51789176, 0.5193782, 0.52079225, 0.5221394, - 0.5754353, 0.5755272, 0.57561255, 0.5756921, 0.63297886, 0.6316762, 0.6304327, 0.62924486}, - std::vector{3}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_3_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.266312, 0.532624, 0.798935, 0.356207, 0.445259, 0.534311, 0.623362, - 0.41811, 0.470373, 0.522637, 0.574901, 0.442898, 0.479806, 0.516714, 0.553622, - 0.456194, 0.484706, 0.513219, 0.541731, 0.464476, 0.4877, 0.510924, 0.534148, - 0.470128, 0.489716, 0.509305, 0.528893, 0.474229, 0.491166, 0.508102, 0.525039, - 0.477341, 0.492258, 0.507175, 0.522092, 0.479783, 0.49311, 0.506437, 0.519764, - 0.481749, 0.493793, 0.505837, 0.517881, 0.483368, 0.494353, 0.505339, 0.516325}, - std::vector{4}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_4_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.26726124, 0.5345225, 0.8017837, 0.3563483, 0.44543537, 0.5345225, 0.62360954, - 0.41816667, 0.4704375, 0.52270836, 0.5749792, 0.44292808, 0.47983873, 0.5167494, 0.5536601, - 0.45621273, 0.484726, 0.5132393, 0.54175264, 0.4644887, 0.4877131, 0.5109376, 0.534162, - 0.47013652, 0.48972553, 0.50931454, 0.5289036, 0.47423577, 0.49117276, 0.50810975, 0.5250467, - 0.47734618, 0.49226326, 0.50718033, 0.5220974, 0.4797868, 0.49311423, 0.50644165, 0.5197691, - 0.48175293, 0.49379677, 0.5058406, 0.51788443, 0.48337057, 0.49435627, 0.50534195, 0.5163277}, - std::vector{4}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_4_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.04445103, 0.08890206, 0.1333531, 0.17780413, 0.22225516, 0.2667062, 0.31115723, - 0.35560825, 0.40005928, 0.4445103, 0.48896134, 0.19420375, 0.2103874, 0.22657104, 0.24275468, - 0.2589383, 0.275122, 0.29130563, 0.30748928, 0.32367292, 0.33985656, 0.3560402, 0.37222385, - 0.2332616, 0.24298084, 0.25270006, 0.2624193, 0.27213854, 0.2818578, 0.291577, 0.30129623, - 0.3110155, 0.3207347, 0.33045393, 0.34017318, 0.2495545, 0.25648656, 0.26341864, 0.27035072, - 0.27728277, 0.28421485, 0.29114693, 0.29807898, 0.30501106, 0.3119431, 0.3188752, 0.32580727}, - std::vector{3, 4}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_34_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.04445542, 0.08891085, 0.13336627, 0.1778217, 0.22227712, 0.26673254, 0.31118798, - 0.3556434, 0.4000988, 0.44455424, 0.48900968, 0.19420628, 0.21039014, 0.226574, 0.24275786, - 0.2589417, 0.27512556, 0.29130942, 0.30749327, 0.32367712, 0.339861, 0.35604486, 0.3722287, - 0.23326269, 0.24298197, 0.25270125, 0.26242054, 0.2721398, 0.28185907, 0.29157835, 0.30129763, - 0.31101692, 0.3207362, 0.33045548, 0.34017476, 0.24955511, 0.2564872, 0.26341927, 0.27035138, - 0.27728346, 0.28421554, 0.29114762, 0.2980797, 0.3050118, 0.3119439, 0.31887597, 0.32580805}, - std::vector{3, 4}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_34_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.0152073, 0.0304146, 0.0456219, 0.0608292, 0.07603651, 0.0912438, 0.10645111, - 0.12165841, 0.1368657, 0.15207301, 0.16728032, 0.1824876, 0.19769491, 0.21290222, 0.22810951, - 0.24331681, 0.25852412, 0.2737314, 0.28893873, 0.30414602, 0.3193533, 0.33456063, 0.34976792, - 0.13544825, 0.14109191, 0.1467356, 0.15237927, 0.15802296, 0.16366662, 0.1693103, 0.17495398, - 0.18059766, 0.18624133, 0.19188501, 0.19752869, 0.20317237, 0.20881604, 0.21445972, 0.2201034, - 0.22574706, 0.23139074, 0.23703443, 0.2426781, 0.24832177, 0.25396547, 0.25960913, 0.2652528}, - std::vector{2, 3, 4}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_234_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, 0.10645234, - 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, 0.21290468, 0.22811216, - 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, 0.319357, 0.3345645, 0.34977198, - 0.13544846, 0.14109215, 0.14673583, 0.15237951, 0.15802321, 0.16366689, 0.16931057, 0.17495427, - 0.18059795, 0.18624163, 0.19188532, 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, - 0.22574744, 0.23139112, 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, - std::vector{2, 3, 4}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_234_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0399648, 0.0766909, 0.110424, 0.141413, 0.169897, 0.196106, 0.22025, + 0.242524, 0.263106, 0.282155, 0.299815, 0.316217, 0.331475, 0.345695, 0.358969, + 0.371381, 0.383005, 0.39391, 0.404155, 0.413794, 0.422877, 0.431447, 0.439545, + 0.999913, 0.999121, 0.996981, 0.993816, 0.989888, 0.985403, 0.980528, 0.975393, + 0.970098, 0.964723, 0.959327, 0.953958, 0.94865, 0.94343, 0.938315, 0.933319, + 0.928452, 0.923719, 0.919123, 0.914666, 0.910347, 0.906165, 0.902117, 0.8982}, + std::vector{1}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_1_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.03996804, 0.07669649, 0.11043153, 0.14142135, 0.1699069, 0.19611612, + 0.22026087, 0.2425356, 0.26311737, 0.2821663, 0.2998266, 0.31622776, 0.331486, + 0.34570533, 0.35897905, 0.37139067, 0.38301498, 0.3939193, 0.40416384, 0.41380292, + 0.42288542, 0.43145543, 0.43955287, 0.99999994, 0.9992009, 0.9970544, 0.9938838, + 0.98994946, 0.98546, 0.9805806, 0.97544104, 0.9701424, 0.96476364, 0.9593654, + 0.95399374, 0.9486833, 0.9434601, 0.93834305, 0.93334556, 0.9284767, 0.923742, + 0.919145, 0.91468656, 0.9103665, 0.90618306, 0.90213406, 0.8982167}, + std::vector{1}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_1_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.07667395, 0.14138602, 0.19607423, 0.24249104, 0.28212142, 0.31618387, + 0.3456632, 0.37135068, 0.3938816, 0.41376755, 0.43142232, 0.9996529, 0.9967614, + 0.9897021, 0.9803712, 0.96996415, 0.9592128, 0.94855154, 0.93822867, 0.9283767, + 0.9190571, 0.9102886, 0.9020648, 0.5546854, 0.55984336, 0.56467056, 0.56919736, + 0.5734503, 0.57745326, 0.58122724, 0.5847912, 0.58816177, 0.59135413, 0.594382, + 0.59725744, 0.8320281, 0.8285682, 0.82528776, 0.82217395, 0.8192147, 0.8163994, + 0.8137182, 0.81116194, 0.8087224, 0.806392, 0.8041638, 0.8020314}, + std::vector{2}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_2_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.07669649, 0.14142135, 0.19611612, 0.2425356, 0.2821663, 0.31622776, + 0.34570533, 0.37139067, 0.3939193, 0.41380292, 0.43145543, 0.99999994, 0.9970544, + 0.98994946, 0.9805806, 0.9701424, 0.9593654, 0.9486833, 0.93834305, 0.9284767, + 0.919145, 0.9103665, 0.90213406, 0.5547002, 0.55985737, 0.56468385, 0.5692099, + 0.57346237, 0.57746464, 0.58123815, 0.5848015, 0.58817166, 0.59136367, 0.59439105, + 0.5972662, 0.83205026, 0.82858896, 0.8253072, 0.8221921, 0.8192319, 0.81641555, + 0.8137334, 0.8111763, 0.808736, 0.80640495, 0.8041761, 0.8020432}, + std::vector{2}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_2_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0966285, 0.168971, 0.224168, 0.446934, 0.483143, 0.506912, 0.523058, + 0.893869, 0.869657, 0.844853, 0.821949, 0.424238, 0.43355, 0.441814, 0.449194, + 0.56565, 0.56695, 0.568047, 0.56898, 0.707063, 0.70035, 0.694279, 0.688765, + 0.491529, 0.494579, 0.497422, 0.500077, 0.57345, 0.573712, 0.573949, 0.574163, + 0.655372, 0.652845, 0.650475, 0.648248, 0.517886, 0.519373, 0.520787, 0.522135, + 0.575429, 0.575521, 0.575607, 0.575687, 0.632972, 0.63167, 0.630427, 0.629239}, + std::vector{3}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_3_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.09667365, 0.16903085, 0.22423053, 0.4472136, 0.48336822, 0.50709254, + 0.52320457, 0.8944272, 0.8700628, 0.8451542, 0.8221786, 0.42426404, 0.4335743, + 0.4418361, 0.4492145, 0.5656854, 0.5669818, 0.56807494, 0.569005, 0.7071067, + 0.70038927, 0.6943139, 0.68879557, 0.49153918, 0.4945891, 0.49743116, 0.5000857, + 0.57346237, 0.5737234, 0.57395905, 0.5741725, 0.65538555, 0.6528576, 0.6504869, + 0.6482592, 0.51789176, 0.5193782, 0.52079225, 0.5221394, 0.5754353, 0.5755272, + 0.57561255, 0.5756921, 0.63297886, 0.6316762, 0.6304327, 0.62924486}, + std::vector{3}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_3_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.266312, 0.532624, 0.798935, 0.356207, 0.445259, 0.534311, 0.623362, + 0.41811, 0.470373, 0.522637, 0.574901, 0.442898, 0.479806, 0.516714, 0.553622, + 0.456194, 0.484706, 0.513219, 0.541731, 0.464476, 0.4877, 0.510924, 0.534148, + 0.470128, 0.489716, 0.509305, 0.528893, 0.474229, 0.491166, 0.508102, 0.525039, + 0.477341, 0.492258, 0.507175, 0.522092, 0.479783, 0.49311, 0.506437, 0.519764, + 0.481749, 0.493793, 0.505837, 0.517881, 0.483368, 0.494353, 0.505339, 0.516325}, + std::vector{4}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_4_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.26726124, 0.5345225, 0.8017837, 0.3563483, 0.44543537, 0.5345225, + 0.62360954, 0.41816667, 0.4704375, 0.52270836, 0.5749792, 0.44292808, 0.47983873, + 0.5167494, 0.5536601, 0.45621273, 0.484726, 0.5132393, 0.54175264, 0.4644887, + 0.4877131, 0.5109376, 0.534162, 0.47013652, 0.48972553, 0.50931454, 0.5289036, + 0.47423577, 0.49117276, 0.50810975, 0.5250467, 0.47734618, 0.49226326, 0.50718033, + 0.5220974, 0.4797868, 0.49311423, 0.50644165, 0.5197691, 0.48175293, 0.49379677, + 0.5058406, 0.51788443, 0.48337057, 0.49435627, 0.50534195, 0.5163277}, + std::vector{4}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_4_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.04445103, 0.08890206, 0.1333531, 0.17780413, 0.22225516, 0.2667062, + 0.31115723, 0.35560825, 0.40005928, 0.4445103, 0.48896134, 0.19420375, 0.2103874, + 0.22657104, 0.24275468, 0.2589383, 0.275122, 0.29130563, 0.30748928, 0.32367292, + 0.33985656, 0.3560402, 0.37222385, 0.2332616, 0.24298084, 0.25270006, 0.2624193, + 0.27213854, 0.2818578, 0.291577, 0.30129623, 0.3110155, 0.3207347, 0.33045393, + 0.34017318, 0.2495545, 0.25648656, 0.26341864, 0.27035072, 0.27728277, 0.28421485, + 0.29114693, 0.29807898, 0.30501106, 0.3119431, 0.3188752, 0.32580727}, + std::vector{3, 4}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_34_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.04445542, 0.08891085, 0.13336627, 0.1778217, 0.22227712, 0.26673254, + 0.31118798, 0.3556434, 0.4000988, 0.44455424, 0.48900968, 0.19420628, 0.21039014, + 0.226574, 0.24275786, 0.2589417, 0.27512556, 0.29130942, 0.30749327, 0.32367712, + 0.339861, 0.35604486, 0.3722287, 0.23326269, 0.24298197, 0.25270125, 0.26242054, + 0.2721398, 0.28185907, 0.29157835, 0.30129763, 0.31101692, 0.3207362, 0.33045548, + 0.34017476, 0.24955511, 0.2564872, 0.26341927, 0.27035138, 0.27728346, 0.28421554, + 0.29114762, 0.2980797, 0.3050118, 0.3119439, 0.31887597, 0.32580805}, + std::vector{3, 4}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_34_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.0152073, 0.0304146, 0.0456219, 0.0608292, 0.07603651, 0.0912438, + 0.10645111, 0.12165841, 0.1368657, 0.15207301, 0.16728032, 0.1824876, 0.19769491, + 0.21290222, 0.22810951, 0.24331681, 0.25852412, 0.2737314, 0.28893873, 0.30414602, + 0.3193533, 0.33456063, 0.34976792, 0.13544825, 0.14109191, 0.1467356, 0.15237927, + 0.15802296, 0.16366662, 0.1693103, 0.17495398, 0.18059766, 0.18624133, 0.19188501, + 0.19752869, 0.20317237, 0.20881604, 0.21445972, 0.2201034, 0.22574706, 0.23139074, + 0.23703443, 0.2426781, 0.24832177, 0.25396547, 0.25960913, 0.2652528}, + std::vector{2, 3, 4}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_234_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, + 0.10645234, 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, + 0.21290468, 0.22811216, 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, + 0.319357, 0.3345645, 0.34977198, 0.13544846, 0.14109215, 0.14673583, 0.15237951, + 0.15802321, 0.16366689, 0.16931057, 0.17495427, 0.18059795, 0.18624163, 0.19188532, + 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, 0.22574744, 0.23139112, + 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, + std::vector{2, 3, 4}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_234_max"), }; return params; @@ -780,8 +831,7 @@ std::vector generateParamsForNormalizeL2() { std::vector generateCombinedParamsForNormalizeL2() { const std::vector> allTypeParams{ - generateParamsForNormalizeL2() - }; + generateParamsForNormalizeL2()}; std::vector combinedParams; @@ -792,10 +842,9 @@ std::vector generateCombinedParamsForNormalizeL2() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_NormalizeL2_With_Hardcoded_Refs, - ReferenceNormalizeL2LayerTest, - ::testing::ValuesIn(generateCombinedParamsForNormalizeL2()), - ReferenceNormalizeL2LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NormalizeL2_With_Hardcoded_Refs, + ReferenceNormalizeL2LayerTest, + ::testing::ValuesIn(generateCombinedParamsForNormalizeL2()), + ReferenceNormalizeL2LayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/not_equal.cpp b/src/plugins/template/tests/functional/op_reference/not_equal.cpp index c02c5ea537f779..cd871b25d1350e 100644 --- a/src/plugins/template/tests/functional/op_reference/not_equal.cpp +++ b/src/plugins/template/tests/functional/op_reference/not_equal.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/not_equal.hpp" + #include -#include "openvino/op/not_equal.hpp" #include "comparison.hpp" using namespace ov; @@ -16,43 +17,43 @@ namespace { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} + .compType(ComparisonTypes::NOT_EQUAL) + .input1({{2, 2}, type, std::vector{1, 0, 10, 255}}) + .input2({{2, 2}, type, std::vector{1, 0, 10, 255}}) + .expected({{2, 2}, element::boolean, std::vector{0, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{2, 2}, type, std::vector {1, 0, 10, 255}}) - .input2({{2, 2}, type, std::vector {1, 0, 10, 255}}) - .expected({{2, 2}, element::boolean, std::vector {0, 0, 0, 0}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 15, 45, 10, 5, 10}}) + .input2({{2, 3}, type, std::vector{1, 15, 5, 10, 50, 10}}) + .expected({{2, 3}, element::boolean, std::vector{1, 0, 1, 0, 1, 0}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{2, 3}, type, std::vector {0, 15, 45, 10, 5, 10}}) - .input2({{2, 3}, type, std::vector {1, 15, 5, 10, 50, 10}}) - .expected({{2, 3}, element::boolean, std::vector {1, 0, 1, 0, 1, 0}}), - Builder {} + .input1({{1}, type, std::vector{20}}) + .input2({{1}, type, std::vector{10}}) + .expected({{1}, element::boolean, std::vector{1}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{1}, type, std::vector {20}}) - .input2({{1}, type, std::vector {10}}) - .expected({{1}, element::boolean, std::vector {1}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 12, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{0, 0, 0, 0, 1, 0, 1, 0}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 12, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {0, 0, 0, 0, 1, 0, 1, 0}}), - Builder {} - .compType(ComparisonTypes::NOT_EQUAL) - .input1({{3, 1, 2}, type, std::vector {2, 7, 4, 7, 3, 7}}) - .input2({{1, 2, 1}, type, std::vector {7, 7}}) - .expected({{3, 2, 2}, element::boolean, std::vector {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}}), - Builder {} + .input1({{3, 1, 2}, type, std::vector{2, 7, 4, 7, 3, 7}}) + .input2({{1, 2, 1}, type, std::vector{7, 7}}) + .expected({{3, 2, 2}, element::boolean, std::vector{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{2, 1, 2, 1}, type, std::vector {1, 2, 1, 4}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {0, 1, 0, 1}})}; + .input1({{2, 1, 2, 1}, type, std::vector{1, 2, 1, 4}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{0, 1, 0, 1}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i32), @@ -66,39 +67,40 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); template std::vector generateNumericParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { - Builder {} + std::vector compParams{ + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{4}, type, std::vector {-2.5f, 25.5f, 2.25f, NAN}}) - .input2({{4}, type, std::vector {10.0f, 5.0f, 2.25f, 10.0f}}) - .expected({{4}, element::boolean, std::vector {1, 1, 0, 1}}), - Builder {} + .input1({{4}, type, std::vector{-2.5f, 25.5f, 2.25f, NAN}}) + .input2({{4}, type, std::vector{10.0f, 5.0f, 2.25f, 10.0f}}) + .expected({{4}, element::boolean, std::vector{1, 1, 0, 1}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{2, 3}, type, std::vector {0.0f, NAN, NAN, 1.0f, 21.0f, -INFINITY}}) - .input2({{2, 3}, type, std::vector {1.0f, NAN, 23.0f, 1.0f, 19.0f, 21.0f}}) - .expected({{2, 3}, element::boolean, std::vector {1, 1, 1, 0, 1, 1}}), - Builder {} + .input1({{2, 3}, type, std::vector{0.0f, NAN, NAN, 1.0f, 21.0f, -INFINITY}}) + .input2({{2, 3}, type, std::vector{1.0f, NAN, 23.0f, 1.0f, 19.0f, 21.0f}}) + .expected({{2, 3}, element::boolean, std::vector{1, 1, 1, 0, 1, 1}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{1}, type, std::vector {INFINITY}}) - .input2({{1}, type, std::vector {INFINITY}}) - .expected({{1}, element::boolean, std::vector {0}}), - Builder {} + .input1({{1}, type, std::vector{INFINITY}}) + .input2({{1}, type, std::vector{INFINITY}}) + .expected({{1}, element::boolean, std::vector{0}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{5}, type, std::vector {-2.5f, 25.5f, 2.25f, INFINITY, 6.0f}}) - .input2({{5}, type, std::vector {10.0f, 5.0f, 2.25f, 10.0f, -INFINITY}}) - .expected({{5}, element::boolean, std::vector {1, 1, 0, 1, 1}})}; + .input1({{5}, type, std::vector{-2.5f, 25.5f, 2.25f, INFINITY, 6.0f}}) + .input2({{5}, type, std::vector{10.0f, 5.0f, 2.25f, 10.0f, -INFINITY}}) + .expected({{5}, element::boolean, std::vector{1, 1, 0, 1, 1}})}; return compParams; } std::vector generateNumericCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateNumericParams(element::f16), generateNumericParams(element::f32)}; std::vector combinedParams; @@ -109,8 +111,10 @@ std::vector generateNumericCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Numeric_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateNumericCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_Numeric_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateNumericCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/one_hot.cpp b/src/plugins/template/tests/functional/op_reference/one_hot.cpp index b0f53a1e783052..0c6dc8c6937273 100644 --- a/src/plugins/template/tests/functional/op_reference/one_hot.cpp +++ b/src/plugins/template/tests/functional/op_reference/one_hot.cpp @@ -2,24 +2,32 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/one_hot.hpp" + #include -#include "openvino/op/one_hot.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct OneHotParams { - OneHotParams( - const reference_tests::Tensor& dataTensor, const int32_t axis, - const reference_tests::Tensor& depthTensor, const reference_tests::Tensor& onValueTensor, const reference_tests::Tensor& offValueTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), axis(axis), - depthTensor(depthTensor), onValueTensor(onValueTensor), offValueTensor(offValueTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + OneHotParams(const reference_tests::Tensor& dataTensor, + const int32_t axis, + const reference_tests::Tensor& depthTensor, + const reference_tests::Tensor& onValueTensor, + const reference_tests::Tensor& offValueTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + axis(axis), + depthTensor(depthTensor), + onValueTensor(onValueTensor), + offValueTensor(offValueTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; int32_t axis; @@ -65,12 +73,15 @@ class ReferenceOneHotTest : public testing::TestWithParam, public static std::shared_ptr CreateFunction(const OneHotParams& params) { std::shared_ptr function; const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); - const auto depth = std::make_shared(params.depthTensor.type, params.depthTensor.shape, + const auto depth = std::make_shared(params.depthTensor.type, + params.depthTensor.shape, params.depthTensor.data.data()); - const auto onValue = std::make_shared(params.onValueTensor.type, params.onValueTensor.shape, - params.onValueTensor.data.data()); - const auto offValue = std::make_shared(params.offValueTensor.type, params.offValueTensor.shape, - params.offValueTensor.data.data()); + const auto onValue = std::make_shared(params.onValueTensor.type, + params.onValueTensor.shape, + params.onValueTensor.data.data()); + const auto offValue = std::make_shared(params.offValueTensor.type, + params.offValueTensor.shape, + params.offValueTensor.data.data()); const auto oneHot = std::make_shared(data, depth, onValue, offValue, params.axis); function = std::make_shared(oneHot, ParameterVector{data}); return function; @@ -81,9 +92,9 @@ TEST_P(ReferenceOneHotTest, CompareWithRefs) { Exec(); } -template +template std::vector generateExpectedValues(const Shape& input_shape, std::vector input, uint32_t category_count) { -// std::vector input{0, 11, 101, 1001, 10001, static_cast(category_count - 1)}; + // std::vector input{0, 11, 101, 1001, 10001, static_cast(category_count - 1)}; std::vector output(shape_size(input_shape), 0); for (size_t i = 0; i < input.size(); ++i) { output[i * category_count + input[i]] = 1; @@ -95,80 +106,70 @@ template std::vector generateParams() { using T1 = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; - std::vector params { - OneHotParams( - reference_tests::Tensor(ET1, {}, std::vector{2}), - 0, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {3}, std::vector{0, 0, 1}), - "one_hot_scalar_2_in_3"), - OneHotParams( - reference_tests::Tensor(ET1, {}, std::vector{1}), - 0, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {3}, std::vector{0, 1, 0}), - "one_hot_scalar_1_in_3"), - OneHotParams( - reference_tests::Tensor(ET1, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {3}, std::vector{1, 0, 0}), - "one_hot_scalar_0_in_3"), - OneHotParams( - reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 2, 2, 1, 0}), - 0, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {3, 8}, std::vector{0, 0, 1, 1, 0, 0, 0, 1, - 0, 1, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 1, 1, 0, 0}), - "one_hot_vector_0"), - OneHotParams( - reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 2, 2, 1, 0}), - 1, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {8, 3}, std::vector{0, 0, 1, 0, 1, 0, 1, 0, - 0, 1, 0, 0, 0, 0, 1, 0, - 0, 1, 0, 1, 0, 1, 0, 0}), - "one_hot_vector_1"), - OneHotParams( - reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 3, 2, 1, 0}), - 1, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {8, 3}, std::vector{0, 0, 1, 0, 1, 0, 1, 0, - 0, 1, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 1, 0, 1, 0, 0}), - "one_hot_vector_1_barely_oob"), - OneHotParams( - reference_tests::Tensor(ET1, {3, 3}, std::vector{0, 1, 1, 2, 1, 0, 0, 2, 1}), - 0, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {3, 3, 3}, std::vector{1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0}), - "one_hot_matrix_0"), - OneHotParams( - reference_tests::Tensor(ET1, {6}, std::vector{0, 11, 101, 1001, 10001, 19999}), - 1, - reference_tests::Tensor(ET1, {}, std::vector{20000}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {6, 20000}, generateExpectedValues({6, 20000}, - std::vector{0, 11, 101, 1001, 10001, 19999}, - 20000)), - "one_hot_vector_many_categories"), + std::vector params{ + OneHotParams(reference_tests::Tensor(ET1, {}, std::vector{2}), + 0, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {3}, std::vector{0, 0, 1}), + "one_hot_scalar_2_in_3"), + OneHotParams(reference_tests::Tensor(ET1, {}, std::vector{1}), + 0, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {3}, std::vector{0, 1, 0}), + "one_hot_scalar_1_in_3"), + OneHotParams(reference_tests::Tensor(ET1, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {3}, std::vector{1, 0, 0}), + "one_hot_scalar_0_in_3"), + OneHotParams(reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 2, 2, 1, 0}), + 0, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {3, 8}, std::vector{0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0}), + "one_hot_vector_0"), + OneHotParams(reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 2, 2, 1, 0}), + 1, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {8, 3}, std::vector{0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0}), + "one_hot_vector_1"), + OneHotParams(reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 3, 2, 1, 0}), + 1, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {8, 3}, std::vector{0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0}), + "one_hot_vector_1_barely_oob"), + OneHotParams(reference_tests::Tensor(ET1, {3, 3}, std::vector{0, 1, 1, 2, 1, 0, 0, 2, 1}), + 0, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {3, 3, 3}, std::vector{1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0}), + "one_hot_matrix_0"), + OneHotParams(reference_tests::Tensor(ET1, {6}, std::vector{0, 11, 101, 1001, 10001, 19999}), + 1, + reference_tests::Tensor(ET1, {}, std::vector{20000}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor( + ET2, + {6, 20000}, + generateExpectedValues({6, 20000}, std::vector{0, 11, 101, 1001, 10001, 19999}, 20000)), + "one_hot_vector_many_categories"), }; return params; } @@ -177,23 +178,23 @@ template std::vector generateParamsFloat() { using T1 = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; - std::vector params { + std::vector params{ OneHotParams( reference_tests::Tensor(ET1, {3, 3}, std::vector{0, 1, 1, 2, 1, 0, 0, 2, 1}), 0, reference_tests::Tensor(ET1, {}, std::vector{3}), reference_tests::Tensor(ET2, {}, std::vector{2.5}), reference_tests::Tensor(ET2, {}, std::vector{0.5}), - reference_tests::Tensor(ET2, {3, 3, 3}, std::vector{ - 2.5, 0.5, 0.5, 0.5, 0.5, 2.5, 2.5, 0.5, 0.5, 0.5, 2.5, 2.5, 0.5, 2.5, - 0.5, 0.5, 0.5, 2.5, 0.5, 0.5, 0.5, 2.5, 0.5, 0.5, 0.5, 2.5, 0.5}), + reference_tests::Tensor(ET2, {3, 3, 3}, std::vector{2.5, 0.5, 0.5, 0.5, 0.5, 2.5, 2.5, 0.5, 0.5, + 0.5, 2.5, 2.5, 0.5, 2.5, 0.5, 0.5, 0.5, 2.5, + 0.5, 0.5, 0.5, 2.5, 0.5, 0.5, 0.5, 2.5, 0.5}), "one_hot_on_off_float"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -221,6 +222,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_OneHot_With_Hardcoded_Refs, ReferenceOneHotTest, - testing::ValuesIn(generateCombinedParams()), ReferenceOneHotTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_OneHot_With_Hardcoded_Refs, + ReferenceOneHotTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceOneHotTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/pad.cpp b/src/plugins/template/tests/functional/op_reference/pad.cpp index 1ca30e499d923a..eca5f7dbd074a7 100644 --- a/src/plugins/template/tests/functional/op_reference/pad.cpp +++ b/src/plugins/template/tests/functional/op_reference/pad.cpp @@ -2,34 +2,48 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/pad.hpp" + #include + #include -#include "openvino/op/pad.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct PadParams { - PadParams( - const reference_tests::Tensor& inputData, const reference_tests::Tensor& padsBegin, const reference_tests::Tensor& padsEnd, - const reference_tests::Tensor& expectedOutput, op::PadMode padMode, const reference_tests::Tensor& constantValue, - const std::string& testcaseName = "") : - inputData(inputData), padsBegin(padsBegin), padsEnd(padsEnd), - expectedOutput(expectedOutput), padMode(padMode), - useConstValue{true}, constantValue(constantValue), - testcaseName(testcaseName) {} - - PadParams( - const reference_tests::Tensor& inputData, const reference_tests::Tensor& padsBegin, const reference_tests::Tensor& padsEnd, - const reference_tests::Tensor& expectedOutput, op::PadMode padMode, - const std::string& testcaseName = "") : - inputData(inputData), padsBegin(padsBegin), padsEnd(padsEnd), - expectedOutput(expectedOutput), padMode(padMode), - testcaseName(testcaseName) {} + PadParams(const reference_tests::Tensor& inputData, + const reference_tests::Tensor& padsBegin, + const reference_tests::Tensor& padsEnd, + const reference_tests::Tensor& expectedOutput, + op::PadMode padMode, + const reference_tests::Tensor& constantValue, + const std::string& testcaseName = "") + : inputData(inputData), + padsBegin(padsBegin), + padsEnd(padsEnd), + expectedOutput(expectedOutput), + padMode(padMode), + useConstValue{true}, + constantValue(constantValue), + testcaseName(testcaseName) {} + + PadParams(const reference_tests::Tensor& inputData, + const reference_tests::Tensor& padsBegin, + const reference_tests::Tensor& padsEnd, + const reference_tests::Tensor& expectedOutput, + op::PadMode padMode, + const std::string& testcaseName = "") + : inputData(inputData), + padsBegin(padsBegin), + padsEnd(padsEnd), + expectedOutput(expectedOutput), + padMode(padMode), + testcaseName(testcaseName) {} reference_tests::Tensor inputData; reference_tests::Tensor padsBegin; @@ -124,7 +138,7 @@ class ReferencePadV1Test : public ReferencePadTest { function = CreateFunction(GetParam()); } - public: +public: static std::shared_ptr CreateFunction(const PadParams& params) { return commonConstPadsCreateFunction(params); } @@ -142,7 +156,6 @@ class ReferencePadV12Test : public ReferencePadTest { } }; - TEST_P(ReferencePadV1Test, CompareWithRefs) { Exec(); } @@ -163,7 +176,6 @@ TEST_P(ReferencePadTestParamsOk, CompareWithRefs) { EXPECT_NO_THROW(Exec()); } - class ReferencePadV1TestNonConstPadsBeginPadsEndPadVal : public ReferencePadTest { public: void SetUp() override { @@ -196,13 +208,15 @@ TEST_P(ReferencePadV12TestNonConstPadsBeginPadsEndPadVal, CompareWithRefs) { Exec(); } -class ReferencePadV1TestNonConstPadsBeginPadsEndPadValTooLarge : public ReferencePadV1TestNonConstPadsBeginPadsEndPadVal {}; +class ReferencePadV1TestNonConstPadsBeginPadsEndPadValTooLarge + : public ReferencePadV1TestNonConstPadsBeginPadsEndPadVal {}; TEST_P(ReferencePadV1TestNonConstPadsBeginPadsEndPadValTooLarge, CompareWithRefs) { EXPECT_ANY_THROW(Exec()); } -class ReferencePadV1TestNonConstPadsBeginPadsEndPadValParamsOk : public ReferencePadV1TestNonConstPadsBeginPadsEndPadVal {}; +class ReferencePadV1TestNonConstPadsBeginPadsEndPadValParamsOk + : public ReferencePadV1TestNonConstPadsBeginPadsEndPadVal {}; TEST_P(ReferencePadV1TestNonConstPadsBeginPadsEndPadValParamsOk, CompareWithRefs) { EXPECT_NO_THROW(Exec()); @@ -212,691 +226,1308 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{5}), - reference_tests::Tensor(ET, {15}, std::vector{ - 2112, 2112, 2112, 2112, 1, 2, 3, 4, 5, 6, 2112, 2112, 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_1d_constant_const_value_provided_0"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET, {10}, std::vector{ - 2112, 2112, 2112, 2112, 1, 2, 3, 4, 5, 6, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_1d_constant_const_value_provided_1"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {9}, std::vector{ - 1, 2, 3, 4, 5, 6, 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_1d_constant_const_value_provided_2"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{5}), - reference_tests::Tensor(ET, {15}, std::vector{ - 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, - }), - op::PadMode::CONSTANT, - "pad_1d_constant_use_default_const_0"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET, {10}, std::vector{ - 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, - }), - op::PadMode::CONSTANT, - "pad_1d_constant_use_default_const_1"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {9}, std::vector{ - 1, 2, 3, 4, 5, 6, 0, 0, 0, - }), - op::PadMode::CONSTANT, - "pad_1d_constant_use_default_const_2"), - - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{3, 4}), - reference_tests::Tensor(ET, {6, 8}, std::vector{ - 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 1, 2, 2112, 2112, 2112, 2112, - 2112, 2112, 3, 4, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_2d_constant_const_value_provided_0"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 2112, 2112, 2112, 2112, - 2112, 2112, 1, 2, - 2112, 2112, 3, 4, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_2d_constant_const_value_provided_1"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 2112, 2112, - 3, 4, 2112, 2112, - 2112, 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_2d_constant_const_value_provided_2"), - - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{3, 4}), - reference_tests::Tensor(ET, {6, 8}, std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 2, 0, 0, 0, 0, - 0, 0, 3, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }), - op::PadMode::CONSTANT, - "pad_2d_constant_use_default_const_0"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 0, 0, 0, 0, - 0, 0, 1, 2, - 0, 0, 3, 4, - }), - op::PadMode::CONSTANT, - "pad_2d_constant_use_default_const_1"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 0, 0, - 3, 4, 0, 0, - 0, 0, 0, 0, - }), - op::PadMode::CONSTANT, - "pad_2d_constant_use_default_const_2"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {11}, std::vector{ - 1, 1, 1, 2, 3, 4, 5, 6, 6, 6, 6, - }), - op::PadMode::EDGE, - "pad_1d_edge_0"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{1}), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET, {7}, std::vector{ - 1, 1, 2, 3, 4, 5, 6, - }), - op::PadMode::EDGE, - "pad_1d_edge_1"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET, {8}, std::vector{ - 1, 2, 3, 4, 5, 6, 6, 6, - }), - op::PadMode::EDGE, - "pad_1d_edge_2"), - - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {5, 5}, std::vector{ - 1, 1, 1, 2, 2, - 1, 1, 1, 2, 2, - 3, 3, 3, 4, 4, - 3, 3, 3, 4, 4, - 3, 3, 3, 4, 4, - }), - op::PadMode::EDGE, - "pad_2d_edge_0"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 1, 1, 2, - 1, 1, 1, 2, - 3, 3, 3, 4, - }), - op::PadMode::EDGE, - "pad_2d_edge_1"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 1, 2, 2, - 3, 4, 4, - 3, 4, 4, - 3, 4, 4, - }), - op::PadMode::EDGE, - "pad_2d_edge_2"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {11}, std::vector{ - 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 3, - }), - op::PadMode::REFLECT, - "pad_1d_reflect_0"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{1}), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET, {7}, std::vector{ - 2, 1, 2, 3, 4, 5, 6, - }), - op::PadMode::REFLECT, - "pad_1d_reflect_1"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET, {8}, std::vector{ - 1, 2, 3, 4, 5, 6, 5, 4, - }), - op::PadMode::REFLECT, - "pad_1d_reflect_2"), - - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {6, 6}, std::vector{ - 6, 5, 4, 5, 6, 5, - 3, 2, 1, 2, 3, 2, - 6, 5, 4, 5, 6, 5, - 9, 8, 7, 8, 9, 8, - 6, 5, 4, 5, 6, 5, - 3, 2, 1, 2, 3, 2, - }), - op::PadMode::REFLECT, - "pad_2d_reflect_0"), - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {4, 5}, std::vector{ - 6, 5, 4, 5, 6, - 3, 2, 1, 2, 3, - 6, 5, 4, 5, 6, - 9, 8, 7, 8, 9, - }), - op::PadMode::REFLECT, - "pad_2d_reflect_1"), - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {5, 4}, std::vector{ - 1, 2, 3, 2, - 4, 5, 6, 5, - 7, 8, 9, 8, - 4, 5, 6, 5, - 1, 2, 3, 2, - }), - op::PadMode::REFLECT, - "pad_2d_reflect_2"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {11}, std::vector{ - 2, 1, 1, 2, 3, 4, 5, 6, 6, 5, 4, - }), - op::PadMode::SYMMETRIC, - "pad_1d_symmetric_0"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{1}), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET, {7}, std::vector{ - 1, 1, 2, 3, 4, 5, 6, - }), - op::PadMode::SYMMETRIC, - "pad_1d_symmetric_1"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET, {8}, std::vector{ - 1, 2, 3, 4, 5, 6, 6, 5, - }), - op::PadMode::SYMMETRIC, - "pad_1d_symmetric_2"), - - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {6, 6}, std::vector{ - 2, 1, 1, 2, 3, 3, - 2, 1, 1, 2, 3, 3, - 5, 4, 4, 5, 6, 6, - 8, 7, 7, 8, 9, 9, - 8, 7, 7, 8, 9, 9, - 5, 4, 4, 5, 6, 6, - }), - op::PadMode::SYMMETRIC, - "pad_2d_symmetric_0"), - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {4, 5}, std::vector{ - 2, 1, 1, 2, 3, - 2, 1, 1, 2, 3, - 5, 4, 4, 5, 6, - 8, 7, 7, 8, 9, - }), - op::PadMode::SYMMETRIC, - "pad_2d_symmetric_1"), - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {5, 4}, std::vector{ - 1, 2, 3, 3, - 4, 5, 6, 6, - 7, 8, 9, 9, - 7, 8, 9, 9, - 4, 5, 6, 6, - }), - op::PadMode::SYMMETRIC, - "pad_2d_symmetric"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{5}), - reference_tests::Tensor(ET, {15}, std::vector{ - 2112, 2112, 2112, 2112, 1, 2, 3, 4, 5, 6, 2112, 2112, 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_exterior_1d"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), - reference_tests::Tensor(ET, {8}, std::vector{ - 2112, 2112, 2112, 2112, 1, 2, 3, 4, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_negative_exterior_1d"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), - reference_tests::Tensor(ET, {3}, std::vector{ - 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_negative_exterior_1d_check_limits"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {11}, std::vector{ - 1, 1, 1, 2, 3, 4, 5, 6, 6, 6, 6, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_1d"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-3}), - reference_tests::Tensor(ET, {5}, std::vector{ - 1, 1, 1, 2, 3, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_1d_top_neg"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), - reference_tests::Tensor(ET, {1}, std::vector{ - 1, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_1d_top_neg_bigger_than_tensor"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {7}, std::vector{ - 3, 4, 5, 6, 6, 6, 6, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_1d_bottom_neg"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {2}, std::vector{ - 6, 6, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_1d_bottom_neg_bigger_than_tensor"), - - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {6, 9}, std::vector{ - 1, 1, 1, 1, 2, 3, 4, 4, 4, - 1, 1, 1, 1, 2, 3, 4, 4, 4, - 1, 1, 1, 1, 2, 3, 4, 4, 4, - 5, 5, 5, 5, 6, 7, 8, 8, 8, - 9, 9, 9, 9, 10, 11, 12, 12, 12, - 9, 9, 9, 9, 10, 11, 12, 12, 12, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_2d"), - - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {6, 5}, std::vector{ - 2, 3, 4, 4, 4, - 2, 3, 4, 4, 4, - 2, 3, 4, 4, 4, - 6, 7, 8, 8, 8, - 10, 11, 12, 12, 12, - 10, 11, 12, 12, 12, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_2d_with_neg"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {11}, std::vector{ - 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 3, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_1d"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-3}), - reference_tests::Tensor(ET, {5}, std::vector{ - 3, 2, 1, 2, 3, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_1d_top_neg"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), - reference_tests::Tensor(ET, {1}, std::vector{ - 3, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_1d_top_neg_bigger_than_tensor"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {7}, std::vector{ - 3, 4, 5, 6, 5, 4, 3, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_1d_bottom_neg"), - - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {2}, std::vector{ - 4, 3, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_1d_bottom_neg_bigger_than_tensor"), - - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {6, 9}, std::vector{ - 12, 11, 10, 9, 10, 11, 12, 11, 10, - 8, 7, 6, 5, 6, 7, 8, 7, 6, - 4, 3, 2, 1, 2, 3, 4, 3, 2, - 8, 7, 6, 5, 6, 7, 8, 7, 6, - 12, 11, 10, 9, 10, 11, 12, 11, 10, - 8, 7, 6, 5, 6, 7, 8, 7, 6, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_2d"), - - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {6, 5}, std::vector{ - 10, 11, 12, 11, 10, - 6, 7, 8, 7, 6, - 2, 3, 4, 3, 2, - 6, 7, 8, 7, 6, - 10, 11, 12, 11, 10, - 6, 7, 8, 7, 6, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_2d_with_neg"), - - PadParams( - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 0}), - reference_tests::Tensor(ET, {5, 2}, std::vector{ - 9, 9, - 2, 3, - 5, 6, - 9, 9, - 9, 9, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{9}), - "pad_negative_exterior_2d"), - - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET, {1, 1}, std::vector{5}), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{9}), - "pad_negative_exterior_2d_all_negative"), + std::vector params{ + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{5}), + reference_tests::Tensor(ET, + {15}, + std::vector{ + 2112, + 2112, + 2112, + 2112, + 1, + 2, + 3, + 4, + 5, + 6, + 2112, + 2112, + 2112, + 2112, + 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_1d_constant_const_value_provided_0"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET, + {10}, + std::vector{ + 2112, + 2112, + 2112, + 2112, + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_1d_constant_const_value_provided_1"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {9}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 2112, + 2112, + 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_1d_constant_const_value_provided_2"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{5}), + reference_tests::Tensor(ET, + {15}, + std::vector{ + 0, + 0, + 0, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 0, + 0, + 0, + 0, + 0, + }), + op::PadMode::CONSTANT, + "pad_1d_constant_use_default_const_0"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET, + {10}, + std::vector{ + 0, + 0, + 0, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::CONSTANT, + "pad_1d_constant_use_default_const_1"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {9}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 0, + 0, + 0, + }), + op::PadMode::CONSTANT, + "pad_1d_constant_use_default_const_2"), + + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{3, 4}), + reference_tests::Tensor(ET, + {6, 8}, + std::vector{ + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 1, 2, + 2112, 2112, 2112, 2112, 2112, 2112, 3, 4, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_2d_constant_const_value_provided_0"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 2112, + 2112, + 2112, + 2112, + 2112, + 2112, + 1, + 2, + 2112, + 2112, + 3, + 4, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_2d_constant_const_value_provided_1"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 2112, + 2112, + 3, + 4, + 2112, + 2112, + 2112, + 2112, + 2112, + 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_2d_constant_const_value_provided_2"), + + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{3, 4}), + reference_tests::Tensor(ET, + {6, 8}, + std::vector{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }), + op::PadMode::CONSTANT, + "pad_2d_constant_use_default_const_0"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 2, + 0, + 0, + 3, + 4, + }), + op::PadMode::CONSTANT, + "pad_2d_constant_use_default_const_1"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 0, + 0, + 3, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + }), + op::PadMode::CONSTANT, + "pad_2d_constant_use_default_const_2"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {11}, + std::vector{ + 1, + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 6, + 6, + }), + op::PadMode::EDGE, + "pad_1d_edge_0"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{1}), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET, + {7}, + std::vector{ + 1, + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::EDGE, + "pad_1d_edge_1"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET, + {8}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 6, + }), + op::PadMode::EDGE, + "pad_1d_edge_2"), + + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {5, 5}, + std::vector{ + 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, + }), + op::PadMode::EDGE, + "pad_2d_edge_0"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 2, + 3, + 3, + 3, + 4, + }), + op::PadMode::EDGE, + "pad_2d_edge_1"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {4, 3}, + std::vector{ + 1, + 2, + 2, + 3, + 4, + 4, + 3, + 4, + 4, + 3, + 4, + 4, + }), + op::PadMode::EDGE, + "pad_2d_edge_2"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {11}, + std::vector{ + 3, + 2, + 1, + 2, + 3, + 4, + 5, + 6, + 5, + 4, + 3, + }), + op::PadMode::REFLECT, + "pad_1d_reflect_0"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{1}), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET, + {7}, + std::vector{ + 2, + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::REFLECT, + "pad_1d_reflect_1"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET, + {8}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 5, + 4, + }), + op::PadMode::REFLECT, + "pad_1d_reflect_2"), + + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {6, 6}, + std::vector{ + 6, 5, 4, 5, 6, 5, 3, 2, 1, 2, 3, 2, 6, 5, 4, 5, 6, 5, + 9, 8, 7, 8, 9, 8, 6, 5, 4, 5, 6, 5, 3, 2, 1, 2, 3, 2, + }), + op::PadMode::REFLECT, + "pad_2d_reflect_0"), + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {4, 5}, + std::vector{ + 6, 5, 4, 5, 6, 3, 2, 1, 2, 3, 6, 5, 4, 5, 6, 9, 8, 7, 8, 9, + }), + op::PadMode::REFLECT, + "pad_2d_reflect_1"), + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {5, 4}, + std::vector{ + 1, 2, 3, 2, 4, 5, 6, 5, 7, 8, 9, 8, 4, 5, 6, 5, 1, 2, 3, 2, + }), + op::PadMode::REFLECT, + "pad_2d_reflect_2"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {11}, + std::vector{ + 2, + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 5, + 4, + }), + op::PadMode::SYMMETRIC, + "pad_1d_symmetric_0"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{1}), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET, + {7}, + std::vector{ + 1, + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::SYMMETRIC, + "pad_1d_symmetric_1"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET, + {8}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 5, + }), + op::PadMode::SYMMETRIC, + "pad_1d_symmetric_2"), + + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {6, 6}, + std::vector{ + 2, 1, 1, 2, 3, 3, 2, 1, 1, 2, 3, 3, 5, 4, 4, 5, 6, 6, + 8, 7, 7, 8, 9, 9, 8, 7, 7, 8, 9, 9, 5, 4, 4, 5, 6, 6, + }), + op::PadMode::SYMMETRIC, + "pad_2d_symmetric_0"), + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {4, 5}, + std::vector{ + 2, 1, 1, 2, 3, 2, 1, 1, 2, 3, 5, 4, 4, 5, 6, 8, 7, 7, 8, 9, + }), + op::PadMode::SYMMETRIC, + "pad_2d_symmetric_1"), + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {5, 4}, + std::vector{ + 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 7, 8, 9, 9, 4, 5, 6, 6, + }), + op::PadMode::SYMMETRIC, + "pad_2d_symmetric"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{5}), + reference_tests::Tensor(ET, + {15}, + std::vector{ + 2112, + 2112, + 2112, + 2112, + 1, + 2, + 3, + 4, + 5, + 6, + 2112, + 2112, + 2112, + 2112, + 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_exterior_1d"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), + reference_tests::Tensor(ET, + {8}, + std::vector{ + 2112, + 2112, + 2112, + 2112, + 1, + 2, + 3, + 4, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_negative_exterior_1d"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), + reference_tests::Tensor(ET, + {3}, + std::vector{ + 2112, + 2112, + 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_negative_exterior_1d_check_limits"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {11}, + std::vector{ + 1, + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 6, + 6, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_1d"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-3}), + reference_tests::Tensor(ET, + {5}, + std::vector{ + 1, + 1, + 1, + 2, + 3, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_1d_top_neg"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), + reference_tests::Tensor(ET, + {1}, + std::vector{ + 1, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_1d_top_neg_bigger_than_tensor"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {7}, + std::vector{ + 3, + 4, + 5, + 6, + 6, + 6, + 6, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_1d_bottom_neg"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {2}, + std::vector{ + 6, + 6, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_1d_bottom_neg_bigger_than_tensor"), + + PadParams(reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor( + ET, + {6, 9}, + std::vector{ + 1, 1, 1, 1, 2, 3, 4, 4, 4, 1, 1, 1, 1, 2, 3, 4, 4, 4, 1, 1, 1, 1, 2, 3, 4, 4, 4, + 5, 5, 5, 5, 6, 7, 8, 8, 8, 9, 9, 9, 9, 10, 11, 12, 12, 12, 9, 9, 9, 9, 10, 11, 12, 12, 12, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_2d"), + + PadParams(reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET, + {6, 5}, + std::vector{ + 2, 3, 4, 4, 4, 2, 3, 4, 4, 4, 2, 3, 4, 4, 4, + 6, 7, 8, 8, 8, 10, 11, 12, 12, 12, 10, 11, 12, 12, 12, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_2d_with_neg"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {11}, + std::vector{ + 3, + 2, + 1, + 2, + 3, + 4, + 5, + 6, + 5, + 4, + 3, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_1d"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-3}), + reference_tests::Tensor(ET, + {5}, + std::vector{ + 3, + 2, + 1, + 2, + 3, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_1d_top_neg"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), + reference_tests::Tensor(ET, + {1}, + std::vector{ + 3, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_1d_top_neg_bigger_than_tensor"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {7}, + std::vector{ + 3, + 4, + 5, + 6, + 5, + 4, + 3, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_1d_bottom_neg"), + + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {2}, + std::vector{ + 4, + 3, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_1d_bottom_neg_bigger_than_tensor"), + + PadParams(reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET, + {6, 9}, + std::vector{ + 12, 11, 10, 9, 10, 11, 12, 11, 10, 8, 7, 6, 5, 6, 7, 8, 7, 6, + 4, 3, 2, 1, 2, 3, 4, 3, 2, 8, 7, 6, 5, 6, 7, 8, 7, 6, + 12, 11, 10, 9, 10, 11, 12, 11, 10, 8, 7, 6, 5, 6, 7, 8, 7, 6, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_2d"), + + PadParams(reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET, + {6, 5}, + std::vector{ + 10, 11, 12, 11, 10, 6, 7, 8, 7, 6, 2, 3, 4, 3, 2, + 6, 7, 8, 7, 6, 10, 11, 12, 11, 10, 6, 7, 8, 7, 6, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_2d_with_neg"), + + PadParams(reference_tests::Tensor(ET, + {2, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 0}), + reference_tests::Tensor(ET, + {5, 2}, + std::vector{ + 9, + 9, + 2, + 3, + 5, + 6, + 9, + 9, + 9, + 9, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{9}), + "pad_negative_exterior_2d"), + + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET, {1, 1}, std::vector{5}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{9}), + "pad_negative_exterior_2d_all_negative"), PadParams( reference_tests::Tensor(ET, {0, 0}, std::vector{}), reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), reference_tests::Tensor(ET_INT, {2}, std::vector{3, 2}), - reference_tests::Tensor(ET, {5, 5}, std::vector{ - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - }), + reference_tests::Tensor(ET, + {5, 5}, + std::vector{ + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + }), op::PadMode::CONSTANT, reference_tests::Tensor(ET, {}, std::vector{2112}), "pad_exterior_2d_0x0"), @@ -905,13 +1536,12 @@ std::vector generateParams() { reference_tests::Tensor(ET, {0, 3}, std::vector{}), reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), reference_tests::Tensor(ET_INT, {2}, std::vector{3, 1}), - reference_tests::Tensor(ET, {5, 5}, std::vector{ - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - }), + reference_tests::Tensor(ET, + {5, 5}, + std::vector{ + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + }), op::PadMode::CONSTANT, reference_tests::Tensor(ET, {}, std::vector{2112}), "pad_exterior_2d_0x3"), @@ -920,365 +1550,317 @@ std::vector generateParams() { reference_tests::Tensor(ET, {3, 0}, std::vector{}), reference_tests::Tensor(ET_INT, {2}, std::vector{1, 3}), reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {5, 5}, std::vector{ - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - }), + reference_tests::Tensor(ET, + {5, 5}, + std::vector{ + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + }), op::PadMode::CONSTANT, reference_tests::Tensor(ET, {}, std::vector{2112}), "pad_exterior_2d_3x0"), - PadParams( - reference_tests::Tensor(ET, {2, 2, 4, 4}, std::vector{ - 0, 1, 0, 2, - 0, 3, 2, 0, - 2, 0, 0, 0, - 0, 2, 1, 0, - - 0, 0, 0, 2, - 0, 2, 3, 0, - 2, 0, 1, 0, - 2, 0, 0, 0, - - 0, 2, 1, 1, - 0, 0, 2, 0, - 0, 0, 1, 2, - 0, 0, 0, 0, - - 2, 1, 0, 0, - 0, 2, 0, 0, - 1, 1, 2, 0, - 1, 0, 0, 0, - }), - reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 0, 0}), - reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 2, 2}), - reference_tests::Tensor(ET, {2, 2, 6, 6}, std::vector{ - 0, 1, 0, 2, 42, 42, - 0, 3, 2, 0, 42, 42, - 2, 0, 0, 0, 42, 42, - 0, 2, 1, 0, 42, 42, - 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, - - 0, 0, 0, 2, 42, 42, - 0, 2, 3, 0, 42, 42, - 2, 0, 1, 0, 42, 42, - 2, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, - - 0, 2, 1, 1, 42, 42, - 0, 0, 2, 0, 42, 42, - 0, 0, 1, 2, 42, 42, - 0, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, - - 2, 1, 0, 0, 42, 42, - 0, 2, 0, 0, 42, 42, - 1, 1, 2, 0, 42, 42, - 1, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{42}), - "pad_2channel_2image_asym"), - - PadParams( - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {4, 7}, std::vector{ - 2, 1, 1, 2, 3, 3, 2, - 2, 1, 1, 2, 3, 3, 2, - 5, 4, 4, 5, 6, 6, 5, - 5, 4, 4, 5, 6, 6, 5, - }), - op::PadMode::SYMMETRIC, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_symmetric"), - PadParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET, {2, 1}, std::vector{ - 5, 8 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_4x3_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET, {1, 2}, std::vector{ - 6, 7 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_3x4_mode_const"), - PadParams( - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - - 7, 8, 9, - 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), - reference_tests::Tensor(ET_INT, {3}, std::vector{-1, 0, 0}), - reference_tests::Tensor(ET, {1, 2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_2x2x3_mode_const_remove_last"), - PadParams( - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - - 7, 8, 9, - 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {3}, std::vector{-1, 0, 0}), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), - reference_tests::Tensor(ET, {1, 2, 3}, std::vector{ - 7, 8, 9, - 10, 11, 12 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_2x2x3_mode_const_remove_first"), - PadParams( - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - - 7, 8, 9, - 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, -1, 0}), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), - reference_tests::Tensor(ET, {2, 1, 3}, std::vector{ - 4, 5, 6, - - 10, 11, 12 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_2x2x3_mode_const_remove_middle_begin"), - PadParams( - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - - 7, 8, 9, - 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, -1, 0}), - reference_tests::Tensor(ET, {2, 1, 3}, std::vector{ - 1, 2, 3, - - 7, 8, 9, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_2x2x3_mode_const_remove_middle_end"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, - 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET, {0, 2}, std::vector{}), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{10}), - "pad_neg_2x2_reult_empty_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-2, -2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), - reference_tests::Tensor(ET, {0, 0}, std::vector{}), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{10}), - "pad_neg_3x4_reult_empty_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 5, 6, - 9, 10 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_mix_cross_3x4_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), - reference_tests::Tensor(ET, {4, 5}, std::vector{ - 7, 8, 0, 0, 0, - 11, 12, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_begin_3x4_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), - reference_tests::Tensor(ET, {4, 5}, std::vector{ - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 1, 2, - 0, 0, 0, 5, 6, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_end_3x4_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), + PadParams(reference_tests::Tensor(ET, + {2, 2, 4, 4}, + std::vector{ + 0, 1, 0, 2, 0, 3, 2, 0, 2, 0, 0, 0, 0, 2, 1, 0, + + 0, 0, 0, 2, 0, 2, 3, 0, 2, 0, 1, 0, 2, 0, 0, 0, + + 0, 2, 1, 1, 0, 0, 2, 0, 0, 0, 1, 2, 0, 0, 0, 0, + + 2, 1, 0, 0, 0, 2, 0, 0, 1, 1, 2, 0, 1, 0, 0, 0, + }), + reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 0, 0}), + reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 2, 2}), + reference_tests::Tensor(ET, + {2, 2, 6, 6}, + std::vector{ + 0, 1, 0, 2, 42, 42, 0, 3, 2, 0, 42, 42, 2, 0, 0, 0, 42, 42, + 0, 2, 1, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + + 0, 0, 0, 2, 42, 42, 0, 2, 3, 0, 42, 42, 2, 0, 1, 0, 42, 42, + 2, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + + 0, 2, 1, 1, 42, 42, 0, 0, 2, 0, 42, 42, 0, 0, 1, 2, 42, 42, + 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + + 2, 1, 0, 0, 42, 42, 0, 2, 0, 0, 42, 42, 1, 1, 2, 0, 42, 42, + 1, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{42}), + "pad_2channel_2image_asym"), + + PadParams(reference_tests::Tensor(ET, + {2, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor( + ET, + {4, 7}, + std::vector{ + 2, 1, 1, 2, 3, 3, 2, 2, 1, 1, 2, 3, 3, 2, 5, 4, 4, 5, 6, 6, 5, 5, 4, 4, 5, 6, 6, 5, + }), + op::PadMode::SYMMETRIC, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_symmetric"), + PadParams(reference_tests::Tensor(ET, {4, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET, {2, 1}, std::vector{5, 8}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_4x3_mode_const"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET, {1, 2}, std::vector{6, 7}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_3x4_mode_const"), + PadParams(reference_tests::Tensor(ET, + {2, 2, 3}, + std::vector{1, + 2, + 3, + 4, + 5, + 6, + + 7, + 8, + 9, + 10, + 11, + 12}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), + reference_tests::Tensor(ET_INT, {3}, std::vector{-1, 0, 0}), + reference_tests::Tensor(ET, + {1, 2, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_2x2x3_mode_const_remove_last"), + PadParams(reference_tests::Tensor(ET, + {2, 2, 3}, + std::vector{1, + 2, + 3, + 4, + 5, + 6, + + 7, + 8, + 9, + 10, + 11, + 12}), + reference_tests::Tensor(ET_INT, {3}, std::vector{-1, 0, 0}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), + reference_tests::Tensor(ET, {1, 2, 3}, std::vector{7, 8, 9, 10, 11, 12}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_2x2x3_mode_const_remove_first"), + PadParams(reference_tests::Tensor(ET, + {2, 2, 3}, + std::vector{1, + 2, + 3, + 4, + 5, + 6, + + 7, + 8, + 9, + 10, + 11, + 12}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, -1, 0}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), + reference_tests::Tensor(ET, + {2, 1, 3}, + std::vector{4, + 5, + 6, + + 10, + 11, + 12}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_2x2x3_mode_const_remove_middle_begin"), + PadParams(reference_tests::Tensor(ET, + {2, 2, 3}, + std::vector{1, + 2, + 3, + 4, + 5, + 6, + + 7, + 8, + 9, + 10, + 11, + 12}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, -1, 0}), + reference_tests::Tensor(ET, + {2, 1, 3}, + std::vector{ + 1, + 2, + 3, + + 7, + 8, + 9, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_2x2x3_mode_const_remove_middle_end"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET, {0, 2}, std::vector{}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{10}), + "pad_neg_2x2_reult_empty_mode_const"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-2, -2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), + reference_tests::Tensor(ET, {0, 0}, std::vector{}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{10}), + "pad_neg_3x4_reult_empty_mode_const"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), + reference_tests::Tensor(ET, {2, 2}, std::vector{5, 6, 9, 10}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_mix_cross_3x4_mode_const"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), + reference_tests::Tensor(ET, {4, 5}, std::vector{7, 8, 0, 0, 0, 11, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_begin_3x4_mode_const"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), + reference_tests::Tensor(ET, + {4, 5}, + std::vector{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 5, 6, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_end_3x4_mode_const"), + PadParams( + reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 3}), - reference_tests::Tensor(ET, {4, 6}, std::vector{ - 10, 11, 12, 11, 10, 9, - 6, 7, 8, 7, 6, 5, - 2, 3, 4, 3, 2, 1, - 6, 7, 8, 7, 6, 5, - }), + reference_tests::Tensor(ET, + {4, 6}, + std::vector{ + 10, 11, 12, 11, 10, 9, 6, 7, 8, 7, 6, 5, 2, 3, 4, 3, 2, 1, 6, 7, 8, 7, 6, 5, + }), op::PadMode::REFLECT, "pad_neg_ones_cross_3x4_mode_reflect"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-4, 3}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, -5}), - reference_tests::Tensor(ET, {1, 2}, std::vector{ - 4, 3, - }), - op::PadMode::REFLECT, - "pad_neg_mix_cross_3x4_mode_reflect"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 3}), - reference_tests::Tensor(ET, {4, 6}, std::vector{ - 2, 3, 4, 4, 4, 4, - 2, 3, 4, 4, 4, 4, - 2, 3, 4, 4, 4, 4, - 6, 7, 8, 8, 8, 8, - }), - op::PadMode::EDGE, - "pad_neg_ones_cross_3x4_mode_edge"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 5, 6, - 9, 10 - }), - op::PadMode::EDGE, - "pad_neg_mix_cross_3x4_mode_edge"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 5, 6, - 9, 10 - }), - op::PadMode::REFLECT, - "pad_neg_mix_cross_3x4_mode_reflect"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 5, 6, - 9, 10 - }), - op::PadMode::SYMMETRIC, - "pad_neg_mix_cross_3x4_mode_symmetric"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 3}), - reference_tests::Tensor(ET, {4, 6}, std::vector{ - 6, 7, 8, 8, 7, 6, - 2, 3, 4, 4, 3, 2, - 2, 3, 4, 4, 3, 2, - 6, 7, 8, 8, 7, 6, - }), - op::PadMode::SYMMETRIC, - "pad_neg_ones_cross_3x4_mode_symmetric"), + PadParams(reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{-4, 3}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, -5}), + reference_tests::Tensor(ET, + {1, 2}, + std::vector{ + 4, + 3, + }), + op::PadMode::REFLECT, + "pad_neg_mix_cross_3x4_mode_reflect"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 3}), + reference_tests::Tensor(ET, + {4, 6}, + std::vector{ + 2, 3, 4, 4, 4, 4, 2, 3, 4, 4, 4, 4, 2, 3, 4, 4, 4, 4, 6, 7, 8, 8, 8, 8, + }), + op::PadMode::EDGE, + "pad_neg_ones_cross_3x4_mode_edge"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), + reference_tests::Tensor(ET, {2, 2}, std::vector{5, 6, 9, 10}), + op::PadMode::EDGE, + "pad_neg_mix_cross_3x4_mode_edge"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), + reference_tests::Tensor(ET, {2, 2}, std::vector{5, 6, 9, 10}), + op::PadMode::REFLECT, + "pad_neg_mix_cross_3x4_mode_reflect"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), + reference_tests::Tensor(ET, {2, 2}, std::vector{5, 6, 9, 10}), + op::PadMode::SYMMETRIC, + "pad_neg_mix_cross_3x4_mode_symmetric"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 3}), + reference_tests::Tensor(ET, + {4, 6}, + std::vector{ + 6, 7, 8, 8, 7, 6, 2, 3, 4, 4, 3, 2, 2, 3, 4, 4, 3, 2, 6, 7, 8, 8, 7, 6, + }), + op::PadMode::SYMMETRIC, + "pad_neg_ones_cross_3x4_mode_symmetric"), }; return params; } @@ -1287,56 +1869,80 @@ template std::vector generateParamsFloatValue() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { - PadParams( - reference_tests::Tensor(ET, {1, 2, 2, 2}, std::vector{ - 0.0f, 0.0f, - 0.0f, 0.0f, - 0.0f, 0.0f, - 0.0f, 0.0f, - }), + std::vector params{ + PadParams( + reference_tests::Tensor(ET, + {1, 2, 2, 2}, + std::vector{ + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + }), reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 1, 1}), reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 1, 1}), - reference_tests::Tensor(ET, {1, 2, 4, 4}, std::vector{ - 42.0f, 42.0f, 42.0f, 42.0f, - 42.0f, 0.0f, 0.0f, 42.0f, - 42.0f, 0.0f, 0.0f, 42.0f, - 42.0f, 42.0f, 42.0f, 42.0f, - 42.0f, 42.0f, 42.0f, 42.0f, - 42.0f, 0.0f, 0.0f, 42.0f, - 42.0f, 0.0f, 0.0f, 42.0f, - 42.0f, 42.0f, 42.0f, 42.0f, - }), + reference_tests::Tensor(ET, + {1, 2, 4, 4}, + std::vector{ + 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 0.0f, 0.0f, 42.0f, 42.0f, 0.0f, 0.0f, + 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 0.0f, + 0.0f, 42.0f, 42.0f, 0.0f, 0.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, + }), op::PadMode::CONSTANT, reference_tests::Tensor(ET, {}, std::vector{42}), "pad_exterior_4d_1x2x2x2"), - PadParams( - reference_tests::Tensor(ET, {1, 3, 2, 2}, std::vector{ - 0.0f, 0.0f, - 0.0f, 0.0f, - 1.0f, 1.0f, - 1.0f, 1.0f, - 2.0f, 2.0f, - 2.0f, 2.0f, - }), - reference_tests::Tensor(ET_INT, {4}, std::vector{0, -1, 1, 1}), - reference_tests::Tensor(ET_INT, {4}, std::vector{0, -1, 1, 1}), - reference_tests::Tensor(ET, {1, 1, 4, 4}, std::vector{ - 42.0f, 42.0f, 42.0f, 42.0f, - 42.0f, 1.0f, 1.0f, 42.0f, - 42.0f, 1.0f, 1.0f, 42.0f, - 42.0f, 42.0f, 42.0f, 42.0f, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{42}), - "pad_negative_exterior_4d"), + PadParams(reference_tests::Tensor(ET, + {1, 3, 2, 2}, + std::vector{ + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 2.0f, + 2.0f, + 2.0f, + 2.0f, + }), + reference_tests::Tensor(ET_INT, {4}, std::vector{0, -1, 1, 1}), + reference_tests::Tensor(ET_INT, {4}, std::vector{0, -1, 1, 1}), + reference_tests::Tensor(ET, + {1, 1, 4, 4}, + std::vector{ + 42.0f, + 42.0f, + 42.0f, + 42.0f, + 42.0f, + 1.0f, + 1.0f, + 42.0f, + 42.0f, + 1.0f, + 1.0f, + 42.0f, + 42.0f, + 42.0f, + 42.0f, + 42.0f, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{42}), + "pad_negative_exterior_4d"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -1370,53 +1976,88 @@ std::vector generateCombinedParams() { return combinedParams; } +INSTANTIATE_TEST_SUITE_P(smoke_PadV1_With_Hardcoded_Refs, + ReferencePadV1Test, + testing::ValuesIn(generateCombinedParams()), + ReferencePadTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_PadV1_With_Hardcoded_Refs, ReferencePadV1Test, - testing::ValuesIn(generateCombinedParams()), ReferencePadTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_PadV1_With_Hardcoded_Refs, ReferencePadV1TestNonConstPadsBeginPadsEndPadVal, - testing::ValuesIn(generateCombinedParams()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_PadV1_With_Hardcoded_Refs, + ReferencePadV1TestNonConstPadsBeginPadsEndPadVal, + testing::ValuesIn(generateCombinedParams()), + ReferencePadTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_PadV12_With_Hardcoded_Refs, ReferencePadV12Test, - testing::ValuesIn(generateCombinedParams()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_PadV12_With_Hardcoded_Refs, + ReferencePadV12Test, + testing::ValuesIn(generateCombinedParams()), + ReferencePadTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_PadV12_With_Hardcoded_Refs, ReferencePadV12TestNonConstPadsBeginPadsEndPadVal, - testing::ValuesIn(generateCombinedParams()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_PadV12_With_Hardcoded_Refs, + ReferencePadV12TestNonConstPadsBeginPadsEndPadVal, + testing::ValuesIn(generateCombinedParams()), + ReferencePadTest::getTestCaseName); template std::vector generateParamsTooLarge() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 4, 5, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 3}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {2, 5}, std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }), - op::PadMode::SYMMETRIC, - "pad_to_large_symmetric_padding"), - - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 4, 5, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {2, 4}, std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - }), - op::PadMode::REFLECT, - "pad_to_large_reflect_padding"), + std::vector params{ + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 4, + 5, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 3}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {2, 5}, + std::vector{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + }), + op::PadMode::SYMMETRIC, + "pad_to_large_symmetric_padding"), + + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 4, + 5, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {2, 4}, + std::vector{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + }), + op::PadMode::REFLECT, + "pad_to_large_reflect_padding"), }; return params; } std::vector generateCombinedParamsTooLarge() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsTooLarge(), }; std::vector combinedParams; @@ -1427,46 +2068,74 @@ std::vector generateCombinedParamsTooLarge() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, ReferencePadTestParamsTooLarge, - testing::ValuesIn(generateCombinedParamsTooLarge()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, + ReferencePadTestParamsTooLarge, + testing::ValuesIn(generateCombinedParamsTooLarge()), + ReferencePadTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, ReferencePadV1TestNonConstPadsBeginPadsEndPadValTooLarge, - testing::ValuesIn(generateCombinedParamsTooLarge()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, + ReferencePadV1TestNonConstPadsBeginPadsEndPadValTooLarge, + testing::ValuesIn(generateCombinedParamsTooLarge()), + ReferencePadTest::getTestCaseName); template std::vector generateParamsOk() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 4, 5, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {2, 4}, std::vector{ - 2, 1, 1, 2, 5, 4, 4, 5, - }), - op::PadMode::SYMMETRIC, - "pad_ok_symmetric_padding"), - - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 4, 5, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 2, 1, 2, 5, 4, 5, - }), - op::PadMode::REFLECT, - "pad_ok_reflect_padding"), + std::vector params{ + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 4, + 5, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {2, 4}, + std::vector{ + 2, + 1, + 1, + 2, + 5, + 4, + 4, + 5, + }), + op::PadMode::SYMMETRIC, + "pad_ok_symmetric_padding"), + + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 4, + 5, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {2, 3}, + std::vector{ + 2, + 1, + 2, + 5, + 4, + 5, + }), + op::PadMode::REFLECT, + "pad_ok_reflect_padding"), }; return params; } std::vector generateCombinedParamsOk() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsOk(), }; std::vector combinedParams; @@ -1477,9 +2146,13 @@ std::vector generateCombinedParamsOk() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, ReferencePadTestParamsOk, - testing::ValuesIn(generateCombinedParamsOk()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, + ReferencePadTestParamsOk, + testing::ValuesIn(generateCombinedParamsOk()), + ReferencePadTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, ReferencePadV1TestNonConstPadsBeginPadsEndPadValParamsOk, - testing::ValuesIn(generateCombinedParamsOk()), ReferencePadTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, + ReferencePadV1TestNonConstPadsBeginPadsEndPadValParamsOk, + testing::ValuesIn(generateCombinedParamsOk()), + ReferencePadTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/parameter_as_output.cpp b/src/plugins/template/tests/functional/op_reference/parameter_as_output.cpp index 607e93e38498b3..6b44fdc17734af 100644 --- a/src/plugins/template/tests/functional/op_reference/parameter_as_output.cpp +++ b/src/plugins/template/tests/functional/op_reference/parameter_as_output.cpp @@ -72,14 +72,12 @@ template std::vector generateParamsForParameter() { using T = typename element_type_traits::value_type; - std::vector params{ - ParameterParams(Shape{3, 4}, - Shape{3, 4}, - ET, - ET, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}) - }; + std::vector params{ParameterParams(Shape{3, 4}, + Shape{3, 4}, + ET, + ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11})}; return params; } @@ -97,8 +95,7 @@ std::vector generateCombinedParamsForParameter() { generateParamsForParameter(), generateParamsForParameter(), generateParamsForParameter(), - generateParamsForParameter() - }; + generateParamsForParameter()}; std::vector combinedParams; @@ -109,10 +106,9 @@ std::vector generateCombinedParamsForParameter() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Parameter_With_Hardcoded_Refs, - ReferenceParameterLayerTest, - ::testing::ValuesIn(generateCombinedParamsForParameter()), - ReferenceParameterLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Parameter_With_Hardcoded_Refs, + ReferenceParameterLayerTest, + ::testing::ValuesIn(generateCombinedParamsForParameter()), + ReferenceParameterLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/power.cpp b/src/plugins/template/tests/functional/op_reference/power.cpp index 53b04579041a0c..4ca0615397731d 100644 --- a/src/plugins/template/tests/functional/op_reference/power.cpp +++ b/src/plugins/template/tests/functional/op_reference/power.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/power.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/power.hpp" using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct PowerParams { template PowerParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -57,9 +59,9 @@ class ReferencePowerLayerTest : public testing::TestWithParam, publ private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto power = std::make_shared(in1, in2); @@ -78,43 +80,40 @@ std::vector generateParamsForPower() { std::vector params{ PowerParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{1, 2, 3, 5}, - std::vector{2, 0, 6, 3}, - std::vector{1, 1, 729, 125}), + ov::PartialShape{2, 2}, + IN_ET, + std::vector{1, 2, 3, 5}, + std::vector{2, 0, 6, 3}, + std::vector{1, 1, 729, 125}), PowerParams(ov::PartialShape{2, 1, 5}, - ov::PartialShape{2, 1}, - IN_ET, - std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, - std::vector{1, 2}, - std::vector{1, 2, 3, 4, 5, 1, 4, 9, 16, 25, 6, 7, 8, 9, 10, 36, 49, 64, 81, 100}), + ov::PartialShape{2, 1}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, + std::vector{1, 2}, + std::vector{1, 2, 3, 4, 5, 1, 4, 9, 16, 25, 6, 7, 8, 9, 10, 36, 49, 64, 81, 100}), PowerParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{2}, - std::vector{3}, - std::vector{8}), + ov::PartialShape{1}, + IN_ET, + std::vector{2}, + std::vector{3}, + std::vector{8}), PowerParams(ov::PartialShape{2, 2}, ov::PartialShape{1}, IN_ET, std::vector{2, 3, 4, 5}, std::vector{2}, - std::vector{4, 9, 16, 25}) - }; + std::vector{4, 9, 16, 25})}; return params; } std::vector generateCombinedParamsForPower() { - const std::vector> allTypeParams{ - generateParamsForPower(), - generateParamsForPower(), - generateParamsForPower(), - generateParamsForPower(), - generateParamsForPower(), - generateParamsForPower(), - generateParamsForPower() - }; + const std::vector> allTypeParams{generateParamsForPower(), + generateParamsForPower(), + generateParamsForPower(), + generateParamsForPower(), + generateParamsForPower(), + generateParamsForPower(), + generateParamsForPower()}; std::vector combinedParams; @@ -125,10 +124,9 @@ std::vector generateCombinedParamsForPower() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Power_With_Hardcoded_Refs, - ReferencePowerLayerTest, - ::testing::ValuesIn(generateCombinedParamsForPower()), - ReferencePowerLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Power_With_Hardcoded_Refs, + ReferencePowerLayerTest, + ::testing::ValuesIn(generateCombinedParamsForPower()), + ReferencePowerLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/prelu.cpp b/src/plugins/template/tests/functional/op_reference/prelu.cpp index bfc9c949decb68..98ab7d02f83e79 100644 --- a/src/plugins/template/tests/functional/op_reference/prelu.cpp +++ b/src/plugins/template/tests/functional/op_reference/prelu.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/prelu.hpp" + #include -#include "openvino/op/prelu.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,8 +14,13 @@ using namespace ov; namespace { struct PreluParams { template - PreluParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const ov::Shape& slopeShape, const std::vector& negativeSlopeValues, const std::string& test_name = "") + PreluParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const ov::Shape& slopeShape, + const std::vector& negativeSlopeValues, + const std::string& test_name = "") : pshape(shape), inType(iType), outType(iType), @@ -59,11 +65,13 @@ class ReferencePreluLayerTest : public testing::TestWithParam, publ } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const Shape& slope_shape, const element::Type& input_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const Shape& slope_shape, + const element::Type& input_type) { const auto in = std::make_shared(input_type, input_shape); const auto SLOPE = std::make_shared(input_type, slope_shape); const auto Prelu = std::make_shared(in, SLOPE); - return std::make_shared(NodeVector {Prelu}, ParameterVector {in, SLOPE}); + return std::make_shared(NodeVector{Prelu}, ParameterVector{in, SLOPE}); } }; @@ -75,179 +83,186 @@ template std::vector generatePreluFloatParams() { using T = typename element_type_traits::value_type; - std::vector preluParams { - PreluParams(ov::PartialShape {6}, + std::vector preluParams{ + PreluParams(ov::PartialShape{6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6}, std::vector{1, 2, -6, -8, 5, 6}, - ov::Shape {1}, + ov::Shape{1}, std::vector{2}), - PreluParams(ov::PartialShape {6}, + PreluParams(ov::PartialShape{6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6}, std::vector{1, 2, -12, -20, 5, 6}, - ov::Shape {6}, + ov::Shape{6}, std::vector{2, 3, 4, 5, 6, 7}), - PreluParams(ov::PartialShape {3, 2}, + PreluParams(ov::PartialShape{3, 2}, IN_ET, std::vector{-2, 3, -2, 1, -1, 0}, std::vector{0, 3, 0, 1, 0, 0}, - ov::Shape {2}, + ov::Shape{2}, std::vector{0, 1}), - PreluParams(ov::PartialShape {2, 6}, + PreluParams(ov::PartialShape{2, 6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6, 7, 8, -9, -10, 11, 12}, std::vector{1, 2, -9, -16, 5, 6, 7, 8, -27, -40, 11, 12}, - ov::Shape {6}, + ov::Shape{6}, std::vector{1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {3, 2}, + PreluParams(ov::PartialShape{3, 2}, IN_ET, std::vector{-1, -1, -1, -1, -1, -1}, std::vector{-2, -0.5, -2, -0.5, -2, -0.5}, - ov::Shape {2}, + ov::Shape{2}, std::vector{2, 0.5}, "C_2_const"), - PreluParams(ov::PartialShape {2, 2, 2}, + PreluParams(ov::PartialShape{2, 2, 2}, IN_ET, std::vector{-0.5, -2, -3, -4, -5, -6, -7, -8}, std::vector{0.25, 1, 6, 8, 2.5, 3, 14, 16}, - ov::Shape {2}, + ov::Shape{2}, std::vector{-0.5, -2}), - PreluParams(ov::PartialShape {3, 2}, + PreluParams(ov::PartialShape{3, 2}, IN_ET, std::vector{-2, 3, -2, 1, -1, 0}, std::vector{1, 3, 1, 1, 0.5, 0}, - ov::Shape {2}, + ov::Shape{2}, std::vector{-0.5, -1}, "negative_slope"), - PreluParams(ov::PartialShape {2, 6}, + PreluParams(ov::PartialShape{2, 6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6, 1, 2, -3, -4, 5, 6}, std::vector{1, 2, -6, -8, 5, 6, 1, 2, -12, -8, 5, 6}, - ov::Shape {2, 6}, + ov::Shape{2, 6}, std::vector{2, 2, 2, 2, 2, 2, 1, 1, 4, 2, 1, 1}), - PreluParams(ov::PartialShape {2, 2, 2, 2}, + PreluParams(ov::PartialShape{2, 2, 2, 2}, IN_ET, std::vector{1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4}, std::vector{1, 2, -3, -8, 1, 2, -9, -16, 1, 2, -3, -8, 1, 2, -9, -16}, - ov::Shape {2, 1, 2}, + ov::Shape{2, 1, 2}, std::vector{1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 2, 2, 2}, + PreluParams(ov::PartialShape{2, 2, 2, 2}, IN_ET, std::vector{1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4}, std::vector{1, 2, -3, -8, 1, 2, -9, -16, 1, 2, -3, -8, 1, 2, -9, -16}, - ov::Shape {1, 2, 1, 2}, + ov::Shape{1, 2, 1, 2}, std::vector{1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 2, 6}, - IN_ET, - std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6, 1, 2, -3, -4, 5, 6, -2, 4, -6, -8, 10, 12}, - std::vector{1, 2, -9, -16, -5, 6, -2, -2, -9, -16, -5, -42, 1, 2, -9, -16, 5, 6, -2, 4, -18, -32, 10, 12}, - ov::Shape {2, 1, 6}, - std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {2, 3, 2}, + PreluParams( + ov::PartialShape{2, 2, 6}, + IN_ET, + std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6, 1, 2, -3, -4, 5, 6, -2, 4, -6, -8, 10, 12}, + std::vector{1, 2, -9, -16, -5, 6, -2, -2, -9, -16, -5, -42, + 1, 2, -9, -16, 5, 6, -2, 4, -18, -32, 10, 12}, + ov::Shape{2, 1, 6}, + std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), + PreluParams(ov::PartialShape{2, 3, 2}, IN_ET, std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6}, std::vector{1, 2, -9, -16, -5, 6, -1, -4, -9, -16, -25, -36}, - ov::Shape {2, 3, 2}, + ov::Shape{2, 3, 2}, std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {2, 1, 2}, + PreluParams(ov::PartialShape{2, 1, 2}, IN_ET, std::vector{-10, -10, -10, -10}, std::vector{-1, -100, -1, -100}, - ov::Shape {2}, + ov::Shape{2}, std::vector{0.1, 10}), - PreluParams(ov::PartialShape {1, 2, 1, 2}, + PreluParams(ov::PartialShape{1, 2, 1, 2}, IN_ET, std::vector{-10, -10, -10, -10}, std::vector{-1, -1, -100, -100}, - ov::Shape {2}, + ov::Shape{2}, std::vector{0.1, 10}), - PreluParams(ov::PartialShape {1, 5, 1, 1}, + PreluParams(ov::PartialShape{1, 5, 1, 1}, IN_ET, std::vector{-1, 0, -1, -1, -1}, std::vector{-1, 0, -3, -4, -5}, - ov::Shape {5}, + ov::Shape{5}, std::vector{1, 2, 3, 4, 5}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-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., -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{-0., -1., -2., -3., -4., -5., -6., -7., -8., -9., -10., -11., -12., -13., -14., - -15., -16., -17., -18., -19., -20., -21., -22., -23., -24., -25., -26., -27., -28., -29., - -30., -31., -32., -33., -34., -35., -36., -37., -38., -39., -40., -41., -42., -43., -44., - -45., -46., -47., -48., -49., -50., -51., -52., -53., -54., -55., -56., -57., -58., -59., - -60., -61., -62., -63., -64., -65., -66., -67., -68., -69., -70., -71., -72., -73., -74., - -75., -76., -77., -78., -79., -80., -81., -82., -83., -84., -85., -86., -87., -88., -89., - -90., -91., -92., -93., -94., -95., -96., -97., -98., -99., -100., -101., -102., -103., -104., - -105., -106., -107., -108., -109., -110., -111., -112., -113., -114., -115., -116., -117., -118., -119.}, - ov::Shape {2, 3, 4, 5}, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-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., -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{-0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., - -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., - -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., - -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., - -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., - -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., - -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4.}, - ov::Shape {5}, - std::vector{0, 1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-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., -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{-0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., - -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., - -2., -2., -2., -2., -2., -2., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., - -0., -0., -0., -0., -0., -0., -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., - -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2.}, - ov::Shape {3}, - std::vector{0, 1, 2}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-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., -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{-0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., - -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., - -2., -2., -2., -2., -2., -2., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., - -0., -0., -0., -0., -0., -0., -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., - -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2.}, - ov::Shape {3, 1, 1}, - std::vector{0, 1, 2}) - }; + PreluParams( + ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-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., -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{-0., -1., -2., -3., -4., -5., -6., -7., -8., -9., -10., -11., + -12., -13., -14., -15., -16., -17., -18., -19., -20., -21., -22., -23., + -24., -25., -26., -27., -28., -29., -30., -31., -32., -33., -34., -35., + -36., -37., -38., -39., -40., -41., -42., -43., -44., -45., -46., -47., + -48., -49., -50., -51., -52., -53., -54., -55., -56., -57., -58., -59., + -60., -61., -62., -63., -64., -65., -66., -67., -68., -69., -70., -71., + -72., -73., -74., -75., -76., -77., -78., -79., -80., -81., -82., -83., + -84., -85., -86., -87., -88., -89., -90., -91., -92., -93., -94., -95., + -96., -97., -98., -99., -100., -101., -102., -103., -104., -105., -106., -107., + -108., -109., -110., -111., -112., -113., -114., -115., -116., -117., -118., -119.}, + ov::Shape{2, 3, 4, 5}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119}), + PreluParams( + ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-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., -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{-0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., + -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., + -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., + -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., + -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., + -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., + -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4.}, + ov::Shape{5}, + std::vector{0, 1, 2, 3, 4}), + PreluParams( + ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-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., -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{-0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., + -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., + -2., -2., -2., -2., -2., -2., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., + -0., -0., -0., -0., -0., -0., -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., + -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2.}, + ov::Shape{3}, + std::vector{0, 1, 2}), + PreluParams( + ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-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., -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{-0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., + -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., + -2., -2., -2., -2., -2., -2., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., + -0., -0., -0., -0., -0., -0., -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., + -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2.}, + ov::Shape{3, 1, 1}, + std::vector{0, 1, 2})}; return preluParams; } @@ -255,157 +270,150 @@ template std::vector generatePreluI8Params() { using T = typename element_type_traits::value_type; - std::vector preluParams { - PreluParams(ov::PartialShape {6}, + std::vector preluParams{ + PreluParams(ov::PartialShape{6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6}, std::vector{1, 2, -6, -8, 5, 6}, - ov::Shape {1}, + ov::Shape{1}, std::vector{2}), - PreluParams(ov::PartialShape {6}, + PreluParams(ov::PartialShape{6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6}, std::vector{1, 2, -12, -20, 5, 6}, - ov::Shape {6}, + ov::Shape{6}, std::vector{2, 3, 4, 5, 6, 7}), - PreluParams(ov::PartialShape {3, 2}, + PreluParams(ov::PartialShape{3, 2}, IN_ET, std::vector{-2, 3, -2, 1, -1, 0}, std::vector{0, 3, 0, 1, 0, 0}, - ov::Shape {2}, + ov::Shape{2}, std::vector{0, 1}), - PreluParams(ov::PartialShape {2, 6}, + PreluParams(ov::PartialShape{2, 6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6, 7, 8, -9, -10, 11, 12}, std::vector{1, 2, -9, -16, 5, 6, 7, 8, -27, -40, 11, 12}, - ov::Shape {6}, + ov::Shape{6}, std::vector{1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {2, 6}, + PreluParams(ov::PartialShape{2, 6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6, 1, 2, -3, -4, 5, 6}, std::vector{1, 2, -6, -8, 5, 6, 1, 2, -12, -8, 5, 6}, - ov::Shape {2, 6}, + ov::Shape{2, 6}, std::vector{2, 2, 2, 2, 2, 2, 1, 1, 4, 2, 1, 1}), - PreluParams(ov::PartialShape {2, 2, 2, 2}, + PreluParams(ov::PartialShape{2, 2, 2, 2}, IN_ET, std::vector{1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4}, std::vector{1, 2, -3, -8, 1, 2, -9, -16, 1, 2, -3, -8, 1, 2, -9, -16}, - ov::Shape {2, 1, 2}, + ov::Shape{2, 1, 2}, std::vector{1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 2, 2, 2}, + PreluParams(ov::PartialShape{2, 2, 2, 2}, IN_ET, std::vector{1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4}, std::vector{1, 2, -3, -8, 1, 2, -9, -16, 1, 2, -3, -8, 1, 2, -9, -16}, - ov::Shape {1, 2, 1, 2}, + ov::Shape{1, 2, 1, 2}, std::vector{1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 2, 6}, - IN_ET, - std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6, 1, 2, -3, -4, 5, 6, -2, 4, -6, -8, 10, 12}, - std::vector{1, 2, -9, -16, -5, 6, -2, -2, -9, -16, -5, -42, 1, 2, -9, -16, 5, 6, -2, 4, -18, -32, 10, 12}, - ov::Shape {2, 1, 6}, - std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {2, 3, 2}, + PreluParams( + ov::PartialShape{2, 2, 6}, + IN_ET, + std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6, 1, 2, -3, -4, 5, 6, -2, 4, -6, -8, 10, 12}, + std::vector{1, 2, -9, -16, -5, 6, -2, -2, -9, -16, -5, -42, + 1, 2, -9, -16, 5, 6, -2, 4, -18, -32, 10, 12}, + ov::Shape{2, 1, 6}, + std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), + PreluParams(ov::PartialShape{2, 3, 2}, IN_ET, std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6}, std::vector{1, 2, -9, -16, -5, 6, -1, -4, -9, -16, -25, -36}, - ov::Shape {2, 3, 2}, + ov::Shape{2, 3, 2}, std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {1, 5, 1, 1}, + PreluParams(ov::PartialShape{1, 5, 1, 1}, IN_ET, std::vector{-1, 0, -1, -1, -1}, std::vector{-1, 0, -3, -4, -5}, - ov::Shape {5}, + ov::Shape{5}, std::vector{1, 2, 3, 4, 5}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-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, -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{-0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, - -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, - -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44, - -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, - -60, -61, -62, -63, -64, -65, -66, -67, -68, -69, -70, -71, -72, -73, -74, - -75, -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, -87, -88, -89, - -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, -100, -101, -102, -103, -104, - -105, -106, -107, -108, -109, -110, -111, -112, -113, -114, -115, -116, -117, -118, -119}, - ov::Shape {2, 3, 4, 5}, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-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, -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{-0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, - -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, - -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, - -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, - -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, - -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, - -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4}, - ov::Shape {5}, + PreluParams( + ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-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, -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{-0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, + -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, + -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44, + -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, + -60, -61, -62, -63, -64, -65, -66, -67, -68, -69, -70, -71, -72, -73, -74, + -75, -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, -87, -88, -89, + -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, -100, -101, -102, -103, -104, + -105, -106, -107, -108, -109, -110, -111, -112, -113, -114, -115, -116, -117, -118, -119}, + ov::Shape{2, 3, 4, 5}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119}), + PreluParams(ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-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, -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{-0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, + -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, + -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, + -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, + -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, + -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4}, + ov::Shape{5}, std::vector{0, 1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-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, -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{-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, - -0, -0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, - -0, -0, -0, -0, -0, -0, -0, -0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2}, - ov::Shape {3}, + PreluParams(ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-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, -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{-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2}, + ov::Shape{3}, std::vector{0, 1, 2}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-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, -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{-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, - -0, -0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, - -0, -0, -0, -0, -0, -0, -0, -0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2}, - ov::Shape {3, 1, 1}, - std::vector{0, 1, 2}) - }; + PreluParams(ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-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, -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{-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2}, + ov::Shape{3, 1, 1}, + std::vector{0, 1, 2})}; return preluParams; } std::vector generatePreluCombinedParams() { - const std::vector> preluTypeParams { - generatePreluFloatParams(), - generatePreluFloatParams(), - generatePreluFloatParams(), - generatePreluI8Params() - }; + const std::vector> preluTypeParams{generatePreluFloatParams(), + generatePreluFloatParams(), + generatePreluFloatParams(), + generatePreluI8Params()}; std::vector combinedParams; for (const auto& params : preluTypeParams) { @@ -414,7 +422,9 @@ std::vector generatePreluCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Prelu_With_Hardcoded_Refs, ReferencePreluLayerTest, - testing::ValuesIn(generatePreluCombinedParams()), ReferencePreluLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Prelu_With_Hardcoded_Refs, + ReferencePreluLayerTest, + testing::ValuesIn(generatePreluCombinedParams()), + ReferencePreluLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/prior_box_clustered.cpp b/src/plugins/template/tests/functional/op_reference/prior_box_clustered.cpp index cecf1055276cfc..9097c3a2019f8b 100644 --- a/src/plugins/template/tests/functional/op_reference/prior_box_clustered.cpp +++ b/src/plugins/template/tests/functional/op_reference/prior_box_clustered.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/prior_box.hpp" #include "base_reference_test.hpp" +#include "openvino/op/prior_box.hpp" #include "openvino/opsets/opset1.hpp" using namespace reference_tests; @@ -17,9 +17,11 @@ struct PriorBoxClusteredParams { PriorBoxClusteredParams(const std::vector& widths, const std::vector& heights, const bool clip, - const ov::Shape& layerShapeShape, const ov::Shape& imageShapeShape, + const ov::Shape& layerShapeShape, + const ov::Shape& imageShapeShape, const ov::element::Type& iType, - const std::vector& layerShapeValues, const std::vector& imageShapeValues, + const std::vector& layerShapeValues, + const std::vector& imageShapeValues, const std::vector& oValues, const std::vector& variances = {}, const std::string& testcaseName = "") @@ -31,12 +33,12 @@ struct PriorBoxClusteredParams { imageShapeData(CreateTensor(iType, imageShapeValues)), refData(CreateTensor(outType, oValues)), testcaseName(testcaseName) { - attrs.widths = widths; - attrs.heights = heights; - attrs.clip = clip; - if ( variances.size() != 0) - attrs.variances = variances; - } + attrs.widths = widths; + attrs.heights = heights; + attrs.clip = clip; + if (variances.size() != 0) + attrs.variances = variances; + } ov::op::v0::PriorBoxClustered::Attributes attrs; ov::Shape layerShapeShape; @@ -49,7 +51,8 @@ struct PriorBoxClusteredParams { std::string testcaseName; }; -class ReferencePriorBoxClusteredLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferencePriorBoxClusteredLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -72,10 +75,12 @@ class ReferencePriorBoxClusteredLayerTest : public testing::TestWithParam CreateFunction(const PriorBoxClusteredParams& params) { - auto LS = std::make_shared(params.inType, params.layerShapeShape, params.layerShapeData.data()); - auto IS = std::make_shared(params.inType, params.imageShapeShape, params.imageShapeData.data()); + auto LS = + std::make_shared(params.inType, params.layerShapeShape, params.layerShapeData.data()); + auto IS = + std::make_shared(params.inType, params.imageShapeShape, params.imageShapeData.data()); const auto PriorBoxClustered = std::make_shared(LS, IS, params.attrs); - return std::make_shared(NodeVector {PriorBoxClustered}, ParameterVector {}); + return std::make_shared(NodeVector{PriorBoxClustered}, ParameterVector{}); } }; @@ -87,30 +92,40 @@ template std::vector generatePriorBoxClusteredFloatParams() { using T = typename element_type_traits::value_type; - std::vector priorBoxClusteredParams { - PriorBoxClusteredParams({3.0f}, {3.0f}, true, - {2}, {2}, - IN_ET, - std::vector{2, 2}, - std::vector{10, 10}, - std::vector{0, 0, 0.15f, 0.15f, 0.34999f, 0, 0.64999f, 0.15f, 0, 0.34999f, 0.15f, - 0.64999f, 0.34999f, 0.34999f, 0.64999f, 0.64999f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, - 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f}), - PriorBoxClusteredParams({3.0f}, {3.0f}, true, - {2}, {2}, - IN_ET, - std::vector{2, 2}, - std::vector{10, 10}, - std::vector{0, 0, 0.15f, 0.15f, 0.34999f, 0, 0.64999f, 0.15f, 0, 0.34999f, 0.15f, - 0.64999f, 0.34999f, 0.34999f, 0.64999f, 0.64999f, 0.1f, 0.2f, 0.3f, 0.4f, 0.1f, 0.2f, - 0.3f, 0.4f, 0.1f, 0.2f, 0.3f, 0.4f, 0.1f, 0.2f, 0.3f, 0.4f}, - {0.1f, 0.2f, 0.3f, 0.4f}), + std::vector priorBoxClusteredParams{ + PriorBoxClusteredParams( + {3.0f}, + {3.0f}, + true, + {2}, + {2}, + IN_ET, + std::vector{2, 2}, + std::vector{10, 10}, + std::vector{0, 0, 0.15f, 0.15f, 0.34999f, 0, 0.64999f, 0.15f, + 0, 0.34999f, 0.15f, 0.64999f, 0.34999f, 0.34999f, 0.64999f, 0.64999f, + 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, + 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f}), + PriorBoxClusteredParams( + {3.0f}, + {3.0f}, + true, + {2}, + {2}, + IN_ET, + std::vector{2, 2}, + std::vector{10, 10}, + std::vector{0, 0, 0.15f, 0.15f, 0.34999f, 0, 0.64999f, 0.15f, + 0, 0.34999f, 0.15f, 0.64999f, 0.34999f, 0.34999f, 0.64999f, 0.64999f, + 0.1f, 0.2f, 0.3f, 0.4f, 0.1f, 0.2f, 0.3f, 0.4f, + 0.1f, 0.2f, 0.3f, 0.4f, 0.1f, 0.2f, 0.3f, 0.4f}, + {0.1f, 0.2f, 0.3f, 0.4f}), }; return priorBoxClusteredParams; } std::vector generatePriorBoxClusteredCombinedParams() { - const std::vector> priorBoxClusteredTypeParams { + const std::vector> priorBoxClusteredTypeParams{ generatePriorBoxClusteredFloatParams(), generatePriorBoxClusteredFloatParams(), generatePriorBoxClusteredFloatParams(), @@ -119,7 +134,7 @@ std::vector generatePriorBoxClusteredCombinedParams() { generatePriorBoxClusteredFloatParams(), generatePriorBoxClusteredFloatParams(), generatePriorBoxClusteredFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : priorBoxClusteredTypeParams) { @@ -128,7 +143,9 @@ std::vector generatePriorBoxClusteredCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_PriorBoxClustered_With_Hardcoded_Refs, ReferencePriorBoxClusteredLayerTest, - testing::ValuesIn(generatePriorBoxClusteredCombinedParams()), ReferencePriorBoxClusteredLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_PriorBoxClustered_With_Hardcoded_Refs, + ReferencePriorBoxClusteredLayerTest, + testing::ValuesIn(generatePriorBoxClusteredCombinedParams()), + ReferencePriorBoxClusteredLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/proposal.cpp b/src/plugins/template/tests/functional/op_reference/proposal.cpp index 119d29b03e5b8a..431ded8ca1a5a7 100644 --- a/src/plugins/template/tests/functional/op_reference/proposal.cpp +++ b/src/plugins/template/tests/functional/op_reference/proposal.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/proposal.hpp" + #include -#include "openvino/op/proposal.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,58 +15,58 @@ namespace { struct ProposalV1Params { template ProposalV1Params(const float iou_threshold, - const int min_bbox_size, - const int feature_stride, - const int pre_nms_topn, - const int post_nms_topn, - const size_t image_shape_num, - const size_t image_h, - const size_t image_w, - const size_t image_z, - const std::vector& ratios, - const std::vector& scales, - const size_t batch_size, - const size_t anchor_num, - const size_t feat_map_height, - const size_t feat_map_width, - const ov::element::Type& iType, - const std::vector& clsScoreValues, - const std::vector& bboxPredValues, - const std::vector& proposalValues, - const std::string& test_name = "") + const int min_bbox_size, + const int feature_stride, + const int pre_nms_topn, + const int post_nms_topn, + const size_t image_shape_num, + const size_t image_h, + const size_t image_w, + const size_t image_z, + const std::vector& ratios, + const std::vector& scales, + const size_t batch_size, + const size_t anchor_num, + const size_t feat_map_height, + const size_t feat_map_width, + const ov::element::Type& iType, + const std::vector& clsScoreValues, + const std::vector& bboxPredValues, + const std::vector& proposalValues, + const std::string& test_name = "") : inType(iType), outType(iType), clsScoreData(CreateTensor(iType, clsScoreValues)), bboxPredData(CreateTensor(iType, bboxPredValues)), refProposalData(CreateTensor(iType, proposalValues)), testcaseName(test_name) { - clsScoreShape = Shape{batch_size, anchor_num * 2, feat_map_height, feat_map_width}; - bboxPredShape = Shape{batch_size, anchor_num * 4, feat_map_height, feat_map_width}; - imageShapeShape = Shape{image_shape_num}; + clsScoreShape = Shape{batch_size, anchor_num * 2, feat_map_height, feat_map_width}; + bboxPredShape = Shape{batch_size, anchor_num * 4, feat_map_height, feat_map_width}; + imageShapeShape = Shape{image_shape_num}; - attrs.base_size = min_bbox_size; - attrs.min_size = min_bbox_size; - attrs.pre_nms_topn = pre_nms_topn; - attrs.post_nms_topn = post_nms_topn; - attrs.nms_thresh = iou_threshold; - attrs.feat_stride = feature_stride; - attrs.min_size = min_bbox_size; - attrs.ratio = ratios; - attrs.scale = scales; - attrs.clip_before_nms = true; - attrs.clip_after_nms = false; - attrs.normalize = false; - attrs.box_size_scale = 1.0f; - attrs.box_coordinate_scale = 1.0f; - attrs.framework = ""; - attrs.infer_probs = false; + attrs.base_size = min_bbox_size; + attrs.min_size = min_bbox_size; + attrs.pre_nms_topn = pre_nms_topn; + attrs.post_nms_topn = post_nms_topn; + attrs.nms_thresh = iou_threshold; + attrs.feat_stride = feature_stride; + attrs.min_size = min_bbox_size; + attrs.ratio = ratios; + attrs.scale = scales; + attrs.clip_before_nms = true; + attrs.clip_after_nms = false; + attrs.normalize = false; + attrs.box_size_scale = 1.0f; + attrs.box_coordinate_scale = 1.0f; + attrs.framework = ""; + attrs.infer_probs = false; - std::vector inputShapeValues; - inputShapeValues.push_back(static_cast(image_h)); - inputShapeValues.push_back(static_cast(image_w)); - inputShapeValues.push_back(static_cast(image_z)); - imageShapeData = CreateTensor(iType, inputShapeValues); - } + std::vector inputShapeValues; + inputShapeValues.push_back(static_cast(image_h)); + inputShapeValues.push_back(static_cast(image_w)); + inputShapeValues.push_back(static_cast(image_z)); + imageShapeData = CreateTensor(iType, inputShapeValues); + } ov::op::v0::Proposal::Attributes attrs; ov::PartialShape clsScoreShape; @@ -83,26 +84,26 @@ struct ProposalV1Params { struct ProposalV4Params { template ProposalV4Params(const float iou_threshold, - const int min_bbox_size, - const int feature_stride, - const int pre_nms_topn, - const int post_nms_topn, - const size_t image_shape_num, - const size_t image_h, - const size_t image_w, - const size_t image_z, - const std::vector& ratios, - const std::vector& scales, - const size_t batch_size, - const size_t anchor_num, - const size_t feat_map_height, - const size_t feat_map_width, - const ov::element::Type& iType, - const std::vector& clsScoreValues, - const std::vector& bboxPredValues, - const std::vector& proposalValues, - const std::vector& probsValues, - const std::string& test_name = "") + const int min_bbox_size, + const int feature_stride, + const int pre_nms_topn, + const int post_nms_topn, + const size_t image_shape_num, + const size_t image_h, + const size_t image_w, + const size_t image_z, + const std::vector& ratios, + const std::vector& scales, + const size_t batch_size, + const size_t anchor_num, + const size_t feat_map_height, + const size_t feat_map_width, + const ov::element::Type& iType, + const std::vector& clsScoreValues, + const std::vector& bboxPredValues, + const std::vector& proposalValues, + const std::vector& probsValues, + const std::string& test_name = "") : inType(iType), outType(iType), clsScoreData(CreateTensor(iType, clsScoreValues)), @@ -110,33 +111,33 @@ struct ProposalV4Params { refProposalData(CreateTensor(iType, proposalValues)), refProbsData(CreateTensor(iType, probsValues)), testcaseName(test_name) { - clsScoreShape = Shape{batch_size, anchor_num * 2, feat_map_height, feat_map_width}; - bboxPredShape = Shape{batch_size, anchor_num * 4, feat_map_height, feat_map_width}; - imageShapeShape = Shape{image_shape_num}; + clsScoreShape = Shape{batch_size, anchor_num * 2, feat_map_height, feat_map_width}; + bboxPredShape = Shape{batch_size, anchor_num * 4, feat_map_height, feat_map_width}; + imageShapeShape = Shape{image_shape_num}; - attrs.base_size = min_bbox_size; - attrs.min_size = min_bbox_size; - attrs.pre_nms_topn = pre_nms_topn; - attrs.post_nms_topn = post_nms_topn; - attrs.nms_thresh = iou_threshold; - attrs.feat_stride = feature_stride; - attrs.min_size = min_bbox_size; - attrs.ratio = ratios; - attrs.scale = scales; - attrs.clip_before_nms = true; - attrs.clip_after_nms = false; - attrs.normalize = false; - attrs.box_size_scale = 1.0f; - attrs.box_coordinate_scale = 1.0f; - attrs.framework = ""; - attrs.infer_probs = true; + attrs.base_size = min_bbox_size; + attrs.min_size = min_bbox_size; + attrs.pre_nms_topn = pre_nms_topn; + attrs.post_nms_topn = post_nms_topn; + attrs.nms_thresh = iou_threshold; + attrs.feat_stride = feature_stride; + attrs.min_size = min_bbox_size; + attrs.ratio = ratios; + attrs.scale = scales; + attrs.clip_before_nms = true; + attrs.clip_after_nms = false; + attrs.normalize = false; + attrs.box_size_scale = 1.0f; + attrs.box_coordinate_scale = 1.0f; + attrs.framework = ""; + attrs.infer_probs = true; - std::vector inputShapeValues; - inputShapeValues.push_back(static_cast(image_h)); - inputShapeValues.push_back(static_cast(image_w)); - inputShapeValues.push_back(static_cast(image_z)); - imageShapeData = CreateTensor(iType, inputShapeValues); - } + std::vector inputShapeValues; + inputShapeValues.push_back(static_cast(image_h)); + inputShapeValues.push_back(static_cast(image_w)); + inputShapeValues.push_back(static_cast(image_z)); + imageShapeData = CreateTensor(iType, inputShapeValues); + } ov::op::v4::Proposal::Attributes attrs; ov::PartialShape clsScoreShape; @@ -182,8 +183,10 @@ class ReferenceProposalV1LayerTest : public testing::TestWithParam(params.inType, params.clsScoreShape); const auto bbox_deltas_param = std::make_shared(params.inType, params.bboxPredShape); const auto image_shape_param = std::make_shared(params.inType, params.imageShapeShape); - const auto Proposal = std::make_shared(class_probs_param, bbox_deltas_param, image_shape_param, params.attrs); - return std::make_shared(NodeVector {Proposal}, ParameterVector {class_probs_param, bbox_deltas_param, image_shape_param}); + const auto Proposal = + std::make_shared(class_probs_param, bbox_deltas_param, image_shape_param, params.attrs); + return std::make_shared(NodeVector{Proposal}, + ParameterVector{class_probs_param, bbox_deltas_param, image_shape_param}); } }; @@ -217,8 +220,10 @@ class ReferenceProposalV4LayerTest : public testing::TestWithParam(params.inType, params.clsScoreShape); const auto bbox_deltas_param = std::make_shared(params.inType, params.bboxPredShape); const auto image_shape_param = std::make_shared(params.inType, params.imageShapeShape); - const auto Proposal = std::make_shared(class_probs_param, bbox_deltas_param, image_shape_param, params.attrs); - return std::make_shared(Proposal->outputs(), ParameterVector {class_probs_param, bbox_deltas_param, image_shape_param}); + const auto Proposal = + std::make_shared(class_probs_param, bbox_deltas_param, image_shape_param, params.attrs); + return std::make_shared(Proposal->outputs(), + ParameterVector{class_probs_param, bbox_deltas_param, image_shape_param}); } }; @@ -234,99 +239,115 @@ template std::vector generateProposalV1Params() { using T = typename element_type_traits::value_type; - std::vector proposalV1Params { - ProposalV1Params(0.7f, 16, 16, 6000, 10, // iou_threshold, min_nnox_size, feature_stride,pre_nms_topn, post_nms_topn - 3, 210, 350, 1, // image_shape_num, image_h, image_w, image_z - {0.5f}, // ratios - {32.0f}, //scales - 1, 1, 10, 10, // batch_size, anchor_num, feat_map_height, feat_map_width - IN_ET, - std::vector{ - 0.000240f, 0.003802f, 0.111432f, 0.000503f, 0.007887f, 0.144701f, 0.399074f, 0.004680f, // 0 - 0.139741f, 0.002386f, 0.030003f, 0.276552f, 0.000267f, 0.022971f, 0.287953f, 0.050235f, // 8 - 0.002580f, 0.206311f, 0.000146f, 0.009656f, 0.175462f, 0.000147f, 0.014718f, 0.272348f, // 16 - 0.065199f, 0.003286f, 0.185335f, 0.003720f, 0.025932f, 0.251401f, 0.001465f, 0.090447f, // 24 - 0.488469f, 0.092259f, 0.019306f, 0.379091f, 0.005311f, 0.010369f, 0.087615f, 0.042003f, // 32 - 0.073871f, 0.416763f, 0.044282f, 0.069776f, 0.313032f, 0.000457f, 0.017346f, 0.089762f, // 40 - 0.000820f, 0.103986f, 0.367993f, 0.026315f, 0.035701f, 0.299252f, 0.000135f, 0.017825f, // 48 - 0.150119f, 0.000076f, 0.050511f, 0.269601f, 0.026680f, 0.003541f, 0.189765f, 0.000051f, // 56 - 0.004315f, 0.193150f, 0.000032f, 0.007254f, 0.185557f, 0.051526f, 0.000657f, 0.117579f, // 64 - 0.000115f, 0.010179f, 0.293187f, 0.000025f, 0.006505f, 0.175345f, 0.032587f, 0.000469f, // 72 - 0.098443f, 0.000121f, 0.009600f, 0.322782f, 0.000032f, 0.004543f, 0.166860f, 0.044911f, // 80 - 0.000187f, 0.102691f, 0.000242f, 0.005502f, 0.107865f, 0.000191f, 0.005336f, 0.086893f, // 88 - 0.078422f, 0.000345f, 0.079096f, 0.000281f, 0.016388f, 0.214072f, 0.000107f, 0.012027f, // 96 - 0.192754f, 0.049531f, 0.000386f, 0.149893f, 0.000374f, 0.016965f, 0.204781f, 0.000163f, // 104 - 0.016272f, 0.215277f, 0.032298f, 0.000857f, 0.133426f, 0.000614f, 0.020215f, 0.165789f, // 112 - 0.000225f, 0.036951f, 0.262195f, 0.087675f, 0.004596f, 0.147764f, 0.000219f, 0.010502f, // 120 - 0.163394f, 0.000152f, 0.023116f, 0.241702f, 0.081800f, 0.002197f, 0.146637f, 0.000193f, // 128 - 0.012017f, 0.133497f, 0.000375f, 0.028605f, 0.309179f, 0.065962f, 0.005508f, 0.155530f, // 136 - 0.000186f, 0.004540f, 0.079319f, 0.000799f, 0.031003f, 0.303045f, 0.051473f, 0.017770f, // 144 - 0.206188f, 0.000202f, 0.004291f, 0.061095f, 0.001109f, 0.018094f, 0.156639f, 0.026062f, // 152 - 0.005270f, 0.148651f, 0.000026f, 0.007300f, 0.096013f, 0.000383f, 0.022134f, 0.129511f, // 160 - 0.080882f, 0.003416f, 0.129922f, 0.000037f, 0.010040f, 0.130007f, 0.000116f, 0.014904f, // 168 - 0.171423f, 0.082893f, 0.000921f, 0.154976f, 0.000142f, 0.016552f, 0.209696f, 0.000227f, // 176 - 0.022418f, 0.228501f, 0.111712f, 0.001987f, 0.158164f, 0.001200f, 0.027049f, 0.308222f, // 184 - 0.001366f, 0.038146f, 0.287945f, 0.072526f, 0.016064f, 0.257895f, 0.000595f, 0.016962f, // 192 - }, - std::vector{ - 0.006756f, -0.055635f, 0.030843f, 0.007482f, 0.009056f, -0.041824f, 0.119722f, 0.168988f, 0.002822f, - 0.039733f, 0.109005f, 0.245152f, -0.013196f, -0.018222f, -0.170122f, -0.374904f, -0.005455f, -0.034059f, - -0.006787f, 0.072005f, -0.017933f, -0.007358f, 0.034149f, 0.123846f, 0.128319f, 0.016107f, -0.615487f, - -1.235094f, -0.024253f, -0.019406f, 0.134142f, 0.157853f, -0.021119f, 0.007383f, 0.089365f, 0.092854f, - 0.062491f, 0.002366f, 0.122464f, -0.003326f, 0.015468f, -0.034088f, 0.079009f, 0.075483f, 0.011972f, - 0.042427f, 0.106865f, 0.158754f, 0.071211f, -0.034009f, 0.007985f, -0.441477f, 0.009046f, -0.028515f, - 0.095372f, 0.119598f, -0.007553f, -0.0072f, 0.105072f, 0.084314f, 0.23268f, -0.02906f, -0.408454f, - -1.13439f, 0.016202f, -0.037859f, 0.130873f, 0.129652f, 0.002064f, -0.011969f, 0.171623f, 0.050218f, - 0.113831f, 0.028922f, 0.017785f, 0.059708f, 0.037658f, -0.011245f, 0.097197f, 0.137491f, 0.024218f, - 0.04739f, 0.091978f, 0.217333f, 0.088418f, -0.004662f, -0.095168f, -0.397928f, 0.02639f, -0.008501f, - 0.068487f, 0.108465f, 0.020069f, 0.018829f, 0.040206f, 0.068473f, 0.226458f, -0.072871f, -0.672384f, - -1.447558f, 0.039598f, 0.017471f, 0.187288f, 0.08409f, 0.017152f, -0.00516f, 0.183419f, 0.068469f, - 0.063944f, 0.160725f, -0.022493f, -0.132291f, 0.010542f, 0.036318f, 0.074042f, -0.013323f, 0.00808f, - 0.060365f, 0.120566f, 0.21866f, 0.046324f, 0.088741f, 0.029469f, -0.517183f, 0.00917f, 0.011915f, - 0.053674f, 0.140168f, 0.0033f, 0.022759f, -0.006196f, 0.063839f, 0.083726f, -0.088385f, -0.57208f, - -1.454211f, 0.020655f, 0.010788f, 0.134951f, 0.109709f, 0.015445f, -0.015363f, 0.109153f, 0.051209f, - 0.024297f, 0.139126f, -0.12358f, -0.127979f, 0.004587f, 0.004751f, 0.047292f, 0.027066f, 0.011003f, - 0.069887f, 0.117052f, 0.267419f, 0.039306f, 0.077584f, 0.02579f, -0.496149f, -0.005569f, 0.015494f, - -0.011662f, 0.105549f, -0.007015f, 0.031984f, -0.075742f, 0.0852f, 0.023886f, -0.053107f, -0.325533f, - -1.329066f, 0.004688f, 0.034501f, 0.089317f, 0.042463f, 0.004212f, -0.015128f, 0.00892f, 0.028266f, - 0.009997f, 0.157822f, 0.020116f, -0.142337f, 0.008199f, 0.046564f, 0.083014f, 0.046307f, 0.006771f, - 0.084997f, 0.141935f, 0.228339f, -0.020308f, 0.077745f, -0.018319f, -0.522311f, 0.010432f, 0.024641f, - 0.020571f, 0.097148f, 0.002064f, 0.035053f, -0.121995f, 0.012222f, -0.030779f, 0.100481f, -0.331737f, - -1.257669f, -0.013079f, 0.021227f, 0.159949f, 0.120097f, 0.005765f, -0.012335f, -0.005268f, 0.042067f, - -0.043972f, 0.102556f, 0.180494f, -0.084721f, -0.011962f, 0.031302f, 0.112511f, 0.027557f, -0.002085f, - 0.082978f, 0.149409f, 0.195091f, -0.033731f, 0.019861f, -0.064047f, -0.471328f, -0.004093f, 0.016803f, - 0.044635f, 0.058912f, -0.018735f, 0.035536f, -0.050373f, -0.002794f, -0.086705f, 0.038435f, -0.301466f, - -1.071246f, -0.028247f, 0.018984f, 0.254702f, 0.141142f, -0.017522f, 0.014843f, 0.079391f, 0.079662f, - -0.051204f, 0.048419f, 0.235604f, -0.185797f, -0.019569f, 0.02678f, 0.162507f, 0.046435f, -0.004606f, - 0.08806f, 0.18634f, 0.193957f, -0.024333f, -0.01298f, -0.17977f, -0.65881f, -0.003778f, 0.007418f, - 0.065439f, 0.104549f, -0.027706f, 0.03301f, 0.057492f, 0.032019f, -0.135337f, 0.000269f, -0.250203f, - -1.181688f, -0.027022f, -0.006755f, 0.206848f, 0.129268f, -0.003529f, 0.013445f, 0.181484f, 0.139955f, - -0.036587f, 0.065824f, 0.288751f, -0.110813f, -0.015578f, 0.044818f, 0.17756f, 0.006914f, 0.002329f, - 0.068982f, 0.189079f, 0.184253f, 0.00301f, -0.039168f, -0.010855f, -0.393254f, 0.000028f, 0.001906f, - 0.07217f, 0.063305f, -0.026144f, 0.028842f, 0.139149f, 0.023377f, 0.023362f, 0.023559f, -0.145386f, - -0.863572f, -0.015749f, -0.021364f, 0.172571f, 0.078393f, -0.037253f, 0.014978f, 0.221502f, 0.189111f, - -0.048956f, 0.085409f, 0.325399f, -0.058294f, -0.028495f, 0.021663f, 0.19392f, 0.02706f, 0.006908f, - 0.065751f, 0.176395f, 0.138375f, 0.012418f, -0.031228f, -0.008762f, -0.427345f, -0.013677f, -0.002429f, - 0.069655f, 0.019505f, -0.036763f, 0.022528f, 0.201062f, 0.022205f, 0.024528f, 0.06241f, -0.076237f, - -0.840695f, -0.007268f, -0.027865f, 0.211056f, 0.074744f, -0.053563f, 0.006863f, 0.301432f, 0.192879f, - -0.021944f, 0.100535f, 0.19031f, -0.133746f, -0.006151f, 0.023944f, 0.13561f, -0.03259f, 0.000618f, - 0.063736f, 0.180904f, 0.12393f, 0.001275f, -0.0306f, -0.032822f, -0.496515f, 0.009757f, 0.014602f, - 0.004532f, -0.039969f, -0.015984f, 0.047726f, 0.099865f, 0.003163f, 0.026623f, 0.117951f, -0.076234f, - -0.811997f, 0.01301f, 0.020042f, 0.173756f, -0.036191f, -0.068887f, 0.0229f, 0.245465f, 0.214282f, - -0.011054f, 0.132813f, 0.241014f, -0.148763f, - }, - std::vector{ - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 209.000000f, // 0 - 0.000000f, 0.000000f, 0.000000f, 237.625443f, 209.000000f, // 5 - 0.000000f, 140.305511f, 0.000000f, 349.000000f, 209.000000f, // 10 - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 65.359818f, // 15 - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 130.324097f, // 20 - 0.000000f, 0.000000f, 15.562508f, 97.587891f, 181.224182f, // 25 - 0.000000f, 0.000000f, 68.539543f, 250.406708f, 209.000000f, // 30 - 0.000000f, 0.000000f, 0.000000f, 195.881531f, 99.841385f, // 35 - 0.000000f, 0.000000f, 0.000000f, 78.303986f, 209.000000f, // 40 - 0.000000f, 0.000000f, 0.000000f, 0.000000f, 209.000000f, // 45 - }), + std::vector proposalV1Params{ + ProposalV1Params( + 0.7f, + 16, + 16, + 6000, + 10, // iou_threshold, min_nnox_size, feature_stride,pre_nms_topn, post_nms_topn + 3, + 210, + 350, + 1, // image_shape_num, image_h, image_w, image_z + {0.5f}, // ratios + {32.0f}, // scales + 1, + 1, + 10, + 10, // batch_size, anchor_num, feat_map_height, feat_map_width + IN_ET, + std::vector{ + 0.000240f, 0.003802f, 0.111432f, 0.000503f, 0.007887f, 0.144701f, 0.399074f, 0.004680f, // 0 + 0.139741f, 0.002386f, 0.030003f, 0.276552f, 0.000267f, 0.022971f, 0.287953f, 0.050235f, // 8 + 0.002580f, 0.206311f, 0.000146f, 0.009656f, 0.175462f, 0.000147f, 0.014718f, 0.272348f, // 16 + 0.065199f, 0.003286f, 0.185335f, 0.003720f, 0.025932f, 0.251401f, 0.001465f, 0.090447f, // 24 + 0.488469f, 0.092259f, 0.019306f, 0.379091f, 0.005311f, 0.010369f, 0.087615f, 0.042003f, // 32 + 0.073871f, 0.416763f, 0.044282f, 0.069776f, 0.313032f, 0.000457f, 0.017346f, 0.089762f, // 40 + 0.000820f, 0.103986f, 0.367993f, 0.026315f, 0.035701f, 0.299252f, 0.000135f, 0.017825f, // 48 + 0.150119f, 0.000076f, 0.050511f, 0.269601f, 0.026680f, 0.003541f, 0.189765f, 0.000051f, // 56 + 0.004315f, 0.193150f, 0.000032f, 0.007254f, 0.185557f, 0.051526f, 0.000657f, 0.117579f, // 64 + 0.000115f, 0.010179f, 0.293187f, 0.000025f, 0.006505f, 0.175345f, 0.032587f, 0.000469f, // 72 + 0.098443f, 0.000121f, 0.009600f, 0.322782f, 0.000032f, 0.004543f, 0.166860f, 0.044911f, // 80 + 0.000187f, 0.102691f, 0.000242f, 0.005502f, 0.107865f, 0.000191f, 0.005336f, 0.086893f, // 88 + 0.078422f, 0.000345f, 0.079096f, 0.000281f, 0.016388f, 0.214072f, 0.000107f, 0.012027f, // 96 + 0.192754f, 0.049531f, 0.000386f, 0.149893f, 0.000374f, 0.016965f, 0.204781f, 0.000163f, // 104 + 0.016272f, 0.215277f, 0.032298f, 0.000857f, 0.133426f, 0.000614f, 0.020215f, 0.165789f, // 112 + 0.000225f, 0.036951f, 0.262195f, 0.087675f, 0.004596f, 0.147764f, 0.000219f, 0.010502f, // 120 + 0.163394f, 0.000152f, 0.023116f, 0.241702f, 0.081800f, 0.002197f, 0.146637f, 0.000193f, // 128 + 0.012017f, 0.133497f, 0.000375f, 0.028605f, 0.309179f, 0.065962f, 0.005508f, 0.155530f, // 136 + 0.000186f, 0.004540f, 0.079319f, 0.000799f, 0.031003f, 0.303045f, 0.051473f, 0.017770f, // 144 + 0.206188f, 0.000202f, 0.004291f, 0.061095f, 0.001109f, 0.018094f, 0.156639f, 0.026062f, // 152 + 0.005270f, 0.148651f, 0.000026f, 0.007300f, 0.096013f, 0.000383f, 0.022134f, 0.129511f, // 160 + 0.080882f, 0.003416f, 0.129922f, 0.000037f, 0.010040f, 0.130007f, 0.000116f, 0.014904f, // 168 + 0.171423f, 0.082893f, 0.000921f, 0.154976f, 0.000142f, 0.016552f, 0.209696f, 0.000227f, // 176 + 0.022418f, 0.228501f, 0.111712f, 0.001987f, 0.158164f, 0.001200f, 0.027049f, 0.308222f, // 184 + 0.001366f, 0.038146f, 0.287945f, 0.072526f, 0.016064f, 0.257895f, 0.000595f, 0.016962f, // 192 + }, + std::vector{ + 0.006756f, -0.055635f, 0.030843f, 0.007482f, 0.009056f, -0.041824f, 0.119722f, 0.168988f, + 0.002822f, 0.039733f, 0.109005f, 0.245152f, -0.013196f, -0.018222f, -0.170122f, -0.374904f, + -0.005455f, -0.034059f, -0.006787f, 0.072005f, -0.017933f, -0.007358f, 0.034149f, 0.123846f, + 0.128319f, 0.016107f, -0.615487f, -1.235094f, -0.024253f, -0.019406f, 0.134142f, 0.157853f, + -0.021119f, 0.007383f, 0.089365f, 0.092854f, 0.062491f, 0.002366f, 0.122464f, -0.003326f, + 0.015468f, -0.034088f, 0.079009f, 0.075483f, 0.011972f, 0.042427f, 0.106865f, 0.158754f, + 0.071211f, -0.034009f, 0.007985f, -0.441477f, 0.009046f, -0.028515f, 0.095372f, 0.119598f, + -0.007553f, -0.0072f, 0.105072f, 0.084314f, 0.23268f, -0.02906f, -0.408454f, -1.13439f, + 0.016202f, -0.037859f, 0.130873f, 0.129652f, 0.002064f, -0.011969f, 0.171623f, 0.050218f, + 0.113831f, 0.028922f, 0.017785f, 0.059708f, 0.037658f, -0.011245f, 0.097197f, 0.137491f, + 0.024218f, 0.04739f, 0.091978f, 0.217333f, 0.088418f, -0.004662f, -0.095168f, -0.397928f, + 0.02639f, -0.008501f, 0.068487f, 0.108465f, 0.020069f, 0.018829f, 0.040206f, 0.068473f, + 0.226458f, -0.072871f, -0.672384f, -1.447558f, 0.039598f, 0.017471f, 0.187288f, 0.08409f, + 0.017152f, -0.00516f, 0.183419f, 0.068469f, 0.063944f, 0.160725f, -0.022493f, -0.132291f, + 0.010542f, 0.036318f, 0.074042f, -0.013323f, 0.00808f, 0.060365f, 0.120566f, 0.21866f, + 0.046324f, 0.088741f, 0.029469f, -0.517183f, 0.00917f, 0.011915f, 0.053674f, 0.140168f, + 0.0033f, 0.022759f, -0.006196f, 0.063839f, 0.083726f, -0.088385f, -0.57208f, -1.454211f, + 0.020655f, 0.010788f, 0.134951f, 0.109709f, 0.015445f, -0.015363f, 0.109153f, 0.051209f, + 0.024297f, 0.139126f, -0.12358f, -0.127979f, 0.004587f, 0.004751f, 0.047292f, 0.027066f, + 0.011003f, 0.069887f, 0.117052f, 0.267419f, 0.039306f, 0.077584f, 0.02579f, -0.496149f, + -0.005569f, 0.015494f, -0.011662f, 0.105549f, -0.007015f, 0.031984f, -0.075742f, 0.0852f, + 0.023886f, -0.053107f, -0.325533f, -1.329066f, 0.004688f, 0.034501f, 0.089317f, 0.042463f, + 0.004212f, -0.015128f, 0.00892f, 0.028266f, 0.009997f, 0.157822f, 0.020116f, -0.142337f, + 0.008199f, 0.046564f, 0.083014f, 0.046307f, 0.006771f, 0.084997f, 0.141935f, 0.228339f, + -0.020308f, 0.077745f, -0.018319f, -0.522311f, 0.010432f, 0.024641f, 0.020571f, 0.097148f, + 0.002064f, 0.035053f, -0.121995f, 0.012222f, -0.030779f, 0.100481f, -0.331737f, -1.257669f, + -0.013079f, 0.021227f, 0.159949f, 0.120097f, 0.005765f, -0.012335f, -0.005268f, 0.042067f, + -0.043972f, 0.102556f, 0.180494f, -0.084721f, -0.011962f, 0.031302f, 0.112511f, 0.027557f, + -0.002085f, 0.082978f, 0.149409f, 0.195091f, -0.033731f, 0.019861f, -0.064047f, -0.471328f, + -0.004093f, 0.016803f, 0.044635f, 0.058912f, -0.018735f, 0.035536f, -0.050373f, -0.002794f, + -0.086705f, 0.038435f, -0.301466f, -1.071246f, -0.028247f, 0.018984f, 0.254702f, 0.141142f, + -0.017522f, 0.014843f, 0.079391f, 0.079662f, -0.051204f, 0.048419f, 0.235604f, -0.185797f, + -0.019569f, 0.02678f, 0.162507f, 0.046435f, -0.004606f, 0.08806f, 0.18634f, 0.193957f, + -0.024333f, -0.01298f, -0.17977f, -0.65881f, -0.003778f, 0.007418f, 0.065439f, 0.104549f, + -0.027706f, 0.03301f, 0.057492f, 0.032019f, -0.135337f, 0.000269f, -0.250203f, -1.181688f, + -0.027022f, -0.006755f, 0.206848f, 0.129268f, -0.003529f, 0.013445f, 0.181484f, 0.139955f, + -0.036587f, 0.065824f, 0.288751f, -0.110813f, -0.015578f, 0.044818f, 0.17756f, 0.006914f, + 0.002329f, 0.068982f, 0.189079f, 0.184253f, 0.00301f, -0.039168f, -0.010855f, -0.393254f, + 0.000028f, 0.001906f, 0.07217f, 0.063305f, -0.026144f, 0.028842f, 0.139149f, 0.023377f, + 0.023362f, 0.023559f, -0.145386f, -0.863572f, -0.015749f, -0.021364f, 0.172571f, 0.078393f, + -0.037253f, 0.014978f, 0.221502f, 0.189111f, -0.048956f, 0.085409f, 0.325399f, -0.058294f, + -0.028495f, 0.021663f, 0.19392f, 0.02706f, 0.006908f, 0.065751f, 0.176395f, 0.138375f, + 0.012418f, -0.031228f, -0.008762f, -0.427345f, -0.013677f, -0.002429f, 0.069655f, 0.019505f, + -0.036763f, 0.022528f, 0.201062f, 0.022205f, 0.024528f, 0.06241f, -0.076237f, -0.840695f, + -0.007268f, -0.027865f, 0.211056f, 0.074744f, -0.053563f, 0.006863f, 0.301432f, 0.192879f, + -0.021944f, 0.100535f, 0.19031f, -0.133746f, -0.006151f, 0.023944f, 0.13561f, -0.03259f, + 0.000618f, 0.063736f, 0.180904f, 0.12393f, 0.001275f, -0.0306f, -0.032822f, -0.496515f, + 0.009757f, 0.014602f, 0.004532f, -0.039969f, -0.015984f, 0.047726f, 0.099865f, 0.003163f, + 0.026623f, 0.117951f, -0.076234f, -0.811997f, 0.01301f, 0.020042f, 0.173756f, -0.036191f, + -0.068887f, 0.0229f, 0.245465f, 0.214282f, -0.011054f, 0.132813f, 0.241014f, -0.148763f, + }, + std::vector{ + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 209.000000f, // 0 + 0.000000f, 0.000000f, 0.000000f, 237.625443f, 209.000000f, // 5 + 0.000000f, 140.305511f, 0.000000f, 349.000000f, 209.000000f, // 10 + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 65.359818f, // 15 + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 130.324097f, // 20 + 0.000000f, 0.000000f, 15.562508f, 97.587891f, 181.224182f, // 25 + 0.000000f, 0.000000f, 68.539543f, 250.406708f, 209.000000f, // 30 + 0.000000f, 0.000000f, 0.000000f, 195.881531f, 99.841385f, // 35 + 0.000000f, 0.000000f, 0.000000f, 78.303986f, 209.000000f, // 40 + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 209.000000f, // 45 + }), }; return proposalV1Params; } @@ -335,122 +356,137 @@ template std::vector generateProposalV4Params() { using T = typename element_type_traits::value_type; - std::vector proposalV4Params { - ProposalV4Params(0.7f, 16, 16, 6000, 10, // iou_threshold, min_nnox_size, feature_stride,pre_nms_topn, post_nms_topn - 3, 210, 350, 1, // image_shape_num, image_h, image_w, image_z - {0.5f}, // ratios - {32.0f}, //scales - 1, 1, 10, 10, // batch_size, anchor_num, feat_map_height, feat_map_width - IN_ET, - std::vector{ - 0.000240f, 0.003802f, 0.111432f, 0.000503f, 0.007887f, 0.144701f, 0.399074f, 0.004680f, // 0 - 0.139741f, 0.002386f, 0.030003f, 0.276552f, 0.000267f, 0.022971f, 0.287953f, 0.050235f, // 8 - 0.002580f, 0.206311f, 0.000146f, 0.009656f, 0.175462f, 0.000147f, 0.014718f, 0.272348f, // 16 - 0.065199f, 0.003286f, 0.185335f, 0.003720f, 0.025932f, 0.251401f, 0.001465f, 0.090447f, // 24 - 0.488469f, 0.092259f, 0.019306f, 0.379091f, 0.005311f, 0.010369f, 0.087615f, 0.042003f, // 32 - 0.073871f, 0.416763f, 0.044282f, 0.069776f, 0.313032f, 0.000457f, 0.017346f, 0.089762f, // 40 - 0.000820f, 0.103986f, 0.367993f, 0.026315f, 0.035701f, 0.299252f, 0.000135f, 0.017825f, // 48 - 0.150119f, 0.000076f, 0.050511f, 0.269601f, 0.026680f, 0.003541f, 0.189765f, 0.000051f, // 56 - 0.004315f, 0.193150f, 0.000032f, 0.007254f, 0.185557f, 0.051526f, 0.000657f, 0.117579f, // 64 - 0.000115f, 0.010179f, 0.293187f, 0.000025f, 0.006505f, 0.175345f, 0.032587f, 0.000469f, // 72 - 0.098443f, 0.000121f, 0.009600f, 0.322782f, 0.000032f, 0.004543f, 0.166860f, 0.044911f, // 80 - 0.000187f, 0.102691f, 0.000242f, 0.005502f, 0.107865f, 0.000191f, 0.005336f, 0.086893f, // 88 - 0.078422f, 0.000345f, 0.079096f, 0.000281f, 0.016388f, 0.214072f, 0.000107f, 0.012027f, // 96 - 0.192754f, 0.049531f, 0.000386f, 0.149893f, 0.000374f, 0.016965f, 0.204781f, 0.000163f, // 104 - 0.016272f, 0.215277f, 0.032298f, 0.000857f, 0.133426f, 0.000614f, 0.020215f, 0.165789f, // 112 - 0.000225f, 0.036951f, 0.262195f, 0.087675f, 0.004596f, 0.147764f, 0.000219f, 0.010502f, // 120 - 0.163394f, 0.000152f, 0.023116f, 0.241702f, 0.081800f, 0.002197f, 0.146637f, 0.000193f, // 128 - 0.012017f, 0.133497f, 0.000375f, 0.028605f, 0.309179f, 0.065962f, 0.005508f, 0.155530f, // 136 - 0.000186f, 0.004540f, 0.079319f, 0.000799f, 0.031003f, 0.303045f, 0.051473f, 0.017770f, // 144 - 0.206188f, 0.000202f, 0.004291f, 0.061095f, 0.001109f, 0.018094f, 0.156639f, 0.026062f, // 152 - 0.005270f, 0.148651f, 0.000026f, 0.007300f, 0.096013f, 0.000383f, 0.022134f, 0.129511f, // 160 - 0.080882f, 0.003416f, 0.129922f, 0.000037f, 0.010040f, 0.130007f, 0.000116f, 0.014904f, // 168 - 0.171423f, 0.082893f, 0.000921f, 0.154976f, 0.000142f, 0.016552f, 0.209696f, 0.000227f, // 176 - 0.022418f, 0.228501f, 0.111712f, 0.001987f, 0.158164f, 0.001200f, 0.027049f, 0.308222f, // 184 - 0.001366f, 0.038146f, 0.287945f, 0.072526f, 0.016064f, 0.257895f, 0.000595f, 0.016962f, // 192 - }, - std::vector{ - 0.006756f, -0.055635f, 0.030843f, 0.007482f, 0.009056f, -0.041824f, 0.119722f, 0.168988f, 0.002822f, - 0.039733f, 0.109005f, 0.245152f, -0.013196f, -0.018222f, -0.170122f, -0.374904f, -0.005455f, -0.034059f, - -0.006787f, 0.072005f, -0.017933f, -0.007358f, 0.034149f, 0.123846f, 0.128319f, 0.016107f, -0.615487f, - -1.235094f, -0.024253f, -0.019406f, 0.134142f, 0.157853f, -0.021119f, 0.007383f, 0.089365f, 0.092854f, - 0.062491f, 0.002366f, 0.122464f, -0.003326f, 0.015468f, -0.034088f, 0.079009f, 0.075483f, 0.011972f, - 0.042427f, 0.106865f, 0.158754f, 0.071211f, -0.034009f, 0.007985f, -0.441477f, 0.009046f, -0.028515f, - 0.095372f, 0.119598f, -0.007553f, -0.0072f, 0.105072f, 0.084314f, 0.23268f, -0.02906f, -0.408454f, - -1.13439f, 0.016202f, -0.037859f, 0.130873f, 0.129652f, 0.002064f, -0.011969f, 0.171623f, 0.050218f, - 0.113831f, 0.028922f, 0.017785f, 0.059708f, 0.037658f, -0.011245f, 0.097197f, 0.137491f, 0.024218f, - 0.04739f, 0.091978f, 0.217333f, 0.088418f, -0.004662f, -0.095168f, -0.397928f, 0.02639f, -0.008501f, - 0.068487f, 0.108465f, 0.020069f, 0.018829f, 0.040206f, 0.068473f, 0.226458f, -0.072871f, -0.672384f, - -1.447558f, 0.039598f, 0.017471f, 0.187288f, 0.08409f, 0.017152f, -0.00516f, 0.183419f, 0.068469f, - 0.063944f, 0.160725f, -0.022493f, -0.132291f, 0.010542f, 0.036318f, 0.074042f, -0.013323f, 0.00808f, - 0.060365f, 0.120566f, 0.21866f, 0.046324f, 0.088741f, 0.029469f, -0.517183f, 0.00917f, 0.011915f, - 0.053674f, 0.140168f, 0.0033f, 0.022759f, -0.006196f, 0.063839f, 0.083726f, -0.088385f, -0.57208f, - -1.454211f, 0.020655f, 0.010788f, 0.134951f, 0.109709f, 0.015445f, -0.015363f, 0.109153f, 0.051209f, - 0.024297f, 0.139126f, -0.12358f, -0.127979f, 0.004587f, 0.004751f, 0.047292f, 0.027066f, 0.011003f, - 0.069887f, 0.117052f, 0.267419f, 0.039306f, 0.077584f, 0.02579f, -0.496149f, -0.005569f, 0.015494f, - -0.011662f, 0.105549f, -0.007015f, 0.031984f, -0.075742f, 0.0852f, 0.023886f, -0.053107f, -0.325533f, - -1.329066f, 0.004688f, 0.034501f, 0.089317f, 0.042463f, 0.004212f, -0.015128f, 0.00892f, 0.028266f, - 0.009997f, 0.157822f, 0.020116f, -0.142337f, 0.008199f, 0.046564f, 0.083014f, 0.046307f, 0.006771f, - 0.084997f, 0.141935f, 0.228339f, -0.020308f, 0.077745f, -0.018319f, -0.522311f, 0.010432f, 0.024641f, - 0.020571f, 0.097148f, 0.002064f, 0.035053f, -0.121995f, 0.012222f, -0.030779f, 0.100481f, -0.331737f, - -1.257669f, -0.013079f, 0.021227f, 0.159949f, 0.120097f, 0.005765f, -0.012335f, -0.005268f, 0.042067f, - -0.043972f, 0.102556f, 0.180494f, -0.084721f, -0.011962f, 0.031302f, 0.112511f, 0.027557f, -0.002085f, - 0.082978f, 0.149409f, 0.195091f, -0.033731f, 0.019861f, -0.064047f, -0.471328f, -0.004093f, 0.016803f, - 0.044635f, 0.058912f, -0.018735f, 0.035536f, -0.050373f, -0.002794f, -0.086705f, 0.038435f, -0.301466f, - -1.071246f, -0.028247f, 0.018984f, 0.254702f, 0.141142f, -0.017522f, 0.014843f, 0.079391f, 0.079662f, - -0.051204f, 0.048419f, 0.235604f, -0.185797f, -0.019569f, 0.02678f, 0.162507f, 0.046435f, -0.004606f, - 0.08806f, 0.18634f, 0.193957f, -0.024333f, -0.01298f, -0.17977f, -0.65881f, -0.003778f, 0.007418f, - 0.065439f, 0.104549f, -0.027706f, 0.03301f, 0.057492f, 0.032019f, -0.135337f, 0.000269f, -0.250203f, - -1.181688f, -0.027022f, -0.006755f, 0.206848f, 0.129268f, -0.003529f, 0.013445f, 0.181484f, 0.139955f, - -0.036587f, 0.065824f, 0.288751f, -0.110813f, -0.015578f, 0.044818f, 0.17756f, 0.006914f, 0.002329f, - 0.068982f, 0.189079f, 0.184253f, 0.00301f, -0.039168f, -0.010855f, -0.393254f, 0.000028f, 0.001906f, - 0.07217f, 0.063305f, -0.026144f, 0.028842f, 0.139149f, 0.023377f, 0.023362f, 0.023559f, -0.145386f, - -0.863572f, -0.015749f, -0.021364f, 0.172571f, 0.078393f, -0.037253f, 0.014978f, 0.221502f, 0.189111f, - -0.048956f, 0.085409f, 0.325399f, -0.058294f, -0.028495f, 0.021663f, 0.19392f, 0.02706f, 0.006908f, - 0.065751f, 0.176395f, 0.138375f, 0.012418f, -0.031228f, -0.008762f, -0.427345f, -0.013677f, -0.002429f, - 0.069655f, 0.019505f, -0.036763f, 0.022528f, 0.201062f, 0.022205f, 0.024528f, 0.06241f, -0.076237f, - -0.840695f, -0.007268f, -0.027865f, 0.211056f, 0.074744f, -0.053563f, 0.006863f, 0.301432f, 0.192879f, - -0.021944f, 0.100535f, 0.19031f, -0.133746f, -0.006151f, 0.023944f, 0.13561f, -0.03259f, 0.000618f, - 0.063736f, 0.180904f, 0.12393f, 0.001275f, -0.0306f, -0.032822f, -0.496515f, 0.009757f, 0.014602f, - 0.004532f, -0.039969f, -0.015984f, 0.047726f, 0.099865f, 0.003163f, 0.026623f, 0.117951f, -0.076234f, - -0.811997f, 0.01301f, 0.020042f, 0.173756f, -0.036191f, -0.068887f, 0.0229f, 0.245465f, 0.214282f, - -0.011054f, 0.132813f, 0.241014f, -0.148763f, - }, - std::vector{ - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 209.000000f, // 0 - 0.000000f, 0.000000f, 0.000000f, 237.625443f, 209.000000f, // 5 - 0.000000f, 140.305511f, 0.000000f, 349.000000f, 209.000000f, // 10 - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 65.359818f, // 15 - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 130.324097f, // 20 - 0.000000f, 0.000000f, 15.562508f, 97.587891f, 181.224182f, // 25 - 0.000000f, 0.000000f, 68.539543f, 250.406708f, 209.000000f, // 30 - 0.000000f, 0.000000f, 0.000000f, 195.881531f, 99.841385f, // 35 - 0.000000f, 0.000000f, 0.000000f, 78.303986f, 209.000000f, // 40 - 0.000000f, 0.000000f, 0.000000f, 0.000000f, 209.000000f, // 45 - }, - std::vector{ - 0.3091790f, - 0.1555300f, - 0.1549760f, - 0.1466370f, - 0.0260620f, - 0.0177700f, - 0.0019870f, - 0.0008570f, - 0.0002190f, - 0.0000000f, - }), + std::vector proposalV4Params{ + ProposalV4Params( + 0.7f, + 16, + 16, + 6000, + 10, // iou_threshold, min_nnox_size, feature_stride,pre_nms_topn, post_nms_topn + 3, + 210, + 350, + 1, // image_shape_num, image_h, image_w, image_z + {0.5f}, // ratios + {32.0f}, // scales + 1, + 1, + 10, + 10, // batch_size, anchor_num, feat_map_height, feat_map_width + IN_ET, + std::vector{ + 0.000240f, 0.003802f, 0.111432f, 0.000503f, 0.007887f, 0.144701f, 0.399074f, 0.004680f, // 0 + 0.139741f, 0.002386f, 0.030003f, 0.276552f, 0.000267f, 0.022971f, 0.287953f, 0.050235f, // 8 + 0.002580f, 0.206311f, 0.000146f, 0.009656f, 0.175462f, 0.000147f, 0.014718f, 0.272348f, // 16 + 0.065199f, 0.003286f, 0.185335f, 0.003720f, 0.025932f, 0.251401f, 0.001465f, 0.090447f, // 24 + 0.488469f, 0.092259f, 0.019306f, 0.379091f, 0.005311f, 0.010369f, 0.087615f, 0.042003f, // 32 + 0.073871f, 0.416763f, 0.044282f, 0.069776f, 0.313032f, 0.000457f, 0.017346f, 0.089762f, // 40 + 0.000820f, 0.103986f, 0.367993f, 0.026315f, 0.035701f, 0.299252f, 0.000135f, 0.017825f, // 48 + 0.150119f, 0.000076f, 0.050511f, 0.269601f, 0.026680f, 0.003541f, 0.189765f, 0.000051f, // 56 + 0.004315f, 0.193150f, 0.000032f, 0.007254f, 0.185557f, 0.051526f, 0.000657f, 0.117579f, // 64 + 0.000115f, 0.010179f, 0.293187f, 0.000025f, 0.006505f, 0.175345f, 0.032587f, 0.000469f, // 72 + 0.098443f, 0.000121f, 0.009600f, 0.322782f, 0.000032f, 0.004543f, 0.166860f, 0.044911f, // 80 + 0.000187f, 0.102691f, 0.000242f, 0.005502f, 0.107865f, 0.000191f, 0.005336f, 0.086893f, // 88 + 0.078422f, 0.000345f, 0.079096f, 0.000281f, 0.016388f, 0.214072f, 0.000107f, 0.012027f, // 96 + 0.192754f, 0.049531f, 0.000386f, 0.149893f, 0.000374f, 0.016965f, 0.204781f, 0.000163f, // 104 + 0.016272f, 0.215277f, 0.032298f, 0.000857f, 0.133426f, 0.000614f, 0.020215f, 0.165789f, // 112 + 0.000225f, 0.036951f, 0.262195f, 0.087675f, 0.004596f, 0.147764f, 0.000219f, 0.010502f, // 120 + 0.163394f, 0.000152f, 0.023116f, 0.241702f, 0.081800f, 0.002197f, 0.146637f, 0.000193f, // 128 + 0.012017f, 0.133497f, 0.000375f, 0.028605f, 0.309179f, 0.065962f, 0.005508f, 0.155530f, // 136 + 0.000186f, 0.004540f, 0.079319f, 0.000799f, 0.031003f, 0.303045f, 0.051473f, 0.017770f, // 144 + 0.206188f, 0.000202f, 0.004291f, 0.061095f, 0.001109f, 0.018094f, 0.156639f, 0.026062f, // 152 + 0.005270f, 0.148651f, 0.000026f, 0.007300f, 0.096013f, 0.000383f, 0.022134f, 0.129511f, // 160 + 0.080882f, 0.003416f, 0.129922f, 0.000037f, 0.010040f, 0.130007f, 0.000116f, 0.014904f, // 168 + 0.171423f, 0.082893f, 0.000921f, 0.154976f, 0.000142f, 0.016552f, 0.209696f, 0.000227f, // 176 + 0.022418f, 0.228501f, 0.111712f, 0.001987f, 0.158164f, 0.001200f, 0.027049f, 0.308222f, // 184 + 0.001366f, 0.038146f, 0.287945f, 0.072526f, 0.016064f, 0.257895f, 0.000595f, 0.016962f, // 192 + }, + std::vector{ + 0.006756f, -0.055635f, 0.030843f, 0.007482f, 0.009056f, -0.041824f, 0.119722f, 0.168988f, + 0.002822f, 0.039733f, 0.109005f, 0.245152f, -0.013196f, -0.018222f, -0.170122f, -0.374904f, + -0.005455f, -0.034059f, -0.006787f, 0.072005f, -0.017933f, -0.007358f, 0.034149f, 0.123846f, + 0.128319f, 0.016107f, -0.615487f, -1.235094f, -0.024253f, -0.019406f, 0.134142f, 0.157853f, + -0.021119f, 0.007383f, 0.089365f, 0.092854f, 0.062491f, 0.002366f, 0.122464f, -0.003326f, + 0.015468f, -0.034088f, 0.079009f, 0.075483f, 0.011972f, 0.042427f, 0.106865f, 0.158754f, + 0.071211f, -0.034009f, 0.007985f, -0.441477f, 0.009046f, -0.028515f, 0.095372f, 0.119598f, + -0.007553f, -0.0072f, 0.105072f, 0.084314f, 0.23268f, -0.02906f, -0.408454f, -1.13439f, + 0.016202f, -0.037859f, 0.130873f, 0.129652f, 0.002064f, -0.011969f, 0.171623f, 0.050218f, + 0.113831f, 0.028922f, 0.017785f, 0.059708f, 0.037658f, -0.011245f, 0.097197f, 0.137491f, + 0.024218f, 0.04739f, 0.091978f, 0.217333f, 0.088418f, -0.004662f, -0.095168f, -0.397928f, + 0.02639f, -0.008501f, 0.068487f, 0.108465f, 0.020069f, 0.018829f, 0.040206f, 0.068473f, + 0.226458f, -0.072871f, -0.672384f, -1.447558f, 0.039598f, 0.017471f, 0.187288f, 0.08409f, + 0.017152f, -0.00516f, 0.183419f, 0.068469f, 0.063944f, 0.160725f, -0.022493f, -0.132291f, + 0.010542f, 0.036318f, 0.074042f, -0.013323f, 0.00808f, 0.060365f, 0.120566f, 0.21866f, + 0.046324f, 0.088741f, 0.029469f, -0.517183f, 0.00917f, 0.011915f, 0.053674f, 0.140168f, + 0.0033f, 0.022759f, -0.006196f, 0.063839f, 0.083726f, -0.088385f, -0.57208f, -1.454211f, + 0.020655f, 0.010788f, 0.134951f, 0.109709f, 0.015445f, -0.015363f, 0.109153f, 0.051209f, + 0.024297f, 0.139126f, -0.12358f, -0.127979f, 0.004587f, 0.004751f, 0.047292f, 0.027066f, + 0.011003f, 0.069887f, 0.117052f, 0.267419f, 0.039306f, 0.077584f, 0.02579f, -0.496149f, + -0.005569f, 0.015494f, -0.011662f, 0.105549f, -0.007015f, 0.031984f, -0.075742f, 0.0852f, + 0.023886f, -0.053107f, -0.325533f, -1.329066f, 0.004688f, 0.034501f, 0.089317f, 0.042463f, + 0.004212f, -0.015128f, 0.00892f, 0.028266f, 0.009997f, 0.157822f, 0.020116f, -0.142337f, + 0.008199f, 0.046564f, 0.083014f, 0.046307f, 0.006771f, 0.084997f, 0.141935f, 0.228339f, + -0.020308f, 0.077745f, -0.018319f, -0.522311f, 0.010432f, 0.024641f, 0.020571f, 0.097148f, + 0.002064f, 0.035053f, -0.121995f, 0.012222f, -0.030779f, 0.100481f, -0.331737f, -1.257669f, + -0.013079f, 0.021227f, 0.159949f, 0.120097f, 0.005765f, -0.012335f, -0.005268f, 0.042067f, + -0.043972f, 0.102556f, 0.180494f, -0.084721f, -0.011962f, 0.031302f, 0.112511f, 0.027557f, + -0.002085f, 0.082978f, 0.149409f, 0.195091f, -0.033731f, 0.019861f, -0.064047f, -0.471328f, + -0.004093f, 0.016803f, 0.044635f, 0.058912f, -0.018735f, 0.035536f, -0.050373f, -0.002794f, + -0.086705f, 0.038435f, -0.301466f, -1.071246f, -0.028247f, 0.018984f, 0.254702f, 0.141142f, + -0.017522f, 0.014843f, 0.079391f, 0.079662f, -0.051204f, 0.048419f, 0.235604f, -0.185797f, + -0.019569f, 0.02678f, 0.162507f, 0.046435f, -0.004606f, 0.08806f, 0.18634f, 0.193957f, + -0.024333f, -0.01298f, -0.17977f, -0.65881f, -0.003778f, 0.007418f, 0.065439f, 0.104549f, + -0.027706f, 0.03301f, 0.057492f, 0.032019f, -0.135337f, 0.000269f, -0.250203f, -1.181688f, + -0.027022f, -0.006755f, 0.206848f, 0.129268f, -0.003529f, 0.013445f, 0.181484f, 0.139955f, + -0.036587f, 0.065824f, 0.288751f, -0.110813f, -0.015578f, 0.044818f, 0.17756f, 0.006914f, + 0.002329f, 0.068982f, 0.189079f, 0.184253f, 0.00301f, -0.039168f, -0.010855f, -0.393254f, + 0.000028f, 0.001906f, 0.07217f, 0.063305f, -0.026144f, 0.028842f, 0.139149f, 0.023377f, + 0.023362f, 0.023559f, -0.145386f, -0.863572f, -0.015749f, -0.021364f, 0.172571f, 0.078393f, + -0.037253f, 0.014978f, 0.221502f, 0.189111f, -0.048956f, 0.085409f, 0.325399f, -0.058294f, + -0.028495f, 0.021663f, 0.19392f, 0.02706f, 0.006908f, 0.065751f, 0.176395f, 0.138375f, + 0.012418f, -0.031228f, -0.008762f, -0.427345f, -0.013677f, -0.002429f, 0.069655f, 0.019505f, + -0.036763f, 0.022528f, 0.201062f, 0.022205f, 0.024528f, 0.06241f, -0.076237f, -0.840695f, + -0.007268f, -0.027865f, 0.211056f, 0.074744f, -0.053563f, 0.006863f, 0.301432f, 0.192879f, + -0.021944f, 0.100535f, 0.19031f, -0.133746f, -0.006151f, 0.023944f, 0.13561f, -0.03259f, + 0.000618f, 0.063736f, 0.180904f, 0.12393f, 0.001275f, -0.0306f, -0.032822f, -0.496515f, + 0.009757f, 0.014602f, 0.004532f, -0.039969f, -0.015984f, 0.047726f, 0.099865f, 0.003163f, + 0.026623f, 0.117951f, -0.076234f, -0.811997f, 0.01301f, 0.020042f, 0.173756f, -0.036191f, + -0.068887f, 0.0229f, 0.245465f, 0.214282f, -0.011054f, 0.132813f, 0.241014f, -0.148763f, + }, + std::vector{ + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 209.000000f, // 0 + 0.000000f, 0.000000f, 0.000000f, 237.625443f, 209.000000f, // 5 + 0.000000f, 140.305511f, 0.000000f, 349.000000f, 209.000000f, // 10 + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 65.359818f, // 15 + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 130.324097f, // 20 + 0.000000f, 0.000000f, 15.562508f, 97.587891f, 181.224182f, // 25 + 0.000000f, 0.000000f, 68.539543f, 250.406708f, 209.000000f, // 30 + 0.000000f, 0.000000f, 0.000000f, 195.881531f, 99.841385f, // 35 + 0.000000f, 0.000000f, 0.000000f, 78.303986f, 209.000000f, // 40 + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 209.000000f, // 45 + }, + std::vector{ + 0.3091790f, + 0.1555300f, + 0.1549760f, + 0.1466370f, + 0.0260620f, + 0.0177700f, + 0.0019870f, + 0.0008570f, + 0.0002190f, + 0.0000000f, + }), }; return proposalV4Params; } std::vector generateProposalV1CombinedParams() { - const std::vector> proposalTypeParams { + const std::vector> proposalTypeParams{ generateProposalV1Params(), generateProposalV1Params(), generateProposalV1Params(), - generateProposalV1Params() - }; + generateProposalV1Params()}; std::vector combinedParams; for (const auto& params : proposalTypeParams) { @@ -460,12 +496,11 @@ std::vector generateProposalV1CombinedParams() { } std::vector generateProposalV4CombinedParams() { - const std::vector> proposalTypeParams { + const std::vector> proposalTypeParams{ generateProposalV4Params(), generateProposalV4Params(), generateProposalV4Params(), - generateProposalV4Params() - }; + generateProposalV4Params()}; std::vector combinedParams; for (const auto& params : proposalTypeParams) { @@ -474,10 +509,14 @@ std::vector generateProposalV4CombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Proposal_With_Hardcoded_Refs, ReferenceProposalV1LayerTest, - testing::ValuesIn(generateProposalV1CombinedParams()), ReferenceProposalV1LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Proposal_With_Hardcoded_Refs, + ReferenceProposalV1LayerTest, + testing::ValuesIn(generateProposalV1CombinedParams()), + ReferenceProposalV1LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Proposal_With_Hardcoded_Refs, ReferenceProposalV4LayerTest, - testing::ValuesIn(generateProposalV4CombinedParams()), ReferenceProposalV4LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Proposal_With_Hardcoded_Refs, + ReferenceProposalV4LayerTest, + testing::ValuesIn(generateProposalV4CombinedParams()), + ReferenceProposalV4LayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/psroi_pooling.cpp b/src/plugins/template/tests/functional/op_reference/psroi_pooling.cpp index f6e7596219bc13..0d7207b5ddc885 100644 --- a/src/plugins/template/tests/functional/op_reference/psroi_pooling.cpp +++ b/src/plugins/template/tests/functional/op_reference/psroi_pooling.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/psroi_pooling.hpp" + #include #include -#include "openvino/op/psroi_pooling.hpp" + #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,11 +16,16 @@ using namespace ov; namespace { struct PSROIPoolingParams { template - PSROIPoolingParams(const size_t num_channels, const size_t group_size, - const size_t spatial_bins_x, const size_t spatial_bins_y, - const size_t num_boxes, const float spatial_scale, const std::string& mode, + PSROIPoolingParams(const size_t num_channels, + const size_t group_size, + const size_t spatial_bins_x, + const size_t spatial_bins_y, + const size_t num_boxes, + const float spatial_scale, + const std::string& mode, const ov::element::Type& iType, - const std::vector& coordsValues, const std::vector& oValues, + const std::vector& coordsValues, + const std::vector& oValues, const std::string& test_name = "") : groupSize(group_size), spatialBinsX(spatial_bins_x), @@ -31,19 +38,19 @@ struct PSROIPoolingParams { coordsData(CreateTensor(iType, coordsValues)), refData(CreateTensor(iType, oValues)), testcaseName(test_name) { - if (mode == "bilinear") - outputDim = num_channels / (spatial_bins_x * spatial_bins_y); - else - outputDim = num_channels / (group_size * group_size); - imageShape = Shape{2, num_channels, 20, 20}; - coordsShape = Shape{num_boxes, 5}; - std::vector imageValues(shape_size(imageShape.get_shape())); - float val = 0; - std::generate(imageValues.begin(), imageValues.end(), [val]() mutable -> float { - return val += 0.1; - }); - imageData = CreateTensor(iType, imageValues); - } + if (mode == "bilinear") + outputDim = num_channels / (spatial_bins_x * spatial_bins_y); + else + outputDim = num_channels / (group_size * group_size); + imageShape = Shape{2, num_channels, 20, 20}; + coordsShape = Shape{num_boxes, 5}; + std::vector imageValues(shape_size(imageShape.get_shape())); + float val = 0; + std::generate(imageValues.begin(), imageValues.end(), [val]() mutable -> float { + return val += 0.1; + }); + imageData = CreateTensor(iType, imageValues); + } size_t groupSize; size_t spatialBinsX; @@ -98,7 +105,7 @@ class ReferencePSROIPoolingLayerTest : public testing::TestWithParam(params.spatialBinsX), static_cast(params.spatialBinsY), params.mode); - return std::make_shared(NodeVector {PSROIPooling}, ParameterVector {image, coords}); + return std::make_shared(NodeVector{PSROIPooling}, ParameterVector{image, coords}); } }; @@ -110,103 +117,118 @@ template std::vector generatePSROIPoolingFloatParams() { using T = typename element_type_traits::value_type; - std::vector pSROIPoolingParams { - PSROIPoolingParams(8, - 2, - 1, + std::vector pSROIPoolingParams{ + PSROIPoolingParams( + 8, + 2, + 1, + 1, + 3, + 1, + "average", + IN_ET, + std::vector{// batch_id, x1, y1, x2, y2 + 0, 1, - 3, - 1, - "average", - IN_ET, - std::vector{ - // batch_id, x1, y1, x2, y2 - 0, 1, 2, 4, 6, 1, 0, 3, 10, 4, 0, 10, 7, 11, 13}, - std::vector{ - 6.2499962, 46.44986, 90.249184, 130.44876, 166.25095, 206.45341, 250.25606, 290.45853, - 326.36069, 366.86316, 408.36572, 448.86816, 486.37045, 526.86841, 568.35828, 608.84839, - 18.100033, 58.199684, 104.09898, 144.1996, 178.10167, 218.20412, 264.1069, 304.20935}), - PSROIPoolingParams(8, 2, - 1, - 1, 4, - 0.2, - "average", - IN_ET, - std::vector{ - // batch_id, x1, y1, x2, y2 - 0, 5, 10, 20, 30, 0, 0, 15, 50, 20, 1, 50, 35, 55, 65, 1, 0, 60, 5, 70}, - std::vector{ - 6.24999619, 46.399868, 90.2491837, 130.398758, 166.250946, 206.403397, 250.256058, 290.408508, - 6.34999657, 46.8498573, 87.3492432, 127.848656, 166.350952, 206.853409, 247.355896, 287.858368, - 338.11142, 378.163879, 424.116669, 464.169128, 498.121185, 538.165649, 584.104431, 624.144653, - 345.111847, 385.164307, 427.116852, 467.169312, 505.121613, 545.16394, 587.103699, 627.143921}), - PSROIPoolingParams(12, - 3, - 2, - 3, - 5, + 6, 1, - "bilinear", - IN_ET, - std::vector{ - 0, 0.1, 0.2, 0.7, 0.4, 1, 0.4, 0.1, 0.9, 0.3, 0, 0.5, 0.7, - 0.7, 0.9, 1, 0.15, 0.3, 0.65, 0.35, 0, 0.0, 0.2, 0.7, 0.8}, - std::vector{ - 210.71394, 210.99896, 211.28398, 211.98065, 212.26567, 212.55066, 213.24738, 213.53239, 213.8174, 250.71545, - 251.00047, 251.28548, 251.98218, 252.2672, 252.5522, 253.2489, 253.53392, 253.81892, 687.40869, 687.64606, - 687.88354, 688.67511, 688.91254, 689.14996, 689.94147, 690.17896, 690.41644, 727.40021, 727.6377, 727.87518, - 728.66669, 728.90405, 729.14154, 729.93292, 730.17041, 730.4079, 230.28471, 230.3797, 230.47472, 231.55144, - 231.64642, 231.74141, 232.81813, 232.91313, 233.00813, 270.28638, 270.38141, 270.47641, 271.5531, 271.64813, - 271.74313, 272.81985, 272.91486, 273.00986, 692.63281, 692.87018, 693.1076, 692.94928, 693.18683, 693.42426, - 693.26593, 693.50342, 693.74078, 732.62402, 732.86139, 733.09888, 732.94049, 733.17804, 733.41547, 733.25714, - 733.49463, 733.73199, 215.63843, 215.97093, 216.30345, 219.43855, 219.77106, 220.10358, 223.23871, 223.57123, - 223.90375, 255.63994, 255.97246, 256.30496, 259.44009, 259.77261, 260.10513, 263.2403, 263.57281, 263.9053}), - PSROIPoolingParams(12, - 4, - 2, + 0, 3, - 6, - 0.5, - "bilinear", - IN_ET, - std::vector{ - // batch_id, x1, y1, x2, y2 - 0, 0.1, 0.2, 0.7, 0.4, 0, 0.5, 0.7, 1.2, 1.3, 0, 1.0, 1.3, 1.2, 1.8, - 1, 0.5, 1.1, 0.7, 1.44, 1, 0.2, 1.1, 0.5, 1.2, 1, 0.34, 1.3, 1.15, 1.35}, - std::vector{ - 205.40955, 205.50456, 205.59955, 205.69453, 205.83179, 205.9268, 206.0218, 206.11681, 206.25403, 206.34901, - 206.44403, 206.53905, 206.67627, 206.77126, 206.86627, 206.96129, 245.41107, 245.50606, 245.60106, 245.69604, - 245.8333, 245.9283, 246.02327, 246.1183, 246.25554, 246.35052, 246.44556, 246.54054, 246.67778, 246.77277, - 246.86775, 246.96278, 217.84717, 217.95801, 218.06885, 218.17969, 219.11389, 219.22473, 219.33557, 219.44641, - 220.3806, 220.49144, 220.60228, 220.71312, 221.64732, 221.75816, 221.86897, 221.97981, 257.84872, 257.95956, - 258.0704, 258.18124, 259.11545, 259.22629, 259.33713, 259.44797, 260.38217, 260.49301, 260.60385, 260.71469, - 261.6489, 261.75974, 261.87057, 261.98141, 228.9705, 229.00215, 229.03383, 229.06549, 230.02608, 230.05774, - 230.08943, 230.12109, 231.08168, 231.11334, 231.14502, 231.1767, 232.13728, 232.16895, 232.20062, 232.23228, - 268.97217, 269.00385, 269.03549, 269.06717, 270.02777, 270.05945, 270.09109, 270.12277, 271.08337, 271.11502, - 271.1467, 271.17838, 272.13901, 272.17065, 272.2023, 272.23398, 703.65057, 703.68219, 703.71387, 703.74554, - 704.36816, 704.39984, 704.43146, 704.4632, 705.08575, 705.11749, 705.14911, 705.18085, 705.80347, 705.83514, - 705.86676, 705.89844, 743.64136, 743.67291, 743.70459, 743.73633, 744.35889, 744.39056, 744.42218, 744.45392, - 745.07648, 745.10815, 745.13983, 745.17157, 745.79413, 745.82574, 745.85742, 745.8891, 701.86963, 701.91724, - 701.9646, 702.01221, 702.08081, 702.12823, 702.17578, 702.22321, 702.29181, 702.33936, 702.38678, 702.43433, - 702.50293, 702.55035, 702.5979, 702.64545, 741.86041, 741.90796, 741.95538, 742.00293, 742.07153, 742.11896, - 742.1665, 742.21405, 742.28253, 742.33008, 742.3775, 742.42505, 742.49365, 742.54108, 742.58862, 742.63617, - 705.60645, 705.73468, 705.86298, 705.99115, 705.71198, 705.84027, 705.96844, 706.09668, 705.81757, 705.94574, - 706.07397, 706.20215, 705.9231, 706.05127, 706.1795, 706.3078, 745.59698, 745.72534, 745.85352, 745.98169, - 745.70264, 745.83081, 745.95898, 746.08722, 745.80811, 745.93628, 746.06451, 746.19269, 745.91364, 746.04181, - 746.1701, 746.29834}), + 10, + 4, + 0, + 10, + 7, + 11, + 13}, + std::vector{6.2499962, 46.44986, 90.249184, 130.44876, 166.25095, 206.45341, 250.25606, 290.45853, + 326.36069, 366.86316, 408.36572, 448.86816, 486.37045, 526.86841, 568.35828, 608.84839, + 18.100033, 58.199684, 104.09898, 144.1996, 178.10167, 218.20412, 264.1069, 304.20935}), + PSROIPoolingParams( + 8, + 2, + 1, + 1, + 4, + 0.2, + "average", + IN_ET, + std::vector{// batch_id, x1, y1, x2, y2 + 0, 5, 10, 20, 30, 0, 0, 15, 50, 20, 1, 50, 35, 55, 65, 1, 0, 60, 5, 70}, + std::vector{6.24999619, 46.399868, 90.2491837, 130.398758, 166.250946, 206.403397, 250.256058, + 290.408508, 6.34999657, 46.8498573, 87.3492432, 127.848656, 166.350952, 206.853409, + 247.355896, 287.858368, 338.11142, 378.163879, 424.116669, 464.169128, 498.121185, + 538.165649, 584.104431, 624.144653, 345.111847, 385.164307, 427.116852, 467.169312, + 505.121613, 545.16394, 587.103699, 627.143921}), + PSROIPoolingParams( + 12, + 3, + 2, + 3, + 5, + 1, + "bilinear", + IN_ET, + std::vector{0, 0.1, 0.2, 0.7, 0.4, 1, 0.4, 0.1, 0.9, 0.3, 0, 0.5, 0.7, + 0.7, 0.9, 1, 0.15, 0.3, 0.65, 0.35, 0, 0.0, 0.2, 0.7, 0.8}, + std::vector{ + 210.71394, 210.99896, 211.28398, 211.98065, 212.26567, 212.55066, 213.24738, 213.53239, 213.8174, + 250.71545, 251.00047, 251.28548, 251.98218, 252.2672, 252.5522, 253.2489, 253.53392, 253.81892, + 687.40869, 687.64606, 687.88354, 688.67511, 688.91254, 689.14996, 689.94147, 690.17896, 690.41644, + 727.40021, 727.6377, 727.87518, 728.66669, 728.90405, 729.14154, 729.93292, 730.17041, 730.4079, + 230.28471, 230.3797, 230.47472, 231.55144, 231.64642, 231.74141, 232.81813, 232.91313, 233.00813, + 270.28638, 270.38141, 270.47641, 271.5531, 271.64813, 271.74313, 272.81985, 272.91486, 273.00986, + 692.63281, 692.87018, 693.1076, 692.94928, 693.18683, 693.42426, 693.26593, 693.50342, 693.74078, + 732.62402, 732.86139, 733.09888, 732.94049, 733.17804, 733.41547, 733.25714, 733.49463, 733.73199, + 215.63843, 215.97093, 216.30345, 219.43855, 219.77106, 220.10358, 223.23871, 223.57123, 223.90375, + 255.63994, 255.97246, 256.30496, 259.44009, 259.77261, 260.10513, 263.2403, 263.57281, 263.9053}), + PSROIPoolingParams( + 12, + 4, + 2, + 3, + 6, + 0.5, + "bilinear", + IN_ET, + std::vector{// batch_id, x1, y1, x2, y2 + 0, 0.1, 0.2, 0.7, 0.4, 0, 0.5, 0.7, 1.2, 1.3, 0, 1.0, 1.3, 1.2, 1.8, + 1, 0.5, 1.1, 0.7, 1.44, 1, 0.2, 1.1, 0.5, 1.2, 1, 0.34, 1.3, 1.15, 1.35}, + std::vector{ + 205.40955, 205.50456, 205.59955, 205.69453, 205.83179, 205.9268, 206.0218, 206.11681, 206.25403, + 206.34901, 206.44403, 206.53905, 206.67627, 206.77126, 206.86627, 206.96129, 245.41107, 245.50606, + 245.60106, 245.69604, 245.8333, 245.9283, 246.02327, 246.1183, 246.25554, 246.35052, 246.44556, + 246.54054, 246.67778, 246.77277, 246.86775, 246.96278, 217.84717, 217.95801, 218.06885, 218.17969, + 219.11389, 219.22473, 219.33557, 219.44641, 220.3806, 220.49144, 220.60228, 220.71312, 221.64732, + 221.75816, 221.86897, 221.97981, 257.84872, 257.95956, 258.0704, 258.18124, 259.11545, 259.22629, + 259.33713, 259.44797, 260.38217, 260.49301, 260.60385, 260.71469, 261.6489, 261.75974, 261.87057, + 261.98141, 228.9705, 229.00215, 229.03383, 229.06549, 230.02608, 230.05774, 230.08943, 230.12109, + 231.08168, 231.11334, 231.14502, 231.1767, 232.13728, 232.16895, 232.20062, 232.23228, 268.97217, + 269.00385, 269.03549, 269.06717, 270.02777, 270.05945, 270.09109, 270.12277, 271.08337, 271.11502, + 271.1467, 271.17838, 272.13901, 272.17065, 272.2023, 272.23398, 703.65057, 703.68219, 703.71387, + 703.74554, 704.36816, 704.39984, 704.43146, 704.4632, 705.08575, 705.11749, 705.14911, 705.18085, + 705.80347, 705.83514, 705.86676, 705.89844, 743.64136, 743.67291, 743.70459, 743.73633, 744.35889, + 744.39056, 744.42218, 744.45392, 745.07648, 745.10815, 745.13983, 745.17157, 745.79413, 745.82574, + 745.85742, 745.8891, 701.86963, 701.91724, 701.9646, 702.01221, 702.08081, 702.12823, 702.17578, + 702.22321, 702.29181, 702.33936, 702.38678, 702.43433, 702.50293, 702.55035, 702.5979, 702.64545, + 741.86041, 741.90796, 741.95538, 742.00293, 742.07153, 742.11896, 742.1665, 742.21405, 742.28253, + 742.33008, 742.3775, 742.42505, 742.49365, 742.54108, 742.58862, 742.63617, 705.60645, 705.73468, + 705.86298, 705.99115, 705.71198, 705.84027, 705.96844, 706.09668, 705.81757, 705.94574, 706.07397, + 706.20215, 705.9231, 706.05127, 706.1795, 706.3078, 745.59698, 745.72534, 745.85352, 745.98169, + 745.70264, 745.83081, 745.95898, 746.08722, 745.80811, 745.93628, 746.06451, 746.19269, 745.91364, + 746.04181, 746.1701, 746.29834}), }; return pSROIPoolingParams; } std::vector generatePSROIPoolingCombinedParams() { - const std::vector> pSROIPoolingTypeParams { + const std::vector> pSROIPoolingTypeParams{ generatePSROIPoolingFloatParams(), generatePSROIPoolingFloatParams(), generatePSROIPoolingFloatParams(), - generatePSROIPoolingFloatParams() - }; + generatePSROIPoolingFloatParams()}; std::vector combinedParams; for (const auto& params : pSROIPoolingTypeParams) { @@ -215,7 +237,9 @@ std::vector generatePSROIPoolingCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_PSROIPooling_With_Hardcoded_Refs, ReferencePSROIPoolingLayerTest, - testing::ValuesIn(generatePSROIPoolingCombinedParams()), ReferencePSROIPoolingLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_PSROIPooling_With_Hardcoded_Refs, + ReferencePSROIPoolingLayerTest, + testing::ValuesIn(generatePSROIPoolingCombinedParams()), + ReferencePSROIPoolingLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/random_uniform.cpp b/src/plugins/template/tests/functional/op_reference/random_uniform.cpp index 2ffc8c351e2b0d..9da97ef7c0b426 100644 --- a/src/plugins/template/tests/functional/op_reference/random_uniform.cpp +++ b/src/plugins/template/tests/functional/op_reference/random_uniform.cpp @@ -59,22 +59,22 @@ class ReferenceRandomUniformLayerTest : public testing::TestWithParam CreateFunction(const std::vector& out_shape, - const reference_tests::Tensor& min_val, - const reference_tests::Tensor& max_val, - const ov::element::Type& out_type, - int64_t global_seed, - int64_t op_seed) { + const reference_tests::Tensor& min_val, + const reference_tests::Tensor& max_val, + const ov::element::Type& out_type, + int64_t global_seed, + int64_t op_seed) { const auto min_val_param = std::make_shared(min_val.type, min_val.shape); const auto max_val_param = std::make_shared(max_val.type, max_val.shape); auto out_shape_ = std::make_shared(element::i64, Shape{out_shape.size()}, out_shape); return std::make_shared(NodeVector{std::make_shared(out_shape_, - min_val_param, - max_val_param, - out_type, - global_seed, - op_seed)}, - ParameterVector{min_val_param, max_val_param}); + min_val_param, + max_val_param, + out_type, + global_seed, + op_seed)}, + ParameterVector{min_val_param, max_val_param}); } }; @@ -95,13 +95,14 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::f32, 150, 10, - reference_tests::Tensor{{3, 2, 4}, - element::f32, - std::vector{0.70112360, 0.30539632, 0.93931055, 0.94560349, 0.11694777, - 0.50770056, 0.51971972, 0.22727466, 0.99137402, 0.35519040, - 0.82692313, 0.59864855, 0.31364107, 0.57481313, 0.41399086, - 0.96308255, 0.37140799, 0.85253167, 0.09358585, 0.08200955, - 0.23655081, 0.81056309, 0.74226606, 0.76106691}}, + reference_tests::Tensor{ + {3, 2, 4}, + element::f32, + std::vector{0.70112360, 0.30539632, 0.93931055, 0.94560349, 0.11694777, + 0.50770056, 0.51971972, 0.22727466, 0.99137402, 0.35519040, + 0.82692313, 0.59864855, 0.31364107, 0.57481313, 0.41399086, + 0.96308255, 0.37140799, 0.85253167, 0.09358585, 0.08200955, + 0.23655081, 0.81056309, 0.74226606, 0.76106691}}, "float32_default_min_max"), RandomUniformParams(std::vector{3, 2, 4}, reference_tests::Tensor{{1}, element::f16, std::vector{0}}, @@ -109,13 +110,14 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::f16, 150, 10, - reference_tests::Tensor{{3, 2, 4}, - element::f16, - std::vector{0.60449219, 0.80664062, 0.83203125, 0.38378906, 0.03613281, - 0.08300781, 0.54394531, 0.83398438, 0.33593750, 0.71972656, - 0.15429688, 0.12890625, 0.34765625, 0.86914062, 0.41308594, - 0.57226562, 0.57421875, 0.93945312, 0.65527344, 0.82226562, - 0.82421875, 0.13281250, 0.64355469, 0.66015625}}, + reference_tests::Tensor{ + {3, 2, 4}, + element::f16, + std::vector{0.60449219, 0.80664062, 0.83203125, 0.38378906, 0.03613281, + 0.08300781, 0.54394531, 0.83398438, 0.33593750, 0.71972656, + 0.15429688, 0.12890625, 0.34765625, 0.86914062, 0.41308594, + 0.57226562, 0.57421875, 0.93945312, 0.65527344, 0.82226562, + 0.82421875, 0.13281250, 0.64355469, 0.66015625}}, "float16_default_min_max"), RandomUniformParams(std::vector{3, 2, 4}, reference_tests::Tensor{{1}, element::f32, std::vector{-650}}, @@ -123,14 +125,15 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::f32, 150, 10, - reference_tests::Tensor{{3, 2, 4}, - element::f32, - std::vector{121.23596191, -314.06405640, 383.24157715, 390.16381836, - -521.35742188, -91.52935791, -78.30828857, -399.99786377, - 440.51147461, -259.29055786, 259.61541748, 8.51342773, - -304.99481201, -17.70556641, -194.61004639, 409.39074707, - -241.45120239, 287.78485107, -547.05554199, -559.78948975, - -389.79409790, 241.61938477, 166.49267578, 187.17358398}}, + reference_tests::Tensor{ + {3, 2, 4}, + element::f32, + std::vector{121.23596191, -314.06405640, 383.24157715, 390.16381836, + -521.35742188, -91.52935791, -78.30828857, -399.99786377, + 440.51147461, -259.29055786, 259.61541748, 8.51342773, + -304.99481201, -17.70556641, -194.61004639, 409.39074707, + -241.45120239, 287.78485107, -547.05554199, -559.78948975, + -389.79409790, 241.61938477, 166.49267578, 187.17358398}}, "float32_non_default_min_max"), RandomUniformParams(std::vector{3, 2, 4}, reference_tests::Tensor{{1}, element::f16, std::vector{-1.5}}, @@ -138,13 +141,14 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::f16, 150, 10, - reference_tests::Tensor{{3, 2, 4}, - element::f16, - std::vector{-1.19726562, -1.09667969, -1.08398438, -1.30859375, -1.48242188, - -1.45898438, -1.22851562, -1.08300781, -1.33203125, -1.14062500, - -1.42285156, -1.43554688, -1.32617188, -1.06542969, -1.29296875, - -1.21386719, -1.21289062, -1.03027344, -1.17187500, -1.08886719, - -1.08789062, -1.43359375, -1.17773438, -1.16992188}}, + reference_tests::Tensor{ + {3, 2, 4}, + element::f16, + std::vector{-1.19726562, -1.09667969, -1.08398438, -1.30859375, -1.48242188, + -1.45898438, -1.22851562, -1.08300781, -1.33203125, -1.14062500, + -1.42285156, -1.43554688, -1.32617188, -1.06542969, -1.29296875, + -1.21386719, -1.21289062, -1.03027344, -1.17187500, -1.08886719, + -1.08789062, -1.43359375, -1.17773438, -1.16992188}}, "float16_non_default_min_max"), RandomUniformParams(std::vector{2, 3, 4}, reference_tests::Tensor{{1}, element::i32, std::vector{-100}}, @@ -153,11 +157,11 @@ INSTANTIATE_TEST_SUITE_P( 100, 350, reference_tests::Tensor{{2, 3, 4}, - element::i32, - std::vector{ - 22, -56, -33, -89, -98, -33, -3, -48, -82, 5, -66, 21, - 29, -42, -73, -37, 3, 36, -35, 20, -11, -8, -78, 47, - }}, + element::i32, + std::vector{ + 22, -56, -33, -89, -98, -33, -3, -48, -82, 5, -66, 21, + 29, -42, -73, -37, 3, 36, -35, 20, -11, -8, -78, 47, + }}, "int32"), RandomUniformParams(std::vector{5, 4, 3}, reference_tests::Tensor{{1}, element::i64, std::vector{-2600}}, @@ -165,14 +169,15 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::i64, 755, 951, - reference_tests::Tensor{{5, 4, 3}, - element::i64, - std::vector{ - 2116, -1581, 2559, -339, -1660, 519, 90, 2027, -210, 3330, 1831, -1737, - 2683, 2661, 3473, 1220, 3534, -2384, 2199, 1935, 499, 2861, 2743, 3223, - -531, -836, -65, 3435, 632, 1765, 2613, 1891, 1698, 3069, 169, -792, - -32, 2976, -1552, -2588, 3327, -1756, 2637, -1084, 3567, -778, -1465, 2967, - 1242, 2672, -1585, -2271, 3536, -1502, 400, 2241, 3126, 908, 1073, -2110}}, + reference_tests::Tensor{ + {5, 4, 3}, + element::i64, + std::vector{ + 2116, -1581, 2559, -339, -1660, 519, 90, 2027, -210, 3330, 1831, -1737, + 2683, 2661, 3473, 1220, 3534, -2384, 2199, 1935, 499, 2861, 2743, 3223, + -531, -836, -65, 3435, 632, 1765, 2613, 1891, 1698, 3069, 169, -792, + -32, 2976, -1552, -2588, 3327, -1756, 2637, -1084, 3567, -778, -1465, 2967, + 1242, 2672, -1585, -2271, 3536, -1502, 400, 2241, 3126, 908, 1073, -2110}}, "int64"), RandomUniformParams(std::vector{7, 3}, reference_tests::Tensor{{1}, element::bf16, std::vector{0}}, @@ -180,12 +185,13 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::bf16, 4978, 5164, - reference_tests::Tensor{{7, 3}, - element::bf16, - std::vector{0.8984375, 0.84375, 0.1640625, 0.1875, 0.46875, 0.6875, - 0.5234375, 0.3046875, 0.9140625, 0.453125, 0.953125, 0.328125, - 0.359375, 0.1875, 0.9453125, 0.390625, 0.21875, 0.9921875, - 0.8203125, 0.453125, 0.875}}, + reference_tests::Tensor{ + {7, 3}, + element::bf16, + std::vector{0.8984375, 0.84375, 0.1640625, 0.1875, 0.46875, 0.6875, + 0.5234375, 0.3046875, 0.9140625, 0.453125, 0.953125, 0.328125, + 0.359375, 0.1875, 0.9453125, 0.390625, 0.21875, 0.9921875, + 0.8203125, 0.453125, 0.875}}, "bfloat16_default_min_max"), RandomUniformParams(std::vector{7, 3}, reference_tests::Tensor{{1}, element::bf16, std::vector{-150}}, @@ -193,10 +199,11 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::bf16, 4978, 5164, - reference_tests::Tensor{{7, 3}, - element::bf16, - std::vector{164, 146, -92.5, -84.5, 14, 90, 33, -43.5, 170, 8, 182, - -35, -24, -84.5, 180, -14, -73.5, 198, 138, 8, 156}}, + reference_tests::Tensor{ + {7, 3}, + element::bf16, + std::vector{164, 146, -92.5, -84.5, 14, 90, 33, -43.5, 170, 8, 182, + -35, -24, -84.5, 180, -14, -73.5, 198, 138, 8, 156}}, "bfloat16_non_default_min_max")), ReferenceRandomUniformLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/range.cpp b/src/plugins/template/tests/functional/op_reference/range.cpp index 392d015480640c..1948fcb0919c6b 100644 --- a/src/plugins/template/tests/functional/op_reference/range.cpp +++ b/src/plugins/template/tests/functional/op_reference/range.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/range.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/range.hpp" #include "openvino/op/constant.hpp" using namespace ov; @@ -104,13 +106,13 @@ class ReferenceRangeV0LayerTest : public testing::TestWithParam, pu private: static std::shared_ptr CreateFunction(Shape& ishape, - Shape& oshape, - element::Type& itype, - element::Type& otype, - element::Type& ntype, - float fstart, - float fstop, - float fstep) { + Shape& oshape, + element::Type& itype, + element::Type& otype, + element::Type& ntype, + float fstart, + float fstop, + float fstep) { auto start = CreateConstant(ishape, ntype, fstart); auto stop = CreateConstant(ishape, ntype, fstop); auto step = CreateConstant(ishape, ntype, fstep); @@ -147,13 +149,13 @@ class ReferenceRangeV4LayerTest : public testing::TestWithParam, pu private: static std::shared_ptr CreateFunction(Shape& ishape, - Shape& oshape, - element::Type& itype, - element::Type& otype, - element::Type& ntype, - float fstart, - float fstop, - float fstep) { + Shape& oshape, + element::Type& itype, + element::Type& otype, + element::Type& ntype, + float fstart, + float fstop, + float fstep) { auto start = CreateConstant(ishape, ntype, fstart); auto stop = CreateConstant(ishape, ntype, fstop); auto step = CreateConstant(ishape, ntype, fstep); @@ -175,26 +177,8 @@ std::vector generateParamsForRangeV0Int() { using T = typename element_type_traits::value_type; std::vector params{ - RangeParams( - ov::Shape{}, - ov::Shape{4}, - IN_ET, - IN_ET, - IN_ET, - std::vector{-5, -2, 1, 4}, - -5, - 6, - 3), - RangeParams( - ov::Shape{}, - ov::Shape{2}, - IN_ET, - IN_ET, - IN_ET, - std::vector{10, 7}, - 10, - 5, - -3)}; + RangeParams(ov::Shape{}, ov::Shape{4}, IN_ET, IN_ET, IN_ET, std::vector{-5, -2, 1, 4}, -5, 6, 3), + RangeParams(ov::Shape{}, ov::Shape{2}, IN_ET, IN_ET, IN_ET, std::vector{10, 7}, 10, 5, -3)}; return params; } @@ -202,18 +186,15 @@ template std::vector generateParamsForRangeV0UnsignedInt() { using T = typename element_type_traits::value_type; - std::vector params{ - RangeParams( - ov::Shape{}, - ov::Shape{10}, - IN_ET, - IN_ET, - IN_ET, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, - 0, - 10, - 1) - }; + std::vector params{RangeParams(ov::Shape{}, + ov::Shape{10}, + IN_ET, + IN_ET, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, + 0, + 10, + 1)}; return params; } @@ -231,15 +212,7 @@ std::vector generateParamsForRangeV0Float() { 0.0f, 1.0f, 0.25f), - RangeParams(ov::Shape{}, - ov::Shape{}, - IN_ET, - IN_ET, - IN_ET, - std::vector{1.0f, 4.f, 7.f}, - 1.0f, - 10.0f, - 3.0f), + RangeParams(ov::Shape{}, ov::Shape{}, IN_ET, IN_ET, IN_ET, std::vector{1.0f, 4.f, 7.f}, 1.0f, 10.0f, 3.0f), RangeParams(ov::Shape{}, ov::Shape{10}, IN_ET, @@ -266,27 +239,8 @@ std::vector generateParamsForRangeV4Int() { using T = typename element_type_traits::value_type; std::vector params{ - RangeParams( - ov::Shape{}, - ov::Shape{4}, - IN_ET, - IN_ET, - IN_ET, - std::vector{-5, -2, 1, 4}, - -5, - 6, - 3), - RangeParams( - ov::Shape{}, - ov::Shape{2}, - IN_ET, - IN_ET, - IN_ET, - std::vector{10, 7}, - 10, - 5, - -3) - }; + RangeParams(ov::Shape{}, ov::Shape{4}, IN_ET, IN_ET, IN_ET, std::vector{-5, -2, 1, 4}, -5, 6, 3), + RangeParams(ov::Shape{}, ov::Shape{2}, IN_ET, IN_ET, IN_ET, std::vector{10, 7}, 10, 5, -3)}; return params; } @@ -295,28 +249,24 @@ template std::vector generateParamsForRangeV4UnsignedInt() { using T = typename element_type_traits::value_type; - std::vector params{ - RangeParams( - ov::Shape{}, - ov::Shape{10}, - IN_ET, - IN_ET, - element::Type_t::f32, - std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, - 1.2f, - 11.3f, - 1.6f), - RangeParams( - ov::Shape{}, - ov::Shape{10}, - IN_ET, - IN_ET, - IN_ET, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, - 0, - 10, - 1) - }; + std::vector params{RangeParams(ov::Shape{}, + ov::Shape{10}, + IN_ET, + IN_ET, + element::Type_t::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, + 1.2f, + 11.3f, + 1.6f), + RangeParams(ov::Shape{}, + ov::Shape{10}, + IN_ET, + IN_ET, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, + 0, + 10, + 1)}; return params; } @@ -352,8 +302,7 @@ std::vector generateParamsForRangeV4Float() { std::vector{2.0f, 1.75f, 1.5f, 1.25f, 1.0f, 0.75f, 0.5f, 0.25f}, 2, 0, - -0.25) - }; + -0.25)}; return params; } @@ -404,16 +353,14 @@ std::vector generateCombinedParamsForRangeV4() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Range_V0_With_Hardcoded_Refs, - ReferenceRangeV0LayerTest, - ::testing::ValuesIn(generateCombinedParamsForRangeV0()), - ReferenceRangeV0LayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Range_V4_With_Hardcoded_Refs, - ReferenceRangeV4LayerTest, - ::testing::ValuesIn(generateCombinedParamsForRangeV4()), - ReferenceRangeV4LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Range_V0_With_Hardcoded_Refs, + ReferenceRangeV0LayerTest, + ::testing::ValuesIn(generateCombinedParamsForRangeV0()), + ReferenceRangeV0LayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Range_V4_With_Hardcoded_Refs, + ReferenceRangeV4LayerTest, + ::testing::ValuesIn(generateCombinedParamsForRangeV4()), + ReferenceRangeV4LayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/rdft.cpp b/src/plugins/template/tests/functional/op_reference/rdft.cpp index 91e247b28918ee..41bfc9d0645ac8 100644 --- a/src/plugins/template/tests/functional/op_reference/rdft.cpp +++ b/src/plugins/template/tests/functional/op_reference/rdft.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/rdft.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/rdft.hpp" using namespace reference_tests; using namespace ov; @@ -90,306 +91,262 @@ TEST_P(ReferenceRDFTLayerTest, CompareWithHardcodedRefs) { } static const std::vector input_data = { - 0.10606491, 0.7454715, 0.57231355, 0.4582412, 0.3847059, 0.27398932, 0.66796243, 0.395475, - 0.2815729, 0.7799197, 0.59909415, 0.12294636, 0.38957402, 0.97498834, 0.46759892, 0.14017141, - 0.04206858, 0.7279963, 0.61560553, 0.9027321, 0.6226334, 0.2601217, 0.5555177, 0.40498647, - 0.14175586, 0.57774633, 0.52652127, 0.9385691, 0.9588788, 0.9844318, 0.23095612, 0.09707925, - 0.24574867, 0.6907577, 0.1974319, 0.8295272, 0.34612727, 0.51401484, 0.66115797, 0.9336245, - 0.06690067, 0.7468897, 0.39028263, 0.53575844, 0.060429193, 0.8913558, 0.77787375, 0.6701197, - 0.7350527, 0.6636995, 0.18176624, 0.8629976, 0.45142895, 0.6497297, 0.159372, 0.40598175, - 0.7988516, 0.7291543, 0.07090418, 0.7697132, 0.4972157, 0.7669217, 0.67975855, 0.13026066, - 0.6587437, 0.24532892, 0.24545169, 0.83795583, 0.105490535, 0.7264323, 0.94568557, 0.7216649, - 0.14389831, 0.7930531, 0.70895344, 0.9724701, 0.9775157, 0.49999878, 0.65569246, 0.26876843, - 0.63248956, 0.85201293, 0.5689624, 0.023386303, 0.5546464, 0.36860028, 0.9603114, 0.39123482, - 0.0380728, 0.89212376, 0.14387614, 0.63858676, 0.10003748, 0.8906635, 0.06681054, 0.7458642, - 0.45452347, 0.54724604, 0.6496482, 0.7818356, 0.6608355, 0.77711326, 0.24588613, 0.013456763, - 0.355845, 0.80388206, 0.027993264, 0.73677206, 0.52755004, 0.9052324, 0.54311025, 0.5367805, - 0.4131242, 0.7752338, 0.109669454, 0.13664648, 0.7828739, 0.9083969, 0.5247593, 0.7493595, - 0.19275227, 0.007190853, 0.6087981, 0.344136, 0.46909887, 0.41924855, 0.7072913, 0.19932869, - 0.5303847, 0.651384, 0.06686331, 0.9717932, 0.65702224, 0.11786682, 0.3154073, 0.88923013, - 0.5564087, 0.91047823, 0.28466642, 0.0934668, 0.88953066, 0.9919338, 0.18322521, 0.8185455, - 0.566391, 0.014207997, 0.29673064, 0.6347744, 0.6801958, 0.39601147, 0.34374171, 0.7216888, - 0.6152569, 0.76679546, 0.5860851, 0.4276813, 0.79339284, 0.13130653, 0.68764234, 0.053128112, - 0.02611321, 0.2982243, 0.7618372, 0.3331729, 0.5468192, 0.15707079, 0.28592056, 0.15286565, - 0.9368963, 0.350671, 0.4336494, 0.08934934, 0.41172776, 0.5850259, 0.70730376, 0.8598349, - 0.088788144, 0.26711187, 0.8002491, 0.19422275, 0.8312039, 0.5198718, 0.40111357, 0.98375803, - 0.77703434, 0.037818834, 0.704231, 0.689808, 0.17102319, 0.42153922, 0.7278252, 0.8030207, - 0.9101717, 0.0199644, 0.13768466, 0.55669, 0.17991355, 0.6720098, 0.7733328, 0.20881335}; + 0.10606491, 0.7454715, 0.57231355, 0.4582412, 0.3847059, 0.27398932, 0.66796243, 0.395475, 0.2815729, + 0.7799197, 0.59909415, 0.12294636, 0.38957402, 0.97498834, 0.46759892, 0.14017141, 0.04206858, 0.7279963, + 0.61560553, 0.9027321, 0.6226334, 0.2601217, 0.5555177, 0.40498647, 0.14175586, 0.57774633, 0.52652127, + 0.9385691, 0.9588788, 0.9844318, 0.23095612, 0.09707925, 0.24574867, 0.6907577, 0.1974319, 0.8295272, + 0.34612727, 0.51401484, 0.66115797, 0.9336245, 0.06690067, 0.7468897, 0.39028263, 0.53575844, 0.060429193, + 0.8913558, 0.77787375, 0.6701197, 0.7350527, 0.6636995, 0.18176624, 0.8629976, 0.45142895, 0.6497297, + 0.159372, 0.40598175, 0.7988516, 0.7291543, 0.07090418, 0.7697132, 0.4972157, 0.7669217, 0.67975855, + 0.13026066, 0.6587437, 0.24532892, 0.24545169, 0.83795583, 0.105490535, 0.7264323, 0.94568557, 0.7216649, + 0.14389831, 0.7930531, 0.70895344, 0.9724701, 0.9775157, 0.49999878, 0.65569246, 0.26876843, 0.63248956, + 0.85201293, 0.5689624, 0.023386303, 0.5546464, 0.36860028, 0.9603114, 0.39123482, 0.0380728, 0.89212376, + 0.14387614, 0.63858676, 0.10003748, 0.8906635, 0.06681054, 0.7458642, 0.45452347, 0.54724604, 0.6496482, + 0.7818356, 0.6608355, 0.77711326, 0.24588613, 0.013456763, 0.355845, 0.80388206, 0.027993264, 0.73677206, + 0.52755004, 0.9052324, 0.54311025, 0.5367805, 0.4131242, 0.7752338, 0.109669454, 0.13664648, 0.7828739, + 0.9083969, 0.5247593, 0.7493595, 0.19275227, 0.007190853, 0.6087981, 0.344136, 0.46909887, 0.41924855, + 0.7072913, 0.19932869, 0.5303847, 0.651384, 0.06686331, 0.9717932, 0.65702224, 0.11786682, 0.3154073, + 0.88923013, 0.5564087, 0.91047823, 0.28466642, 0.0934668, 0.88953066, 0.9919338, 0.18322521, 0.8185455, + 0.566391, 0.014207997, 0.29673064, 0.6347744, 0.6801958, 0.39601147, 0.34374171, 0.7216888, 0.6152569, + 0.76679546, 0.5860851, 0.4276813, 0.79339284, 0.13130653, 0.68764234, 0.053128112, 0.02611321, 0.2982243, + 0.7618372, 0.3331729, 0.5468192, 0.15707079, 0.28592056, 0.15286565, 0.9368963, 0.350671, 0.4336494, + 0.08934934, 0.41172776, 0.5850259, 0.70730376, 0.8598349, 0.088788144, 0.26711187, 0.8002491, 0.19422275, + 0.8312039, 0.5198718, 0.40111357, 0.98375803, 0.77703434, 0.037818834, 0.704231, 0.689808, 0.17102319, + 0.42153922, 0.7278252, 0.8030207, 0.9101717, 0.0199644, 0.13768466, 0.55669, 0.17991355, 0.6720098, + 0.7733328, 0.20881335}; static const std::vector expected_rdft1d_results_1 = { - 4.6657147, -1.1622906e-06, 0.21456887, -0.14946258, -0.20476034, -0.37063062, - -0.31414136, 0.5099413, -1.1779613, 0.07057127, -0.64047664, -1.0058284e-07, - 4.982774, -1.1771917e-06, 0.6607505, 0.18829148, -0.9772357, 1.4243596, - 0.8640026, 0.34923682, 0.33401352, 0.25859502, -0.7548928, 8.940697e-08, - 5.9711604, -1.4901161e-06, 0.5638976, 1.5429841, -0.52065414, 0.24638398, - -0.27140495, 0.5040715, 0.5360231, 0.3234269, -0.36054826, 1.7508864e-07, - 4.7464237, -1.2218952e-06, -0.29650804, 0.80609477, -0.161426, 1.0022418, - -0.50812817, 0.7967348, 0.4394225, -0.1588624, -1.3835809, -7.4505806e-08, - 5.53836, -1.7136335e-06, -0.38635445, 0.8284859, -0.23278837, -0.63777345, - -0.93614054, 0.3215857, -0.14075133, -0.67071164, -1.4772836, 2.0861626e-07, - 5.0798974, -1.5944242e-06, 0.056767445, 0.03468219, -0.1497254, -0.9672509, - 0.2603209, 0.69644475, -0.9208536, 0.006730467, -1.7552528, 2.682209e-07, - 4.893558, -1.6242266e-06, 0.6719861, -0.13982919, 0.064845346, -0.39896214, - 0.21785057, -0.5099982, -0.65526295, 1.4383471, -0.52023906, 2.5331974e-07, - 6.687699, -1.5497208e-06, -0.7423769, 0.09968524, 1.052381, -0.21306956, - 0.5875206, -0.3038844, 0.3991575, -1.1895186, 0.17579001, 3.874302e-07, - 5.2818384, -1.1026859e-06, 0.5087582, 0.106959194, 1.1816688, -0.87592727, - 0.03740315, 0.5197907, -1.3198637, 0.6398836, 0.22712436, 2.2351742e-08, - 5.0190897, -1.5646219e-06, -0.087282926, 0.50819266, -0.28002462, 0.29240948, - -0.32303664, 0.38377762, -0.0051696897, -0.99301195, -2.189299, 2.0861626e-07, - 5.0545654, -1.5795231e-06, 0.9146397, 0.83839166, 0.870533, 0.17405808, - -0.56308234, -0.7806684, 0.26397777, 0.6880482, -1.4183462, 2.682209e-07, - 5.479953, -1.2665987e-06, 0.49444157, 0.7534672, -0.76784146, -0.4507342, - 0.88815784, 0.6985409, -0.2727425, -0.25027415, -0.7328796, 2.682209e-07, - 4.1296124, -5.662441e-07, -0.46133032, 0.30635798, -0.18225375, 0.42515472, - -0.5484285, 0.9704039, -0.35255045, 0.17549685, 0.8870368, -3.1292439e-07, - 4.8632016, -1.8924475e-06, -0.6926452, 0.025076404, -0.039108217, -1.7492937, - -0.8120377, -0.85315156, -0.0022608787, 0.45002514, -1.1024668, 3.501773e-07, - 5.4715447, -1.4901161e-06, 1.1176248, -0.2109062, -0.27492502, 0.08983741, - 1.1903813, -1.007312, -0.20150042, -0.83919466, -0.23939973, 4.917383e-07, - 5.1267176, -9.983778e-07, -0.44803134, -0.8066604, -0.3435102, -0.41692197, - -0.22457689, -0.1076939, -0.29129186, -1.1880502, 0.9255183, -1.6391277e-07, - 3.8495903, -5.5134296e-07, 0.09505272, -0.12751618, -1.1264827, 0.5068884, - -1.055237, -0.19516481, -0.34035242, -0.15379356, 1.2655814, -2.6077032e-07, - 4.4372616, -9.23872e-07, -0.72962606, -0.23475963, -0.04278487, 1.1032158, - -0.558924, -0.5300043, 1.0578637, -0.2466627, 0.44617313, -7.8231096e-08, - 5.5374002, -1.4156103e-06, 0.016273111, -0.5989829, -0.19913958, 0.013256833, - 1.8512837, 0.14526272, -0.39700353, -0.07573915, 0.23181, 2.9429793e-07, - 4.989425, -1.4901161e-06, 1.0391837, 0.16554561, -0.22647032, -1.0689808, - -0.84556, -0.82779336, 0.9430445, 0.37618563, 0.4684292, -9.685755e-08}; - -static const std::vector expected_rdft1d_results_2 = { - 2.266797, -8.195639e-08, -0.37842733, -0.41015846, -0.48980892, -0.10356337, - 2.5542018, -2.2351742e-08, -0.3223713, 0.671882, 0.54300576, -0.35418037, - 1.985015, -2.2351742e-08, -0.030243821, -0.20105253, 0.59431964, 0.07358998, - 1.4619737, -7.450581e-09, -0.4356845, 0.35701087, 0.28208786, -0.36424285, - 1.8002605, -1.1920929e-07, -0.43280697, -0.56735414, -0.30007166, -0.541847, - 2.3052943, -1.2293458e-07, -0.39316025, -0.5526293, -0.30507135, -0.6021758, - 2.7329001, -6.7055225e-08, 0.28245124, -0.42586988, -0.40586215, 0.4590181, - 3.3132548, -5.9604645e-08, 0.6297612, 0.3694744, 0.077824846, -0.6248544, - 2.6314974, -2.9802322e-08, 0.58795106, -0.60349375, -0.3224758, 0.34408605, - 1.8399743, -9.685755e-08, -0.43963802, -0.079073176, -0.120658875, -1.0880115, - 2.0531366, -4.4703484e-08, 0.80112594, -0.53726834, -0.17560546, -0.026561722, - 2.3779182, -9.685755e-08, -0.21852754, -0.19336401, 0.38734403, -0.5954362, - 1.6219761, 7.450581e-09, -0.43100592, 0.28373614, 0.101898566, 0.52321124, - 2.128953, -1.4901161e-07, -0.1622684, -0.94116735, -0.7350497, 0.12695336, - 3.449626, -8.940697e-08, 0.56062996, -0.031283244, -0.06161648, -0.8543532, - 3.033568, -8.195639e-08, -0.37023768, -0.03989461, -0.28719214, -0.22382751, - 1.9661667, -1.4901161e-08, -0.59863573, -0.015534669, -0.31916466, 0.55380434, - 2.227056, -5.2154064e-08, -0.12656188, 0.6895717, 0.097157195, 0.19840825, - 3.5129817, -2.1234155e-07, 0.11158541, 0.5870459, 0.20993343, -0.40297145, - 2.5986667, 0.0, 0.26602313, -1.1560227, 0.2542065, 0.45556274}; + 4.6657147, -1.1622906e-06, 0.21456887, -0.14946258, -0.20476034, -0.37063062, -0.31414136, + 0.5099413, -1.1779613, 0.07057127, -0.64047664, -1.0058284e-07, 4.982774, -1.1771917e-06, + 0.6607505, 0.18829148, -0.9772357, 1.4243596, 0.8640026, 0.34923682, 0.33401352, + 0.25859502, -0.7548928, 8.940697e-08, 5.9711604, -1.4901161e-06, 0.5638976, 1.5429841, + -0.52065414, 0.24638398, -0.27140495, 0.5040715, 0.5360231, 0.3234269, -0.36054826, + 1.7508864e-07, 4.7464237, -1.2218952e-06, -0.29650804, 0.80609477, -0.161426, 1.0022418, + -0.50812817, 0.7967348, 0.4394225, -0.1588624, -1.3835809, -7.4505806e-08, 5.53836, + -1.7136335e-06, -0.38635445, 0.8284859, -0.23278837, -0.63777345, -0.93614054, 0.3215857, + -0.14075133, -0.67071164, -1.4772836, 2.0861626e-07, 5.0798974, -1.5944242e-06, 0.056767445, + 0.03468219, -0.1497254, -0.9672509, 0.2603209, 0.69644475, -0.9208536, 0.006730467, + -1.7552528, 2.682209e-07, 4.893558, -1.6242266e-06, 0.6719861, -0.13982919, 0.064845346, + -0.39896214, 0.21785057, -0.5099982, -0.65526295, 1.4383471, -0.52023906, 2.5331974e-07, + 6.687699, -1.5497208e-06, -0.7423769, 0.09968524, 1.052381, -0.21306956, 0.5875206, + -0.3038844, 0.3991575, -1.1895186, 0.17579001, 3.874302e-07, 5.2818384, -1.1026859e-06, + 0.5087582, 0.106959194, 1.1816688, -0.87592727, 0.03740315, 0.5197907, -1.3198637, + 0.6398836, 0.22712436, 2.2351742e-08, 5.0190897, -1.5646219e-06, -0.087282926, 0.50819266, + -0.28002462, 0.29240948, -0.32303664, 0.38377762, -0.0051696897, -0.99301195, -2.189299, + 2.0861626e-07, 5.0545654, -1.5795231e-06, 0.9146397, 0.83839166, 0.870533, 0.17405808, + -0.56308234, -0.7806684, 0.26397777, 0.6880482, -1.4183462, 2.682209e-07, 5.479953, + -1.2665987e-06, 0.49444157, 0.7534672, -0.76784146, -0.4507342, 0.88815784, 0.6985409, + -0.2727425, -0.25027415, -0.7328796, 2.682209e-07, 4.1296124, -5.662441e-07, -0.46133032, + 0.30635798, -0.18225375, 0.42515472, -0.5484285, 0.9704039, -0.35255045, 0.17549685, + 0.8870368, -3.1292439e-07, 4.8632016, -1.8924475e-06, -0.6926452, 0.025076404, -0.039108217, + -1.7492937, -0.8120377, -0.85315156, -0.0022608787, 0.45002514, -1.1024668, 3.501773e-07, + 5.4715447, -1.4901161e-06, 1.1176248, -0.2109062, -0.27492502, 0.08983741, 1.1903813, + -1.007312, -0.20150042, -0.83919466, -0.23939973, 4.917383e-07, 5.1267176, -9.983778e-07, + -0.44803134, -0.8066604, -0.3435102, -0.41692197, -0.22457689, -0.1076939, -0.29129186, + -1.1880502, 0.9255183, -1.6391277e-07, 3.8495903, -5.5134296e-07, 0.09505272, -0.12751618, + -1.1264827, 0.5068884, -1.055237, -0.19516481, -0.34035242, -0.15379356, 1.2655814, + -2.6077032e-07, 4.4372616, -9.23872e-07, -0.72962606, -0.23475963, -0.04278487, 1.1032158, + -0.558924, -0.5300043, 1.0578637, -0.2466627, 0.44617313, -7.8231096e-08, 5.5374002, + -1.4156103e-06, 0.016273111, -0.5989829, -0.19913958, 0.013256833, 1.8512837, 0.14526272, + -0.39700353, -0.07573915, 0.23181, 2.9429793e-07, 4.989425, -1.4901161e-06, 1.0391837, + 0.16554561, -0.22647032, -1.0689808, -0.84556, -0.82779336, 0.9430445, 0.37618563, + 0.4684292, -9.685755e-08}; + +static const std::vector expected_rdft1d_results_2 = {2.266797, -8.195639e-08, -0.37842733, -0.41015846, + -0.48980892, -0.10356337, 2.5542018, -2.2351742e-08, + -0.3223713, 0.671882, 0.54300576, -0.35418037, + 1.985015, -2.2351742e-08, -0.030243821, -0.20105253, + 0.59431964, 0.07358998, 1.4619737, -7.450581e-09, + -0.4356845, 0.35701087, 0.28208786, -0.36424285, + 1.8002605, -1.1920929e-07, -0.43280697, -0.56735414, + -0.30007166, -0.541847, 2.3052943, -1.2293458e-07, + -0.39316025, -0.5526293, -0.30507135, -0.6021758, + 2.7329001, -6.7055225e-08, 0.28245124, -0.42586988, + -0.40586215, 0.4590181, 3.3132548, -5.9604645e-08, + 0.6297612, 0.3694744, 0.077824846, -0.6248544, + 2.6314974, -2.9802322e-08, 0.58795106, -0.60349375, + -0.3224758, 0.34408605, 1.8399743, -9.685755e-08, + -0.43963802, -0.079073176, -0.120658875, -1.0880115, + 2.0531366, -4.4703484e-08, 0.80112594, -0.53726834, + -0.17560546, -0.026561722, 2.3779182, -9.685755e-08, + -0.21852754, -0.19336401, 0.38734403, -0.5954362, + 1.6219761, 7.450581e-09, -0.43100592, 0.28373614, + 0.101898566, 0.52321124, 2.128953, -1.4901161e-07, + -0.1622684, -0.94116735, -0.7350497, 0.12695336, + 3.449626, -8.940697e-08, 0.56062996, -0.031283244, + -0.06161648, -0.8543532, 3.033568, -8.195639e-08, + -0.37023768, -0.03989461, -0.28719214, -0.22382751, + 1.9661667, -1.4901161e-08, -0.59863573, -0.015534669, + -0.31916466, 0.55380434, 2.227056, -5.2154064e-08, + -0.12656188, 0.6895717, 0.097157195, 0.19840825, + 3.5129817, -2.1234155e-07, 0.11158541, 0.5870459, + 0.20993343, -0.40297145, 2.5986667, 0.0, + 0.26602313, -1.1560227, 0.2542065, 0.45556274}; static const std::vector expected_rdft1d_results_3 = { - 4.665715, -1.6093254e-06, -0.5430559, -0.5752678, -0.37596112, -1.1571281, - -0.46793216, -0.94566363, 0.6854232, -0.3444838, -0.674704, 0.5946392, - -0.64047587, 1.3560057e-06, 4.9827743, -1.7434359e-06, -0.43517, -0.049020194, - -1.4773891, -1.0811031, 1.2506557, 0.5371344, 1.2869358, -0.14998645, - 0.8555907, 0.3693859, -0.7548918, 1.5944242e-06, 5.971161, -1.5199184e-06, - -1.2643411, 0.85635287, -0.1801207, -1.7264944, 0.6412285, -0.4787441, - 0.82227707, 0.65098876, 0.9114491, 0.40323836, -0.36054718, 1.2852252e-06, - 4.7464237, -1.66893e-06, -1.5010594, 0.2253451, -0.87915635, -0.4252541, - 0.4976693, -0.6554581, 0.928985, 0.8035921, 0.6578763, -0.15220329, - -1.3835799, 1.0430813e-06, 5.5383606, -1.4901161e-06, -1.619024, -0.10987502, - 0.20661727, -1.3774645, -0.3057741, -1.0960662, 0.2971667, 0.46700704, - -0.20812088, -0.602368, -1.4772825, 9.3877316e-07, 5.0798974, -1.758337e-06, - -0.7421876, -0.61749315, 0.21938956, -1.3415859, -0.838238, -0.6598083, - 1.0601404, -0.7129184, -0.27083004, 0.31763482, -1.7552516, 1.4677644e-06, - 4.893558, -1.4975667e-06, -0.06445231, -0.55879503, 0.08908144, -1.2869594, - 0.33623943, -0.7704663, -0.047739983, -1.0678453, 0.48350462, 1.5768427, - -0.52023804, 1.1697412e-06, 6.687699, -1.3113022e-06, -1.292419, -1.2920969, - 1.2041754, -0.2943018, 1.1889167, -0.66985166, 1.1336832, -0.13731277, - 0.008011267, -0.9506076, 0.1757915, 1.1026859e-06, 5.2818394, -1.4305115e-06, - -0.25987166, -0.48605326, 0.90237427, -0.8028362, -0.3040653, -1.6981151, - 1.1215456, -0.7120959, -0.4195284, 1.3941492, 0.22712523, 8.046627e-07, - 5.01909, -1.7881393e-06, -1.1856917, -0.10931289, -0.5164983, -0.9724103, - 0.30577338, -0.72837675, 0.89680094, 0.21036407, -0.052024096, -0.9455472, - -2.1892984, 1.4305115e-06, 5.054565, -1.5050173e-06, -0.3471575, 0.40542153, - 0.36438322, -0.9765247, 1.2703501, -1.7359983, -0.1160066, -0.25323528, - 0.9753329, 0.5339062, -1.418345, 9.834766e-07, 5.4799523, -1.7285347e-06, - -0.7905842, 0.093313254, 0.068526804, -1.8504739, -0.01845923, 0.26084417, - 1.5358877, -0.4159652, 0.089752786, 0.089908056, -0.7328786, 1.4007092e-06, - 4.129612, -9.536743e-07, -1.2393575, -0.28046644, -0.58673245, -0.39608067, - -0.12385368, -0.53435826, 0.77853805, 0.7645384, -0.18040559, 0.6678516, - 0.88703763, 8.046627e-07, 4.8632016, -1.0430813e-06, -1.1780663, -1.0952923, - 1.1691413, -1.4023741, -0.546494, -0.92614484, -1.1796933, -0.31762218, - 0.25592417, 0.0959474, -1.1024656, 1.013279e-06, 5.471545, -1.6987324e-06, - 0.35812324, -0.66833705, 0.07725692, -1.6537004, 1.6561611, 0.051166296, - 0.865453, -1.1392289, -0.23588535, -0.5480979, -0.2393986, 1.3411045e-06, - 5.126718, -9.23872e-07, -0.6379836, -1.6675751, 0.013057679, -0.9891113, - 0.20881936, -0.30439606, 0.37222707, 0.25244698, -0.9197892, -0.77782196, - 0.9255192, 1.1101365e-06, 3.8495903, -7.4505806e-07, -0.63088936, -0.4556699, - -1.1905057, -1.2522144, 0.46207082, -0.31992733, -0.4309795, 0.74295896, - -0.6106033, 0.18823686, 1.2655822, 7.748604e-07, 4.4372616, -7.0780516e-07, - -1.1016369, -1.0079124, -0.6083025, -0.0011255145, 1.4406854, -0.2912693, - -0.26610214, 0.87299407, 0.69553405, -0.45576566, 0.44617438, 7.4505806e-07, - 5.5374007, -1.5944242e-06, -0.32642078, -1.3683549, 0.079301864, -0.83741367, - 0.67391664, 0.69433576, 1.6423957, -1.1923066, 0.0334223, 0.37603495, - 0.23181117, 1.4156103e-06, 4.9894247, -7.748604e-07, 0.1788401, -0.39274544, - 0.78422666, -2.1340246, 0.5487572, -0.8765497, -0.7899384, 0.5434137, - 0.91613716, 0.08274247, 0.46843058, 8.34465e-07 -}; + 4.665715, -1.6093254e-06, -0.5430559, -0.5752678, -0.37596112, -1.1571281, -0.46793216, + -0.94566363, 0.6854232, -0.3444838, -0.674704, 0.5946392, -0.64047587, 1.3560057e-06, + 4.9827743, -1.7434359e-06, -0.43517, -0.049020194, -1.4773891, -1.0811031, 1.2506557, + 0.5371344, 1.2869358, -0.14998645, 0.8555907, 0.3693859, -0.7548918, 1.5944242e-06, + 5.971161, -1.5199184e-06, -1.2643411, 0.85635287, -0.1801207, -1.7264944, 0.6412285, + -0.4787441, 0.82227707, 0.65098876, 0.9114491, 0.40323836, -0.36054718, 1.2852252e-06, + 4.7464237, -1.66893e-06, -1.5010594, 0.2253451, -0.87915635, -0.4252541, 0.4976693, + -0.6554581, 0.928985, 0.8035921, 0.6578763, -0.15220329, -1.3835799, 1.0430813e-06, + 5.5383606, -1.4901161e-06, -1.619024, -0.10987502, 0.20661727, -1.3774645, -0.3057741, + -1.0960662, 0.2971667, 0.46700704, -0.20812088, -0.602368, -1.4772825, 9.3877316e-07, + 5.0798974, -1.758337e-06, -0.7421876, -0.61749315, 0.21938956, -1.3415859, -0.838238, + -0.6598083, 1.0601404, -0.7129184, -0.27083004, 0.31763482, -1.7552516, 1.4677644e-06, + 4.893558, -1.4975667e-06, -0.06445231, -0.55879503, 0.08908144, -1.2869594, 0.33623943, + -0.7704663, -0.047739983, -1.0678453, 0.48350462, 1.5768427, -0.52023804, 1.1697412e-06, + 6.687699, -1.3113022e-06, -1.292419, -1.2920969, 1.2041754, -0.2943018, 1.1889167, + -0.66985166, 1.1336832, -0.13731277, 0.008011267, -0.9506076, 0.1757915, 1.1026859e-06, + 5.2818394, -1.4305115e-06, -0.25987166, -0.48605326, 0.90237427, -0.8028362, -0.3040653, + -1.6981151, 1.1215456, -0.7120959, -0.4195284, 1.3941492, 0.22712523, 8.046627e-07, + 5.01909, -1.7881393e-06, -1.1856917, -0.10931289, -0.5164983, -0.9724103, 0.30577338, + -0.72837675, 0.89680094, 0.21036407, -0.052024096, -0.9455472, -2.1892984, 1.4305115e-06, + 5.054565, -1.5050173e-06, -0.3471575, 0.40542153, 0.36438322, -0.9765247, 1.2703501, + -1.7359983, -0.1160066, -0.25323528, 0.9753329, 0.5339062, -1.418345, 9.834766e-07, + 5.4799523, -1.7285347e-06, -0.7905842, 0.093313254, 0.068526804, -1.8504739, -0.01845923, + 0.26084417, 1.5358877, -0.4159652, 0.089752786, 0.089908056, -0.7328786, 1.4007092e-06, + 4.129612, -9.536743e-07, -1.2393575, -0.28046644, -0.58673245, -0.39608067, -0.12385368, + -0.53435826, 0.77853805, 0.7645384, -0.18040559, 0.6678516, 0.88703763, 8.046627e-07, + 4.8632016, -1.0430813e-06, -1.1780663, -1.0952923, 1.1691413, -1.4023741, -0.546494, + -0.92614484, -1.1796933, -0.31762218, 0.25592417, 0.0959474, -1.1024656, 1.013279e-06, + 5.471545, -1.6987324e-06, 0.35812324, -0.66833705, 0.07725692, -1.6537004, 1.6561611, + 0.051166296, 0.865453, -1.1392289, -0.23588535, -0.5480979, -0.2393986, 1.3411045e-06, + 5.126718, -9.23872e-07, -0.6379836, -1.6675751, 0.013057679, -0.9891113, 0.20881936, + -0.30439606, 0.37222707, 0.25244698, -0.9197892, -0.77782196, 0.9255192, 1.1101365e-06, + 3.8495903, -7.4505806e-07, -0.63088936, -0.4556699, -1.1905057, -1.2522144, 0.46207082, + -0.31992733, -0.4309795, 0.74295896, -0.6106033, 0.18823686, 1.2655822, 7.748604e-07, + 4.4372616, -7.0780516e-07, -1.1016369, -1.0079124, -0.6083025, -0.0011255145, 1.4406854, + -0.2912693, -0.26610214, 0.87299407, 0.69553405, -0.45576566, 0.44617438, 7.4505806e-07, + 5.5374007, -1.5944242e-06, -0.32642078, -1.3683549, 0.079301864, -0.83741367, 0.67391664, + 0.69433576, 1.6423957, -1.1923066, 0.0334223, 0.37603495, 0.23181117, 1.4156103e-06, + 4.9894247, -7.748604e-07, 0.1788401, -0.39274544, 0.78422666, -2.1340246, 0.5487572, + -0.8765497, -0.7899384, 0.5434137, 0.91613716, 0.08274247, 0.46843058, 8.34465e-07}; const std::vector expected_rdft2d_results = { - 52.8665, -2.9623508e-05, 1.1642078, 3.826082, -0.22771922, -0.49822173, - -0.3857528, 3.2676966, -2.5112464, -0.27454787, -8.678656, 3.7550926e-06, - -0.818072, 0.8330209, 3.4618711, -0.2419473, 1.7408192, 5.744002, - 1.8477443, 2.039329, 0.3268112, -2.7421296, 0.6809025, 1.7613728, - -2.294264, -0.8984407, -0.2868184, -3.2426705, -0.801461, -0.58971727, - -1.463435, -2.5413132, 0.116907075, -0.5013529, -2.8377397, -2.8455539, - -0.13475686, -1.3145845, -2.2820292, -0.199, -0.056986623, 0.12560216, - -0.589707, -1.7577857, -0.5274223, -1.0395792, 0.53813136, -1.7159984, - 0.22503978, 2.902198, -1.8643543, -1.8789856, 2.1722724, -2.068454, - 0.59446484, 0.6067899, 1.5525781, 1.7612485, 1.1877432, -0.48152098, - -0.16525066, 1.5497208e-06, 1.9815066, 0.55218977, 0.80434155, -3.575598, - -2.1471107, -0.57691807, -3.004384, 3.8775828, 3.1358109, -6.2584877e-07, - 0.22504184, -2.9021916, 1.0378464, 0.9877456, 0.38395065, -1.6089694, - -0.5107449, 1.8621777, -4.960479, -1.8983803, 1.187743, 0.48151842, - -0.1347583, 1.3145843, -0.9968031, -1.3782079, 0.9922035, 1.6614089, - -0.83039653, -0.043888614, 1.9431384, -1.6448143, 0.5381324, 1.7159982, - -2.2942696, 0.8984335, 1.3057998, -0.26607463, -3.2994738, -1.9240448, - 1.4963659, 2.8365738, -4.691832, 1.2995429, -2.8377357, 2.8455553, - -0.8180722, -0.8330165, -1.3755352, 0.34623986, -3.7555497, -0.9723124, - -1.1528367, -0.593254, -0.023679793, 1.8681414, 0.6809023, -1.7613728, - 48.939255, -2.4735928e-05, 1.3455832, 0.11001387, -2.3319814, -1.3735183, - -0.6780232, -2.4875786, 0.40718403, -1.0639579, 0.7314569, -1.2665987e-07, - 0.97006464, -0.30789328, 3.3290033, 2.7749023, -0.7520597, -0.98800826, - 1.3100916, 1.1514524, 1.1085359, 4.348257, -2.839456, 2.4404035, - 0.9518837, 2.1538901, 3.8438358, 2.410589, 3.0649068, 0.95690995, - 2.2213395, 0.66509914, -0.4409917, -0.37408838, -0.6316552, -1.5842111, - -0.72352415, -2.5862057, 0.2678757, 0.610149, 2.9564474, 0.08470708, - -2.0889034, -8.370071, -0.16373271, 2.0413866, -3.3811545, 2.0487003, - 0.0316903, -1.078939, -2.5515578, -0.16135174, -0.17406325, 1.2709827, - -0.67006403, -1.6342779, 0.42163712, 2.1418998, -0.96614444, 1.9175051, - -0.8538456, 2.8014183e-06, 2.0189362, 0.30467552, 0.5074463, 3.7919073, - 2.427857, 0.7526233, -2.4620402, 0.65359443, 0.7219074, -2.3841858e-07, - 0.03169757, 1.0789458, -2.1129081, -1.0250417, 4.8181386, -0.39162922, - -1.2349386, 1.8470186, -0.49495277, -1.5516026, -0.96614635, -1.9175065, - -0.7235237, 2.5862021, 0.677946, 2.0370173, -0.29536027, 0.6505451, - -2.8572361, 2.3176546, 3.4459226, 1.1869265, -3.3811545, -2.048697, - 0.95187366, -2.1538982, 1.808088, -1.1755496, -2.7418838, -1.6770658, - -3.5766084, -2.8320727, -0.02944839, -1.6522555, -0.63165283, 1.5842092, - 0.9700667, 0.30789307, 0.5195943, 2.4985125, 3.6537378, -0.5842519, - -0.4843334, 0.78346854, 0.84766304, 1.1503224, -2.839459, -2.440402}; + 52.8665, -2.9623508e-05, 1.1642078, 3.826082, -0.22771922, -0.49822173, -0.3857528, 3.2676966, + -2.5112464, -0.27454787, -8.678656, 3.7550926e-06, -0.818072, 0.8330209, 3.4618711, -0.2419473, + 1.7408192, 5.744002, 1.8477443, 2.039329, 0.3268112, -2.7421296, 0.6809025, 1.7613728, + -2.294264, -0.8984407, -0.2868184, -3.2426705, -0.801461, -0.58971727, -1.463435, -2.5413132, + 0.116907075, -0.5013529, -2.8377397, -2.8455539, -0.13475686, -1.3145845, -2.2820292, -0.199, + -0.056986623, 0.12560216, -0.589707, -1.7577857, -0.5274223, -1.0395792, 0.53813136, -1.7159984, + 0.22503978, 2.902198, -1.8643543, -1.8789856, 2.1722724, -2.068454, 0.59446484, 0.6067899, + 1.5525781, 1.7612485, 1.1877432, -0.48152098, -0.16525066, 1.5497208e-06, 1.9815066, 0.55218977, + 0.80434155, -3.575598, -2.1471107, -0.57691807, -3.004384, 3.8775828, 3.1358109, -6.2584877e-07, + 0.22504184, -2.9021916, 1.0378464, 0.9877456, 0.38395065, -1.6089694, -0.5107449, 1.8621777, + -4.960479, -1.8983803, 1.187743, 0.48151842, -0.1347583, 1.3145843, -0.9968031, -1.3782079, + 0.9922035, 1.6614089, -0.83039653, -0.043888614, 1.9431384, -1.6448143, 0.5381324, 1.7159982, + -2.2942696, 0.8984335, 1.3057998, -0.26607463, -3.2994738, -1.9240448, 1.4963659, 2.8365738, + -4.691832, 1.2995429, -2.8377357, 2.8455553, -0.8180722, -0.8330165, -1.3755352, 0.34623986, + -3.7555497, -0.9723124, -1.1528367, -0.593254, -0.023679793, 1.8681414, 0.6809023, -1.7613728, + 48.939255, -2.4735928e-05, 1.3455832, 0.11001387, -2.3319814, -1.3735183, -0.6780232, -2.4875786, + 0.40718403, -1.0639579, 0.7314569, -1.2665987e-07, 0.97006464, -0.30789328, 3.3290033, 2.7749023, + -0.7520597, -0.98800826, 1.3100916, 1.1514524, 1.1085359, 4.348257, -2.839456, 2.4404035, + 0.9518837, 2.1538901, 3.8438358, 2.410589, 3.0649068, 0.95690995, 2.2213395, 0.66509914, + -0.4409917, -0.37408838, -0.6316552, -1.5842111, -0.72352415, -2.5862057, 0.2678757, 0.610149, + 2.9564474, 0.08470708, -2.0889034, -8.370071, -0.16373271, 2.0413866, -3.3811545, 2.0487003, + 0.0316903, -1.078939, -2.5515578, -0.16135174, -0.17406325, 1.2709827, -0.67006403, -1.6342779, + 0.42163712, 2.1418998, -0.96614444, 1.9175051, -0.8538456, 2.8014183e-06, 2.0189362, 0.30467552, + 0.5074463, 3.7919073, 2.427857, 0.7526233, -2.4620402, 0.65359443, 0.7219074, -2.3841858e-07, + 0.03169757, 1.0789458, -2.1129081, -1.0250417, 4.8181386, -0.39162922, -1.2349386, 1.8470186, + -0.49495277, -1.5516026, -0.96614635, -1.9175065, -0.7235237, 2.5862021, 0.677946, 2.0370173, + -0.29536027, 0.6505451, -2.8572361, 2.3176546, 3.4459226, 1.1869265, -3.3811545, -2.048697, + 0.95187366, -2.1538982, 1.808088, -1.1755496, -2.7418838, -1.6770658, -3.5766084, -2.8320727, + -0.02944839, -1.6522555, -0.63165283, 1.5842092, 0.9700667, 0.30789307, 0.5195943, 2.4985125, + 3.6537378, -0.5842519, -0.4843334, 0.78346854, 0.84766304, 1.1503224, -2.839459, -2.440402}; const std::vector expected_rdft2d_results_2 = { - 25.904434, -8.46386e-06, -5.3626504, 0.3475349, -2.7060094, -5.767444, - 1.615847, -2.6387978, 4.020789, 1.4271183, 1.5420923, 0.6126925, - -4.6167765, 5.5730343e-06, -0.753784, -0.19148755, 1.4881928, -2.7645326, - -0.39467168, 1.014636, 0.5598, -1.7654291, -0.91835654, -2.3019042, - -0.49356225, -0.8411435, 0.080773115, -1.2883577, -0.5341466, 1.4913602, - -0.30008763, -0.5831754, 1.7365295, 1.821624, -0.08851206, -1.622279, - -0.27249795, -0.834725, -0.6706438, 0.4766277, 0.62642634, 0.5483514, - -0.5341469, -1.4913592, 0.8286207, 0.35826343, -1.0869694, -1.4876881, - -1.6723244, -0.06565219, 0.16255295, 0.5317876, -0.75649667, 1.2447717, - 0.6264261, -0.5483517, -0.7537827, 0.19148779, 0.6306459, -0.23442982, - 0.57131517, -1.366768, -2.7544713, 1.3638397, 0.43463084, -0.5446956, - -2.9949086, 1.4802479, 0.080771565, 1.2883584, 24.998875, -7.390976e-06, - -3.1970425, -1.5453612, 1.0925753, -6.279154, 2.237704, -2.8844912, - 1.8841789, -1.3615136, 0.90471864, 0.8395144, -2.6060505, 4.976988e-06, - 1.1634235, 0.42319643, 2.678257, 2.4692535, 0.34259582, 0.43598562, - 2.748452, 0.88622695, 2.2745323, -2.8840196, 1.8120161, -0.27884078, - -1.5445104, -0.7000726, -1.0264511, -0.7026249, -1.071573, 1.062395, - -0.64628685, -0.36214483, -0.5110928, -1.0534683, -2.786768, 2.6113648, - 0.94799054, 0.53423727, -0.69832724, 2.1821892, -1.0264513, 0.70262754, - -0.41705567, -0.17140968, 1.4991179, 2.9674625, -0.012362838, -3.8260121, - -1.5786235, -0.32526863, 1.2857957, 1.7469958, -0.6983267, -2.1821907, - 1.1634252, -0.42319855, 0.2716269, 0.21222934, -0.46608746, -1.6447732, - 1.8890494, -1.8022469, -0.37335354, 0.69326025, -0.07385725, -0.1723765, - -1.5445105, 0.7000739}; + 25.904434, -8.46386e-06, -5.3626504, 0.3475349, -2.7060094, -5.767444, 1.615847, -2.6387978, + 4.020789, 1.4271183, 1.5420923, 0.6126925, -4.6167765, 5.5730343e-06, -0.753784, -0.19148755, + 1.4881928, -2.7645326, -0.39467168, 1.014636, 0.5598, -1.7654291, -0.91835654, -2.3019042, + -0.49356225, -0.8411435, 0.080773115, -1.2883577, -0.5341466, 1.4913602, -0.30008763, -0.5831754, + 1.7365295, 1.821624, -0.08851206, -1.622279, -0.27249795, -0.834725, -0.6706438, 0.4766277, + 0.62642634, 0.5483514, -0.5341469, -1.4913592, 0.8286207, 0.35826343, -1.0869694, -1.4876881, + -1.6723244, -0.06565219, 0.16255295, 0.5317876, -0.75649667, 1.2447717, 0.6264261, -0.5483517, + -0.7537827, 0.19148779, 0.6306459, -0.23442982, 0.57131517, -1.366768, -2.7544713, 1.3638397, + 0.43463084, -0.5446956, -2.9949086, 1.4802479, 0.080771565, 1.2883584, 24.998875, -7.390976e-06, + -3.1970425, -1.5453612, 1.0925753, -6.279154, 2.237704, -2.8844912, 1.8841789, -1.3615136, + 0.90471864, 0.8395144, -2.6060505, 4.976988e-06, 1.1634235, 0.42319643, 2.678257, 2.4692535, + 0.34259582, 0.43598562, 2.748452, 0.88622695, 2.2745323, -2.8840196, 1.8120161, -0.27884078, + -1.5445104, -0.7000726, -1.0264511, -0.7026249, -1.071573, 1.062395, -0.64628685, -0.36214483, + -0.5110928, -1.0534683, -2.786768, 2.6113648, 0.94799054, 0.53423727, -0.69832724, 2.1821892, + -1.0264513, 0.70262754, -0.41705567, -0.17140968, 1.4991179, 2.9674625, -0.012362838, -3.8260121, + -1.5786235, -0.32526863, 1.2857957, 1.7469958, -0.6983267, -2.1821907, 1.1634252, -0.42319855, + 0.2716269, 0.21222934, -0.46608746, -1.6447732, 1.8890494, -1.8022469, -0.37335354, 0.69326025, + -0.07385725, -0.1723765, -1.5445105, 0.7000739}; const std::vector expected_rdft3d_results = { - 101.805756, -5.2273273e-05, 2.5097876, 3.936094, -2.5597036, -1.8717405, - -1.0637736, 0.7801182, -2.1040666, -1.3385094, -7.9471993, 2.026558e-06, - 0.15199316, 0.52512753, 6.7908745, 2.5329556, 0.98875976, 4.755993, - 3.157838, 3.190782, 1.4353466, 1.6061276, -2.158554, 4.201776, - -1.3423799, 1.2554499, 3.5570183, -0.8320818, 2.263445, 0.36719292, - 0.7579028, -1.8762131, -0.32408538, -0.87544185, -3.4693956, -4.429764, - -0.85828185, -3.9007902, -2.0141544, 0.4111499, 2.8994608, 0.21030927, - -2.6786098, -10.127857, -0.6911557, 1.0018079, -2.8430226, 0.33270124, - 0.25672907, 1.8232578, -4.4159126, -2.040338, 1.9982092, -0.7974717, - -0.07559925, -1.0274884, 1.9742157, 3.9031482, 0.22159882, 1.4359848, - -1.0190966, 3.2186508e-06, 4.0004425, 0.8568655, 1.3117876, 0.2163087, - 0.28074512, 0.17570588, -5.466423, 4.531178, 3.857718, -1.2516975e-06, - 0.2567385, -1.823246, -1.0750613, -0.037295938, 5.20209, -2.0005994, - -1.7456844, 3.7091968, -5.45543, -3.4499822, 0.22159535, -1.4359887, - -0.8582816, 3.9007854, -0.31885874, 0.65880924, 0.6968423, 2.3119528, - -3.6876333, 2.273767, 5.38906, -0.45788872, -2.8430223, -0.33269957, - -1.3423961, -1.2554631, 3.1138885, -1.4416232, -6.0413575, -3.6011095, - -2.080242, 0.0045015216, -4.7212796, -0.3527125, -3.4693892, 4.429763, - 0.15199506, -0.52512354, -0.85594195, 2.8447511, -0.10181111, -1.5565643, - -1.6371696, 0.19021615, 0.8239815, 3.018465, -2.158556, -4.2017746, - 3.9272437, -3.9339066e-06, -0.18137527, 3.7160687, 2.1042633, 0.8752967, - 0.29226887, 5.755277, -2.9184306, 0.78941, -9.410112, 3.0100346e-06, - -1.7881365, 1.140914, 0.13286811, -3.01685, 2.4928799, 6.7320104, - 0.5376528, 0.88787735, -0.78172505, -7.0903873, 3.5203578, -0.6790314, - -3.246148, -3.0523329, -4.1306543, -5.653259, -3.866367, -1.5466263, - -3.6847744, -3.2064118, 0.5578996, -0.12726665, -2.2060838, -1.2613428, - 0.588767, 1.2716217, -2.5499039, -0.8091496, -3.0134337, 0.0408957, - 1.4991964, 6.6122847, -0.36368948, -3.0809648, 3.9192853, -3.764699, - 0.19334978, 3.9811373, 0.68720365, -1.717634, 2.346336, -3.3394372, - 1.2645291, 2.241068, 1.1309403, -0.3806507, 2.1538877, -2.3990266, - 0.6885946, -1.4901161e-06, -0.037429705, 0.24751475, 0.2968948, -7.367506, - -4.574969, -1.329541, -0.5423446, 3.2239883, 2.4139037, 2.9802322e-07, - 0.19334424, -3.9811373, 3.1507545, 2.0127864, -4.4341884, -1.2173393, - 0.72419256, 0.015158802, -4.4655256, -0.34677732, 2.1538897, 2.3990245, - 0.5887663, -1.2716188, -1.6747494, -3.415226, 1.2875631, 1.0108626, - 2.0268395, -2.3615427, -1.502785, -2.8317401, 3.919288, 3.764695, - -3.2461433, 3.0523314, -0.5022881, 0.9094755, -0.55759126, -0.24697942, - 5.0729737, 5.668646, -4.662384, 2.9517999, -2.2060819, 1.2613468, - -1.7881389, -1.1409098, -1.8951292, -2.1522717, -7.4092865, -0.38806117, - -0.6685039, -1.3767233, -0.8713439, 0.71781945, 3.5203605, 0.6790297}; + 101.805756, -5.2273273e-05, 2.5097876, 3.936094, -2.5597036, -1.8717405, -1.0637736, 0.7801182, + -2.1040666, -1.3385094, -7.9471993, 2.026558e-06, 0.15199316, 0.52512753, 6.7908745, 2.5329556, + 0.98875976, 4.755993, 3.157838, 3.190782, 1.4353466, 1.6061276, -2.158554, 4.201776, + -1.3423799, 1.2554499, 3.5570183, -0.8320818, 2.263445, 0.36719292, 0.7579028, -1.8762131, + -0.32408538, -0.87544185, -3.4693956, -4.429764, -0.85828185, -3.9007902, -2.0141544, 0.4111499, + 2.8994608, 0.21030927, -2.6786098, -10.127857, -0.6911557, 1.0018079, -2.8430226, 0.33270124, + 0.25672907, 1.8232578, -4.4159126, -2.040338, 1.9982092, -0.7974717, -0.07559925, -1.0274884, + 1.9742157, 3.9031482, 0.22159882, 1.4359848, -1.0190966, 3.2186508e-06, 4.0004425, 0.8568655, + 1.3117876, 0.2163087, 0.28074512, 0.17570588, -5.466423, 4.531178, 3.857718, -1.2516975e-06, + 0.2567385, -1.823246, -1.0750613, -0.037295938, 5.20209, -2.0005994, -1.7456844, 3.7091968, + -5.45543, -3.4499822, 0.22159535, -1.4359887, -0.8582816, 3.9007854, -0.31885874, 0.65880924, + 0.6968423, 2.3119528, -3.6876333, 2.273767, 5.38906, -0.45788872, -2.8430223, -0.33269957, + -1.3423961, -1.2554631, 3.1138885, -1.4416232, -6.0413575, -3.6011095, -2.080242, 0.0045015216, + -4.7212796, -0.3527125, -3.4693892, 4.429763, 0.15199506, -0.52512354, -0.85594195, 2.8447511, + -0.10181111, -1.5565643, -1.6371696, 0.19021615, 0.8239815, 3.018465, -2.158556, -4.2017746, + 3.9272437, -3.9339066e-06, -0.18137527, 3.7160687, 2.1042633, 0.8752967, 0.29226887, 5.755277, + -2.9184306, 0.78941, -9.410112, 3.0100346e-06, -1.7881365, 1.140914, 0.13286811, -3.01685, + 2.4928799, 6.7320104, 0.5376528, 0.88787735, -0.78172505, -7.0903873, 3.5203578, -0.6790314, + -3.246148, -3.0523329, -4.1306543, -5.653259, -3.866367, -1.5466263, -3.6847744, -3.2064118, + 0.5578996, -0.12726665, -2.2060838, -1.2613428, 0.588767, 1.2716217, -2.5499039, -0.8091496, + -3.0134337, 0.0408957, 1.4991964, 6.6122847, -0.36368948, -3.0809648, 3.9192853, -3.764699, + 0.19334978, 3.9811373, 0.68720365, -1.717634, 2.346336, -3.3394372, 1.2645291, 2.241068, + 1.1309403, -0.3806507, 2.1538877, -2.3990266, 0.6885946, -1.4901161e-06, -0.037429705, 0.24751475, + 0.2968948, -7.367506, -4.574969, -1.329541, -0.5423446, 3.2239883, 2.4139037, 2.9802322e-07, + 0.19334424, -3.9811373, 3.1507545, 2.0127864, -4.4341884, -1.2173393, 0.72419256, 0.015158802, + -4.4655256, -0.34677732, 2.1538897, 2.3990245, 0.5887663, -1.2716188, -1.6747494, -3.415226, + 1.2875631, 1.0108626, 2.0268395, -2.3615427, -1.502785, -2.8317401, 3.919288, 3.764695, + -3.2461433, 3.0523314, -0.5022881, 0.9094755, -0.55759126, -0.24697942, 5.0729737, 5.668646, + -4.662384, 2.9517999, -2.2060819, 1.2613468, -1.7881389, -1.1409098, -1.8951292, -2.1522717, + -7.4092865, -0.38806117, -0.6685039, -1.3767233, -0.8713439, 0.71781945, 3.5203605, 0.6790297}; const std::vector expected_rdft3d_results_2 = { - 50.90331, -1.4543533e-05, -8.559692, -1.1978266, -1.6134334, -12.046599, - 3.8535514, -5.5232873, 5.9049683, 0.065603495, 2.4468107, 1.4522064, - -7.222825, 1.2278557e-05, 0.40963984, 0.231709, 4.16645, -0.29528028, - -0.052075505, 1.450621, 3.3082519, -0.8792013, 1.356175, -5.1859245, - 1.3184534, -1.1199851, -1.4637363, -1.9884299, -1.5605974, 0.7887349, - -1.3716602, 0.47921878, 1.0902424, 1.4594792, -0.59960556, -2.6757474, - -3.0592656, 1.7766399, 0.27734682, 1.0108652, -0.07190053, 2.7305403, - -1.5605986, -0.78873086, 0.41156515, 0.18685403, 0.4121489, 1.4797752, - -1.6846865, -3.8916636, -1.4160703, 0.20651829, 0.52929974, 2.9917672, - -0.07190076, -2.7305427, 0.4096415, -0.23171037, 0.9022726, -0.022200808, - 0.10522783, -3.0115416, -0.8654218, -0.4384073, 0.061277367, 0.14856634, - -3.0687659, 1.3078697, -1.4637384, 1.9884316, 25.904425, -24.998884, - -6.9080105, 3.5445771, -8.985163, -6.860018, -1.2686447, -4.8765025, - 2.6592734, -0.45706248, 2.3816066, -0.29202732, -4.6167727, 2.6060565, - -0.33058774, -1.3549114, 3.9574459, -5.44279, 0.041313916, 0.67204094, - 1.446027, -4.5138807, -3.8023772, -4.576436, -0.7724026, -2.6531591, - -0.6192993, 0.25615194, -1.2367722, 2.5178113, 0.7623075, 0.48839718, - 1.3743844, 2.4679115, -1.1419809, -1.1111865, 2.3388672, 1.9520425, - -0.13640736, -0.47136223, 2.8086162, 1.2466785, 0.16848034, -0.46490768, - 0.6572111, 0.7753189, 1.8804929, -2.9868064, -5.498336, -0.053289652, - -0.16271627, 2.1104114, 0.9904991, -0.041024223, -1.5557647, 0.14997506, - -1.1769819, -0.9719368, 0.8428756, -0.5060569, -1.0734584, -0.9006812, - -4.556718, -0.5252099, 1.1278908, -0.17134166, -3.1672862, 1.5541049, - 0.78084624, 2.8328683, 0.90555733, -1.3709068e-06, -2.1656086, 1.8928962, - -3.7985847, 0.511709, -0.62185717, 0.24569236, 2.1366088, 2.7886305, - 0.6373716, -0.2268233, -2.0107267, 5.662441e-07, -1.9172084, -0.6146841, - -1.1900643, -5.233785, -0.73726743, 0.5786506, -2.188651, -2.6516552, - -3.1928902, 0.58211625, -2.305578, -0.5623034, 1.6252834, -0.58828497, - 0.49230486, 2.1939852, 0.7714851, -1.6455705, 2.382816, 2.1837692, - 0.4225806, -0.56881106, 2.514269, -3.4460905, -1.618634, -0.057608932, - 1.3247533, -1.6338379, 0.49230492, -2.1939862, 1.2456759, 0.5296728, - -2.5860875, -4.45515, -1.659962, 3.7603593, 1.7411764, 0.8570565, - -2.0422916, -0.50222373, 1.3247528, 1.633839, -1.9172082, 0.6146865, - 0.35901868, -0.44665974, 1.0374024, 0.27800465, -4.6435204, 3.1660864, - 0.8079842, -1.2379556, -2.921052, 1.6526239, 1.6252828, 0.588284, - 25.90444, 24.998867, -3.817289, -2.8495073, 3.573144, -4.6748676, - 4.500339, -0.40109348, 5.382302, 3.3112957, 0.7025763, 1.5174108, - -4.616783, -2.6060438, -1.1769816, 0.97193646, -0.9810596, -0.086276084, - -0.83065766, 1.3572321, -0.3264265, 0.9830234, 1.9656628, -0.027371943, - -0.2147214, 0.9708719, 0.7808455, -2.8328671, 0.16847888, 0.46490908, - -1.3624828, -1.6547482, 2.0986745, 1.1753378, 0.9649557, -2.1333718, - -2.8838634, -3.6214924, -1.2048804, 1.4246187, -1.5557631, -0.14997569, - -1.2367743, -2.5178103, 1.0000296, -0.05879204, -4.0544314, 0.01142931, - 2.153687, -0.078014135, 0.4878212, -1.0468364, -2.503492, 2.5305676, - 2.808617, -1.2466786, -0.33058444, 1.3549128, 0.41841656, 0.03719666, - 2.216088, -1.8328552, -0.95222485, 3.2528882, -0.25863037, -0.91804826, - -2.822532, 1.4063904, -0.6193025, -0.25615215}; - -template + 50.90331, -1.4543533e-05, -8.559692, -1.1978266, -1.6134334, -12.046599, 3.8535514, -5.5232873, + 5.9049683, 0.065603495, 2.4468107, 1.4522064, -7.222825, 1.2278557e-05, 0.40963984, 0.231709, + 4.16645, -0.29528028, -0.052075505, 1.450621, 3.3082519, -0.8792013, 1.356175, -5.1859245, + 1.3184534, -1.1199851, -1.4637363, -1.9884299, -1.5605974, 0.7887349, -1.3716602, 0.47921878, + 1.0902424, 1.4594792, -0.59960556, -2.6757474, -3.0592656, 1.7766399, 0.27734682, 1.0108652, + -0.07190053, 2.7305403, -1.5605986, -0.78873086, 0.41156515, 0.18685403, 0.4121489, 1.4797752, + -1.6846865, -3.8916636, -1.4160703, 0.20651829, 0.52929974, 2.9917672, -0.07190076, -2.7305427, + 0.4096415, -0.23171037, 0.9022726, -0.022200808, 0.10522783, -3.0115416, -0.8654218, -0.4384073, + 0.061277367, 0.14856634, -3.0687659, 1.3078697, -1.4637384, 1.9884316, 25.904425, -24.998884, + -6.9080105, 3.5445771, -8.985163, -6.860018, -1.2686447, -4.8765025, 2.6592734, -0.45706248, + 2.3816066, -0.29202732, -4.6167727, 2.6060565, -0.33058774, -1.3549114, 3.9574459, -5.44279, + 0.041313916, 0.67204094, 1.446027, -4.5138807, -3.8023772, -4.576436, -0.7724026, -2.6531591, + -0.6192993, 0.25615194, -1.2367722, 2.5178113, 0.7623075, 0.48839718, 1.3743844, 2.4679115, + -1.1419809, -1.1111865, 2.3388672, 1.9520425, -0.13640736, -0.47136223, 2.8086162, 1.2466785, + 0.16848034, -0.46490768, 0.6572111, 0.7753189, 1.8804929, -2.9868064, -5.498336, -0.053289652, + -0.16271627, 2.1104114, 0.9904991, -0.041024223, -1.5557647, 0.14997506, -1.1769819, -0.9719368, + 0.8428756, -0.5060569, -1.0734584, -0.9006812, -4.556718, -0.5252099, 1.1278908, -0.17134166, + -3.1672862, 1.5541049, 0.78084624, 2.8328683, 0.90555733, -1.3709068e-06, -2.1656086, 1.8928962, + -3.7985847, 0.511709, -0.62185717, 0.24569236, 2.1366088, 2.7886305, 0.6373716, -0.2268233, + -2.0107267, 5.662441e-07, -1.9172084, -0.6146841, -1.1900643, -5.233785, -0.73726743, 0.5786506, + -2.188651, -2.6516552, -3.1928902, 0.58211625, -2.305578, -0.5623034, 1.6252834, -0.58828497, + 0.49230486, 2.1939852, 0.7714851, -1.6455705, 2.382816, 2.1837692, 0.4225806, -0.56881106, + 2.514269, -3.4460905, -1.618634, -0.057608932, 1.3247533, -1.6338379, 0.49230492, -2.1939862, + 1.2456759, 0.5296728, -2.5860875, -4.45515, -1.659962, 3.7603593, 1.7411764, 0.8570565, + -2.0422916, -0.50222373, 1.3247528, 1.633839, -1.9172082, 0.6146865, 0.35901868, -0.44665974, + 1.0374024, 0.27800465, -4.6435204, 3.1660864, 0.8079842, -1.2379556, -2.921052, 1.6526239, + 1.6252828, 0.588284, 25.90444, 24.998867, -3.817289, -2.8495073, 3.573144, -4.6748676, + 4.500339, -0.40109348, 5.382302, 3.3112957, 0.7025763, 1.5174108, -4.616783, -2.6060438, + -1.1769816, 0.97193646, -0.9810596, -0.086276084, -0.83065766, 1.3572321, -0.3264265, 0.9830234, + 1.9656628, -0.027371943, -0.2147214, 0.9708719, 0.7808455, -2.8328671, 0.16847888, 0.46490908, + -1.3624828, -1.6547482, 2.0986745, 1.1753378, 0.9649557, -2.1333718, -2.8838634, -3.6214924, + -1.2048804, 1.4246187, -1.5557631, -0.14997569, -1.2367743, -2.5178103, 1.0000296, -0.05879204, + -4.0544314, 0.01142931, 2.153687, -0.078014135, 0.4878212, -1.0468364, -2.503492, 2.5305676, + 2.808617, -1.2466786, -0.33058444, 1.3549128, 0.41841656, 0.03719666, 2.216088, -1.8328552, + -0.95222485, 3.2528882, -0.25863037, -0.91804826, -2.822532, 1.4063904, -0.6193025, -0.25615215}; + +template static std::vector convert(const std::vector& v) { if (v.empty()) { return std::vector(); @@ -683,9 +640,7 @@ std::vector generateParamsForRDFT() { } std::vector generateCombinedParamsForRDFT() { - const std::vector> allTypeParams{ - generateParamsForRDFT() - }; + const std::vector> allTypeParams{generateParamsForRDFT()}; std::vector combinedParams; @@ -696,9 +651,8 @@ std::vector generateCombinedParamsForRDFT() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_RDFT_With_Hardcoded_Refs, - ReferenceRDFTLayerTest, - ::testing::ValuesIn(generateCombinedParamsForRDFT()), - ReferenceRDFTLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_RDFT_With_Hardcoded_Refs, + ReferenceRDFTLayerTest, + ::testing::ValuesIn(generateCombinedParamsForRDFT()), + ReferenceRDFTLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/reduce_l1.cpp b/src/plugins/template/tests/functional/op_reference/reduce_l1.cpp index 63802601ad000a..679074176e4a20 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_l1.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_l1.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_l1.hpp" + #include -#include "openvino/op/reduce_l1.hpp" #include "reduction.hpp" using namespace ov; @@ -16,17 +17,19 @@ namespace { template std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; - std::vector params = { - ReductionParams(ReductionType::L1, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), - element::Type(IN_ET), std::vector{3, 7, 11, 15, 19, 23})) - }; + std::vector params = {ReductionParams( + ReductionType::L1, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{3, 7, 11, 15, 19, 23}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -36,16 +39,17 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); }); return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_l2.cpp b/src/plugins/template/tests/functional/op_reference/reduce_l2.cpp index a0e7439c661e9d..8649400d97572e 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_l2.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_l2.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_l2.hpp" + #include -#include "openvino/op/reduce_l2.hpp" #include "reduction.hpp" using namespace ov; @@ -14,32 +15,41 @@ namespace ReductionOpsRefTestDefinitions { namespace { template ::value_type>::value, bool>::type = true> + typename std::enable_if::value_type>::value, + bool>::type = true> std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; - std::vector params = { - ReductionParams(ReductionType::L2, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 2, 2}, element::Type(IN_ET), std::vector{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0}), - reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), - element::Type(IN_ET), std::vector{2.23606798, 5.0, 7.81024968, 10.63014581, 13.45362405, 16.2788206})) - }; + std::vector params = {ReductionParams( + ReductionType::L2, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 2, 2}, + element::Type(IN_ET), + std::vector{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0}), + reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{2.23606798, 5.0, 7.81024968, 10.63014581, 13.45362405, 16.2788206}))}; return params; } template ::value_type>::value, bool>::type = true> + typename std::enable_if::value_type>::value, + bool>::type = true> std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; - std::vector params = { - ReductionParams(ReductionType::L2, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), element::Type(IN_ET), std::vector{2, 5, 8, 11, 13, 16})) - }; + std::vector params = {ReductionParams( + ReductionType::L2, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{2, 5, 8, 11, 13, 16}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -49,8 +59,7 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); @@ -58,8 +67,10 @@ std::vector generateReductionCombinedParams() { return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_max.cpp b/src/plugins/template/tests/functional/op_reference/reduce_max.cpp index 97233a73e9e654..4d2011f10833f7 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_max.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_max.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_max.hpp" + #include -#include "openvino/op/reduce_max.hpp" #include "reduction.hpp" using namespace ov; @@ -17,38 +18,72 @@ template std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Max, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{4})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{4})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{5, 6})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{5, 6})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{2, 4, 6})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{0}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{2, 4, 6})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{0}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), - element::Type(IN_ET), std::vector{19, 20, 21, 22, 23, 24, 25, 26, 27})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), element::Type(IN_ET), std::vector{3, 6, 9, 12, 15, 18, 21, 24, 27})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{0, 1}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{25, 26, 27})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{0, 1, 2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), element::Type(IN_ET), std::vector{27})) - }; + element::Type(IN_ET), + std::vector{19, 20, 21, 22, 23, 24, 25, 26, 27})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{3, 6, 9, 12, 15, 18, 21, 24, 27})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{0, 1}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{25, 26, 27})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{0, 1, 2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), + element::Type(IN_ET), + std::vector{27}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -58,8 +93,7 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); @@ -67,8 +101,10 @@ std::vector generateReductionCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_mean.cpp b/src/plugins/template/tests/functional/op_reference/reduce_mean.cpp index 2baf98e48a8a0d..0a15efca570507 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_mean.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_mean.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_mean.hpp" + #include -#include "openvino/op/reduce_mean.hpp" #include "reduction.hpp" using namespace ov; @@ -14,43 +15,67 @@ namespace ReductionOpsRefTestDefinitions { namespace { template ::value_type>::value, bool>::type = true> + typename std::enable_if::value_type>::value, + bool>::type = true> std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Mean, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{2.5})), - ReductionParams(ReductionType::Mean, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{2.5})), + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{3, 4})), - ReductionParams(ReductionType::Mean, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{3, 4})), + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{1.5, 3.5, 5.5})) - }; + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{1.5, 3.5, 5.5}))}; return params; } template ::value_type>::value, bool>::type = true> + typename std::enable_if::value_type>::value, + bool>::type = true> std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Mean, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{2})), - ReductionParams(ReductionType::Mean, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{2})), + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{3, 4})), - ReductionParams(ReductionType::Mean, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{3, 4})), + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{1, 3, 5})) - }; + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{1, 3, 5}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -60,16 +85,17 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); }); return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_min.cpp b/src/plugins/template/tests/functional/op_reference/reduce_min.cpp index ea0f583055da32..0b9fb15f75c35f 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_min.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_min.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_min.hpp" + #include -#include "openvino/op/reduce_min.hpp" #include "reduction.hpp" using namespace ov; @@ -17,37 +18,72 @@ template std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Min, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{1})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{1})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{1, 2})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{1, 2})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{1, 3, 5})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{0}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), element::Type(IN_ET), std::vector{1, 4, 7, 10, 13, 16, 19, 22, 25})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{0, 1}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{1, 2, 3})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{0, 1, 2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), element::Type(IN_ET), std::vector{1})) - }; + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{1, 3, 5})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{0}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{1, 4, 7, 10, 13, 16, 19, 22, 25})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{0, 1}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{1, 2, 3})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{0, 1, 2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), + element::Type(IN_ET), + std::vector{1}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -57,16 +93,17 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); }); return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_prod.cpp b/src/plugins/template/tests/functional/op_reference/reduce_prod.cpp index b37801458384ff..96cf56bd5faa6f 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_prod.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_prod.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_prod.hpp" + #include -#include "openvino/op/reduce_prod.hpp" #include "reduction.hpp" using namespace ov; @@ -16,45 +17,68 @@ template std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Prod, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Prod, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{24})), - ReductionParams(ReductionType::Prod, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{24})), + ReductionParams(ReductionType::Prod, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{15, 48})), - ReductionParams(ReductionType::Prod, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{15, 48})), + ReductionParams(ReductionType::Prod, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{2, 12, 30})), - ReductionParams(ReductionType::Prod, keep_dims, std::vector{0}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{1 * 10 * 19, - 2 * 11 * 20, - 3 * 12 * 21, - 4 * 13 * 22, - 5 * 14 * 23, - 6 * 15 * 24, - 7 * 16 * 25, - 8 * 17 * 26, - 9 * 18 * 27})), - ReductionParams(ReductionType::Prod, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), element::Type(IN_ET), std::vector{1 * 2 * 3, - 4 * 5 * 6, - 7 * 8 * 9, - 10 * 11 * 12, - 13 * 14 * 15, - 16 * 17 * 18, - 19 * 20 * 21, - 22 * 23 * 24, - 25 * 26 * 27})) - }; + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{2, 12, 30})), + ReductionParams(ReductionType::Prod, + keep_dims, + std::vector{0}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{1 * 10 * 19, + 2 * 11 * 20, + 3 * 12 * 21, + 4 * 13 * 22, + 5 * 14 * 23, + 6 * 15 * 24, + 7 * 16 * 25, + 8 * 17 * 26, + 9 * 18 * 27})), + ReductionParams(ReductionType::Prod, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{1 * 2 * 3, + 4 * 5 * 6, + 7 * 8 * 9, + 10 * 11 * 12, + 13 * 14 * 15, + 16 * 17 * 18, + 19 * 20 * 21, + 22 * 23 * 24, + 25 * 26 * 27}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -64,33 +88,45 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); }); - combinedParams.push_back( - ReductionParams(ReductionType::Prod, true, std::vector{0, 1}, - reference_tests::Tensor({3, 3, 3}, element::Type_t::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor({1, 1, 3}, element::Type_t::f32, std::vector{1.0f * 10.0f * 19.0f * 4.0f * 13.0f * 22.0f * 7.0f * 16.0f * 25.0f, - 2.0f * 11.0f * 20.0f * 5.0f * 14.0f * 23.0f * 8.0f * 17.0f * 26.0f, - 3.0f * 12.0f * 21.0f * 6.0f * 15.0f * 24.0f * 9.0f * 18.0f * 27.0f}))); - combinedParams.push_back( - ReductionParams(ReductionType::Prod, true, std::vector{0, 1, 2}, - reference_tests::Tensor({3, 3, 3}, element::Type_t::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1}), - reference_tests::Tensor({1, 1, 1}, element::Type_t::f32, std::vector{1.0f * 10.0f * 9.0f * 4.0f * 13.0f * 6.0f * 7.0f * - 12.0f * 3.0f * 2.0f * 11.0f * 8.0f * 5.0f * 14.0f * - 5.0f * 8.0f * 11.0f * 2.0f * 3.0f * 12.0f * 7.0f * - 6.0f * 13.0f * 4.0f * 9.0f * 10.0f * 1.0f}))); + combinedParams.push_back(ReductionParams( + ReductionType::Prod, + true, + std::vector{0, 1}, + reference_tests::Tensor({3, 3, 3}, + element::Type_t::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor( + {1, 1, 3}, + element::Type_t::f32, + std::vector{1.0f * 10.0f * 19.0f * 4.0f * 13.0f * 22.0f * 7.0f * 16.0f * 25.0f, + 2.0f * 11.0f * 20.0f * 5.0f * 14.0f * 23.0f * 8.0f * 17.0f * 26.0f, + 3.0f * 12.0f * 21.0f * 6.0f * 15.0f * 24.0f * 9.0f * 18.0f * 27.0f}))); + combinedParams.push_back(ReductionParams( + ReductionType::Prod, + true, + std::vector{0, 1, 2}, + reference_tests::Tensor({3, 3, 3}, element::Type_t::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 13, 12, 11, 10, + 9, 8, 7, 6, 5, 4, 3, 2, 1}), + reference_tests::Tensor({1, 1, 1}, + element::Type_t::f32, + std::vector{1.0f * 10.0f * 9.0f * 4.0f * 13.0f * 6.0f * 7.0f * 12.0f * 3.0f * + 2.0f * 11.0f * 8.0f * 5.0f * 14.0f * 5.0f * 8.0f * 11.0f * 2.0f * + 3.0f * 12.0f * 7.0f * 6.0f * 13.0f * 4.0f * 9.0f * 10.0f * 1.0f}))); return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_sum.cpp b/src/plugins/template/tests/functional/op_reference/reduce_sum.cpp index 850cd269a6c1dc..82c3e305026894 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_sum.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_sum.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_sum.hpp" + #include -#include "openvino/op/reduce_sum.hpp" #include "reduction.hpp" using namespace ov; @@ -28,56 +29,96 @@ template std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{10})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{10})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{9, 12})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{9, 12})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{3, 7, 11})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{1 + 10 + 19, - 2 + 11 + 20, - 3 + 12 + 21, - 4 + 13 + 22, - 5 + 14 + 23, - 6 + 15 + 24, - 7 + 16 + 25, - 8 + 17 + 26, - 9 + 18 + 27})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), element::Type(IN_ET), std::vector{1 + 2 + 3, - 4 + 5 + 6, - 7 + 8 + 9, - 10 + 11 + 12, - 13 + 14 + 15, - 16 + 17 + 18, - 19 + 20 + 21, - 22 + 23 + 24, - 25 + 26 + 27})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0, 1}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{3, 7, 11})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{1 + 10 + 19, + 2 + 11 + 20, + 3 + 12 + 21, + 4 + 13 + 22, + 5 + 14 + 23, + 6 + 15 + 24, + 7 + 16 + 25, + 8 + 17 + 26, + 9 + 18 + 27})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{1 + 2 + 3, + 4 + 5 + 6, + 7 + 8 + 9, + 10 + 11 + 12, + 13 + 14 + 15, + 16 + 17 + 18, + 19 + 20 + 21, + 22 + 23 + 24, + 25 + 26 + 27})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0, 1}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1}, keep_dims), - element::Type(IN_ET), std::vector{1 + 10 + 19 + 4 + 13 + 22 + 7 + 16 + 25, - 2 + 11 + 20 + 5 + 14 + 23 + 8 + 17 + 26, - 3 + 12 + 21 + 6 + 15 + 24 + 9 + 18 + 27})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0, 1, 2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), element::Type(IN_ET), - std::vector{1 + 10 + 19 + 4 + 13 + 22 + 7 + 16 + 25 + 2 + 11 + 20 + 5 + 14 + 23 + 8 + - 17 + 26 + 3 + 12 + 21 + 6 + 15 + 24 + 9 + 18 + 27})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0, 1, 2, 3, 4}, - reference_tests::Tensor({3, 3, 3, 3, 3}, element::Type(IN_ET), std::vector(static_cast(std::pow(3, 5)), 1)), - reference_tests::Tensor(reduce(Shape{3, 3, 3, 3, 3}, AxisSet{0, 1, 2, 3, 4}, keep_dims), element::Type(IN_ET), std::vector{243})) - }; + element::Type(IN_ET), + std::vector{1 + 10 + 19 + 4 + 13 + 22 + 7 + 16 + 25, + 2 + 11 + 20 + 5 + 14 + 23 + 8 + 17 + 26, + 3 + 12 + 21 + 6 + 15 + 24 + 9 + 18 + 27})), + ReductionParams( + ReductionType::Sum, + keep_dims, + std::vector{0, 1, 2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), + element::Type(IN_ET), + std::vector{1 + 10 + 19 + 4 + 13 + 22 + 7 + 16 + 25 + 2 + 11 + 20 + 5 + 14 + 23 + + 8 + 17 + 26 + 3 + 12 + 21 + 6 + 15 + 24 + 9 + 18 + 27})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0, 1, 2, 3, 4}, + reference_tests::Tensor({3, 3, 3, 3, 3}, + element::Type(IN_ET), + std::vector(static_cast(std::pow(3, 5)), 1)), + reference_tests::Tensor(reduce(Shape{3, 3, 3, 3, 3}, AxisSet{0, 1, 2, 3, 4}, keep_dims), + element::Type(IN_ET), + std::vector{243}))}; return params; } @@ -85,20 +126,29 @@ std::vector generateReductionParamsFloat(const bool keep_dims) std::vector in = generateRandomVector(1000000); float res = static_cast(std::accumulate(std::begin(in), std::end(in), 0.f)); std::vector params = { - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0}, + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0}, reference_tests::Tensor({1000000}, element::f32, in), - reference_tests::Tensor(reduce(Shape{1000000}, AxisSet{0}, keep_dims), element::f32, std::vector{res})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0}, - reference_tests::Tensor({20}, element::f32, std::vector{10000000.0f, 0.9f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, - 0.8f, 0.1f, 0.9f, 0.5f, 0.2f, 0.3f, 0.4f, - 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 0.1f}), - reference_tests::Tensor(reduce(Shape{20}, AxisSet{0}, keep_dims), element::f32, std::vector{10000010.2f})) - }; + reference_tests::Tensor(reduce(Shape{1000000}, AxisSet{0}, keep_dims), + element::f32, + std::vector{res})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0}, + reference_tests::Tensor( + {20}, + element::f32, + std::vector{10000000.0f, 0.9f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.1f, 0.9f, + 0.5f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 0.1f}), + reference_tests::Tensor(reduce(Shape{20}, AxisSet{0}, keep_dims), + element::f32, + std::vector{10000010.2f}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -110,16 +160,17 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParamsFloat(true), - generateReductionParamsFloat(false) - }; + generateReductionParamsFloat(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); }); return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduction.cpp b/src/plugins/template/tests/functional/op_reference/reduction.cpp index d36cad37678ca7..98a0133ee62423 100644 --- a/src/plugins/template/tests/functional/op_reference/reduction.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduction.cpp @@ -10,6 +10,6 @@ namespace { TEST_P(ReferenceReductionLayerTest, CompareWithHardcodedRefs) { Exec(); } -} // namespace -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduction.hpp b/src/plugins/template/tests/functional/op_reference/reduction.hpp index 30f6ca559fca5a..f3f58587913da9 100644 --- a/src/plugins/template/tests/functional/op_reference/reduction.hpp +++ b/src/plugins/template/tests/functional/op_reference/reduction.hpp @@ -6,16 +6,16 @@ #include "base_reference_test.hpp" #include "common_test_utils/test_enums.hpp" -#include "shared_test_classes/base/layer_test_utils.hpp" -#include "openvino/op/reduce_logical_and.hpp" -#include "openvino/op/reduce_logical_or.hpp" #include "openvino/op/reduce_l1.hpp" #include "openvino/op/reduce_l2.hpp" -#include "openvino/op/reduce_min.hpp" +#include "openvino/op/reduce_logical_and.hpp" +#include "openvino/op/reduce_logical_or.hpp" #include "openvino/op/reduce_max.hpp" #include "openvino/op/reduce_mean.hpp" +#include "openvino/op/reduce_min.hpp" #include "openvino/op/reduce_prod.hpp" #include "openvino/op/reduce_sum.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" using namespace ov; @@ -42,9 +42,16 @@ AXIS_VALUES reduce(const AXIS_VALUES& axis_values, const ov::AxisSet& deleted_ax } struct ReductionParams { - ReductionParams(const ReductionType& reductType, const bool keepDims, const std::vector& axes, - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& outputTensor) : reductionType(reductType), keepDimensions(keepDims), reductionAxes(axes), - data(dataTensor), output(outputTensor) {} + ReductionParams(const ReductionType& reductType, + const bool keepDims, + const std::vector& axes, + const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& outputTensor) + : reductionType(reductType), + keepDimensions(keepDims), + reductionAxes(axes), + data(dataTensor), + output(outputTensor) {} ReductionType reductionType; bool keepDimensions; @@ -53,7 +60,7 @@ struct ReductionParams { reference_tests::Tensor output; }; -class ReferenceReductionLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceReductionLayerTest : public testing::TestWithParam, public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -125,5 +132,5 @@ class ReferenceReductionLayerTest : public testing::TestWithParam(reduction, ov::ParameterVector{data}); } }; -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/region_yolo.cpp b/src/plugins/template/tests/functional/op_reference/region_yolo.cpp index 1ffb4ae1bd30e6..f1160722810f69 100644 --- a/src/plugins/template/tests/functional/op_reference/region_yolo.cpp +++ b/src/plugins/template/tests/functional/op_reference/region_yolo.cpp @@ -2,12 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/region_yolo.hpp" + #include + #include #include #include -#include "openvino/op/region_yolo.hpp" #include "base_reference_test.hpp" #include "openvino/util/file_util.hpp" @@ -18,20 +20,20 @@ namespace { struct RegionYoloParams { template RegionYoloParams(const size_t num, - const size_t coords, - const size_t classes, - const bool do_softmax, - const int axis, - const int end_axis, - const size_t batch, - const size_t channels, - const size_t width, - const size_t height, - const std::vector& mask, - const ov::element::Type& iType, - const std::vector& iValues, - const std::vector& oValues, - const std::string& testcaseName = "") + const size_t coords, + const size_t classes, + const bool do_softmax, + const int axis, + const int end_axis, + const size_t batch, + const size_t channels, + const size_t width, + const size_t height, + const std::vector& mask, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const std::string& testcaseName = "") : num(num), coords(coords), classes(classes), @@ -48,8 +50,8 @@ struct RegionYoloParams { inputData(CreateTensor(iType, iValues)), refData(CreateTensor(iType, oValues)), testcaseName(testcaseName) { - inputShape = Shape{batch, channels, height, width}; - } + inputShape = Shape{batch, channels, height, width}; + } size_t num; size_t coords; @@ -107,7 +109,7 @@ class ReferenceRegionYoloLayerTest : public testing::TestWithParam(NodeVector {RegionYolo}, ParameterVector {p}); + return std::make_shared(NodeVector{RegionYolo}, ParameterVector{p}); } }; @@ -119,28 +121,36 @@ template std::vector generateRegionYoloParams() { using T = typename element_type_traits::value_type; - std::vector regionYoloParams { - RegionYoloParams(1, 4, 1, false, 1, 3, - 1, 8, 2, 2, - std::vector{0}, - IN_ET, - std::vector{0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, - 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, - 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f}, - std::vector{0.52497f, 0.54983f, 0.57444f, 0.59868f, 0.62245f, 0.64565f, 0.66818f, 0.68997f, - 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, - 0.52497f, 0.54983f, 0.57444f, 0.59868f, 0.62245f, 0.64565f, 0.66818f, 0.68997f}), + std::vector regionYoloParams{ + RegionYoloParams( + 1, + 4, + 1, + false, + 1, + 3, + 1, + 8, + 2, + 2, + std::vector{0}, + IN_ET, + std::vector{0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, + 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, + 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f}, + std::vector{0.52497f, 0.54983f, 0.57444f, 0.59868f, 0.62245f, 0.64565f, 0.66818f, 0.68997f, + 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, + 0.52497f, 0.54983f, 0.57444f, 0.59868f, 0.62245f, 0.64565f, 0.66818f, 0.68997f}), }; return regionYoloParams; } std::vector generateRegionYoloCombinedParams() { - const std::vector> regionYoloTypeParams { + const std::vector> regionYoloTypeParams{ generateRegionYoloParams(), generateRegionYoloParams(), generateRegionYoloParams(), - generateRegionYoloParams() - }; + generateRegionYoloParams()}; std::vector combinedParams; for (const auto& params : regionYoloTypeParams) { @@ -149,7 +159,9 @@ std::vector generateRegionYoloCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_RegionYolo_With_Hardcoded_Refs, ReferenceRegionYoloLayerTest, - testing::ValuesIn(generateRegionYoloCombinedParams()), ReferenceRegionYoloLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_RegionYolo_With_Hardcoded_Refs, + ReferenceRegionYoloLayerTest, + testing::ValuesIn(generateRegionYoloCombinedParams()), + ReferenceRegionYoloLayerTest::getTestCaseName); -} // namespace \ No newline at end of file +} // namespace \ No newline at end of file diff --git a/src/plugins/template/tests/functional/op_reference/relu.cpp b/src/plugins/template/tests/functional/op_reference/relu.cpp index 2e31a299fd2d10..2df326758fdabc 100644 --- a/src/plugins/template/tests/functional/op_reference/relu.cpp +++ b/src/plugins/template/tests/functional/op_reference/relu.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/relu.hpp" + #include -#include "openvino/op/relu.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,7 +14,10 @@ using namespace ov; namespace { struct ReluParams { template - ReluParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + ReluParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -45,11 +49,12 @@ class ReferenceReluLayerTest : public testing::TestWithParam, public } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& Reluected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& Reluected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto Relu = std::make_shared(in); - return std::make_shared(NodeVector {Relu}, ParameterVector {in}); + return std::make_shared(NodeVector{Relu}, ParameterVector{in}); } }; @@ -57,21 +62,19 @@ TEST_P(ReferenceReluLayerTest, CompareWithRefs) { Exec(); } - template std::vector generateReluFloatParams() { using T = typename element_type_traits::value_type; - std::vector reluParams { - ReluParams(ov::PartialShape {2, 5}, - IN_ET, - std::vector{1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5}, - std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0}), - ReluParams(ov::PartialShape {2, 2, 2, 2}, - IN_ET, - std::vector{1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5, 1}, - std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0, 1, 8, 0, 17, 0, 1}) - }; + std::vector reluParams{ + ReluParams(ov::PartialShape{2, 5}, + IN_ET, + std::vector{1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5}, + std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0}), + ReluParams(ov::PartialShape{2, 2, 2, 2}, + IN_ET, + std::vector{1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5, 1}, + std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0, 1, 8, 0, 17, 0, 1})}; return reluParams; } @@ -79,12 +82,10 @@ template std::vector generateReluIntParams() { using T = typename element_type_traits::value_type; - std::vector reluParams { - ReluParams(ov::PartialShape {2, 5}, - IN_ET, - std::vector{1, 8, -8, 17, -2, 1, 8, -8, 17, -1}, - std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0}) - }; + std::vector reluParams{ReluParams(ov::PartialShape{2, 5}, + IN_ET, + std::vector{1, 8, -8, 17, -2, 1, 8, -8, 17, -1}, + std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0})}; return reluParams; } @@ -92,24 +93,20 @@ template std::vector generateReluUintParams() { using T = typename element_type_traits::value_type; - std::vector reluParams { - ReluParams(ov::PartialShape {2, 5}, - IN_ET, - std::vector{1, 8, 17, 1, 8, 17, 1, 8, 17, 0}, - std::vector{1, 8, 17, 1, 8, 17, 1, 8, 17, 0}) - }; + std::vector reluParams{ReluParams(ov::PartialShape{2, 5}, + IN_ET, + std::vector{1, 8, 17, 1, 8, 17, 1, 8, 17, 0}, + std::vector{1, 8, 17, 1, 8, 17, 1, 8, 17, 0})}; return reluParams; } std::vector generateReluCombinedParams() { - const std::vector> reluTypeParams { - generateReluFloatParams(), - generateReluFloatParams(), - generateReluIntParams(), - generateReluIntParams(), - generateReluUintParams(), - generateReluUintParams() - }; + const std::vector> reluTypeParams{generateReluFloatParams(), + generateReluFloatParams(), + generateReluIntParams(), + generateReluIntParams(), + generateReluUintParams(), + generateReluUintParams()}; std::vector combinedParams; for (const auto& params : reluTypeParams) { @@ -118,7 +115,9 @@ std::vector generateReluCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Relu_With_Hardcoded_Refs, ReferenceReluLayerTest, - testing::ValuesIn(generateReluCombinedParams()), ReferenceReluLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Relu_With_Hardcoded_Refs, + ReferenceReluLayerTest, + testing::ValuesIn(generateReluCombinedParams()), + ReferenceReluLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/reorg_yolo.cpp b/src/plugins/template/tests/functional/op_reference/reorg_yolo.cpp index ddea9ce114b6f5..43e509b4b051a1 100644 --- a/src/plugins/template/tests/functional/op_reference/reorg_yolo.cpp +++ b/src/plugins/template/tests/functional/op_reference/reorg_yolo.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reorg_yolo.hpp" + #include -#include "openvino/op/reorg_yolo.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -30,10 +31,10 @@ struct ReorgYoloParams { outType(iType), refData(CreateTensor(iType, oValues)), testcaseName(testcaseName) { - std::vector iValues(shape_size(inputShape.get_shape())); - std::iota(iValues.begin(), iValues.end(), 0); - inputData = CreateTensor(iType, iValues); - } + std::vector iValues(shape_size(inputShape.get_shape())); + std::iota(iValues.begin(), iValues.end(), 0); + inputData = CreateTensor(iType, iValues); + } ov::Strides stride; ov::PartialShape inputShape; @@ -72,7 +73,7 @@ class ReferenceReorgYoloLayerTest : public testing::TestWithParam CreateFunction(const ReorgYoloParams& params) { const auto p = std::make_shared(params.inType, params.inputShape); const auto ReorgYolo = std::make_shared(p, params.stride); - return std::make_shared(NodeVector {ReorgYolo}, ParameterVector {p}); + return std::make_shared(NodeVector{ReorgYolo}, ParameterVector{p}); } }; @@ -84,28 +85,32 @@ template std::vector generateReorgYoloParams() { using T = typename element_type_traits::value_type; - std::vector reorgYoloParams { + std::vector reorgYoloParams{ ReorgYoloParams({2}, - PartialShape {1, 8, 4, 4}, - IN_ET, - std::vector{0, 2, 4, 6, 16, 18, 20, 22, 32, 34, 36, 38, 48, 50, 52, 54, 64, 66, 68, 70, 80, 82, - 84, 86, 96, 98, 100, 102, 112, 114, 116, 118, 1, 3, 5, 7, 17, 19, 21, 23, 33, 35, 37, 39, - 49, 51, 53, 55, 65, 67, 69, 71, 81, 83, 85, 87, 97, 99, 101, 103, 113, 115, 117, 119, 8, 10, - 12, 14, 24, 26, 28, 30, 40, 42, 44, 46, 56, 58, 60, 62, 72, 74, 76, 78, 88, 90, 92, 94, - 104, 106, 108, 110, 120, 122, 124, 126, 9, 11, 13, 15, 25, 27, 29, 31, 41, 43, 45, 47, 57, 59, - 61, 63, 73, 75, 77, 79, 89, 91, 93, 95, 105, 107, 109, 111, 121, 123, 125, 127}), - ReorgYoloParams({3}, - PartialShape {1, 9, 3, 3}, + PartialShape{1, 8, 4, 4}, IN_ET, - std::vector{0, 3, 6, 27, 30, 33, 54, 57, 60, 1, 4, 7, 28, 31, 34, 55, 58, 61, 2, 5, 8, 29, 32, 35, 56, 59, 62, - 9, 12, 15, 36, 39, 42, 63, 66, 69, 10, 13, 16, 37, 40, 43, 64, 67, 70, 11, 14, 17, 38, 41, 44, 65, 68, 71, - 18, 21, 24, 45, 48, 51, 72, 75, 78, 19, 22, 25, 46, 49, 52, 73, 76, 79, 20, 23, 26, 47, 50, 53, 74, 77, 80}), + std::vector{0, 2, 4, 6, 16, 18, 20, 22, 32, 34, 36, 38, 48, 50, 52, 54, + 64, 66, 68, 70, 80, 82, 84, 86, 96, 98, 100, 102, 112, 114, 116, 118, + 1, 3, 5, 7, 17, 19, 21, 23, 33, 35, 37, 39, 49, 51, 53, 55, + 65, 67, 69, 71, 81, 83, 85, 87, 97, 99, 101, 103, 113, 115, 117, 119, + 8, 10, 12, 14, 24, 26, 28, 30, 40, 42, 44, 46, 56, 58, 60, 62, + 72, 74, 76, 78, 88, 90, 92, 94, 104, 106, 108, 110, 120, 122, 124, 126, + 9, 11, 13, 15, 25, 27, 29, 31, 41, 43, 45, 47, 57, 59, 61, 63, + 73, 75, 77, 79, 89, 91, 93, 95, 105, 107, 109, 111, 121, 123, 125, 127}), + ReorgYoloParams( + {3}, + PartialShape{1, 9, 3, 3}, + IN_ET, + std::vector{0, 3, 6, 27, 30, 33, 54, 57, 60, 1, 4, 7, 28, 31, 34, 55, 58, 61, 2, 5, 8, + 29, 32, 35, 56, 59, 62, 9, 12, 15, 36, 39, 42, 63, 66, 69, 10, 13, 16, 37, 40, 43, + 64, 67, 70, 11, 14, 17, 38, 41, 44, 65, 68, 71, 18, 21, 24, 45, 48, 51, 72, 75, 78, + 19, 22, 25, 46, 49, 52, 73, 76, 79, 20, 23, 26, 47, 50, 53, 74, 77, 80}), }; return reorgYoloParams; } std::vector generateReorgYoloCombinedParams() { - const std::vector> reorgYoloTypeParams { + const std::vector> reorgYoloTypeParams{ generateReorgYoloParams(), generateReorgYoloParams(), generateReorgYoloParams(), @@ -118,7 +123,7 @@ std::vector generateReorgYoloCombinedParams() { generateReorgYoloParams(), generateReorgYoloParams(), generateReorgYoloParams(), - }; + }; std::vector combinedParams; for (const auto& params : reorgYoloTypeParams) { @@ -127,7 +132,9 @@ std::vector generateReorgYoloCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ReorgYolo_With_Hardcoded_Refs, ReferenceReorgYoloLayerTest, - testing::ValuesIn(generateReorgYoloCombinedParams()), ReferenceReorgYoloLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ReorgYolo_With_Hardcoded_Refs, + ReferenceReorgYoloLayerTest, + testing::ValuesIn(generateReorgYoloCombinedParams()), + ReferenceReorgYoloLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/reshape.cpp b/src/plugins/template/tests/functional/op_reference/reshape.cpp index dabd4c20ce11bd..85dabdd6ce8add 100644 --- a/src/plugins/template/tests/functional/op_reference/reshape.cpp +++ b/src/plugins/template/tests/functional/op_reference/reshape.cpp @@ -2,15 +2,16 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reshape.hpp" + #include -#include "openvino/op/reshape.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; -//using T1 = typename element_type_traits::value_type; +// using T1 = typename element_type_traits::value_type; namespace { struct ReshapeParams { @@ -27,15 +28,13 @@ struct ReshapeParams { m_input_type = input_type; m_expected_type = expected_type; m_zero_flag = zero_flag; - m_input_value = input_shape.size() > 0 - ? CreateTensor(input_shape, input_type, input_value) - : CreateTensor(input_type, input_value); - m_expected_value = expected_shape.size() > 0 - ? CreateTensor(expected_shape, expected_type, expected_value) - : CreateTensor(expected_type, expected_value); + m_input_value = input_shape.size() > 0 ? CreateTensor(input_shape, input_type, input_value) + : CreateTensor(input_type, input_value); + m_expected_value = expected_shape.size() > 0 ? CreateTensor(expected_shape, expected_type, expected_value) + : CreateTensor(expected_type, expected_value); } - template + template ReshapeParams(const Shape& input_shape, const Shape& expected_shape, const element::Type& input_type, @@ -69,7 +68,7 @@ struct ReshapeParams { }; struct ReshapeShuffleParams { - template + template ReshapeShuffleParams(const Shape& input_shape1, const Shape& input_shape2, const Shape& input_shape3, @@ -130,10 +129,10 @@ class ReferenceReshapeLayerTest : public testing::TestWithParam, private: static std::shared_ptr CreateFunction(const element::Type& input_type, - const element::Type& expected_type, - const Shape& input_shape, - const Shape& expected_shape, - const bool zero_flag) { + const element::Type& expected_type, + const Shape& input_shape, + const Shape& expected_shape, + const bool zero_flag) { const auto in = std::make_shared(input_type, input_shape); const auto reshape = std::make_shared( in, @@ -143,7 +142,8 @@ class ReferenceReshapeLayerTest : public testing::TestWithParam, } }; -class ReferenceReshapeShuffleLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceReshapeShuffleLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { const auto params = GetParam(); @@ -172,12 +172,12 @@ class ReferenceReshapeShuffleLayerTest : public testing::TestWithParam CreateFunction(const element::Type& input_type, - const element::Type& expected_type, - const Shape& input_shape1, - const Shape& input_shape2, - const Shape& input_shape3, - const Shape& expected_shape, - const bool zero_flag) { + const element::Type& expected_type, + const Shape& input_shape1, + const Shape& input_shape2, + const Shape& input_shape3, + const Shape& expected_shape, + const bool zero_flag) { const auto in = std::make_shared(input_type, input_shape1); const auto reshape1 = std::make_shared( in, @@ -215,41 +215,11 @@ std::vector generateParamsForReshape() { std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, false), - ReshapeParams(Shape{1, 1, 1}, - Shape{}, - ET, - ET, - std::vector{6}, - std::vector{6}, - false), - ReshapeParams(Shape{}, - Shape{1, 1, 1, 1, 1, 1}, - ET, - ET, - std::vector{42}, - std::vector{42}, - false), - ReshapeParams(Shape{3}, - Shape{3, 1}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), - ReshapeParams(Shape{3}, - Shape{1, 3}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), - ReshapeParams(Shape{3}, - Shape{1, 3, 1}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), + ReshapeParams(Shape{1, 1, 1}, Shape{}, ET, ET, std::vector{6}, std::vector{6}, false), + ReshapeParams(Shape{}, Shape{1, 1, 1, 1, 1, 1}, ET, ET, std::vector{42}, std::vector{42}, false), + ReshapeParams(Shape{3}, Shape{3, 1}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), + ReshapeParams(Shape{3}, Shape{1, 3}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), + ReshapeParams(Shape{3}, Shape{1, 3, 1}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), ReshapeParams(Shape{3, 3}, Shape{3, 3}, ET, @@ -257,34 +227,10 @@ std::vector generateParamsForReshape() { std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}, false), - ReshapeParams(Shape{1}, - Shape{}, - ET, - ET, - std::vector{1}, - std::vector{1}, - false), - ReshapeParams(Shape{}, - Shape{}, - ET, - ET, - std::vector{1}, - std::vector{1}, - false), - ReshapeParams(Shape{2, 2, 3, 3, 2, 4}, - Shape{3, 2, 2, 4, 3, 2}, - ET, - ET, - false, - static_cast(1)), - ReshapeParams(Shape{2, 2, 5, 5}, - Shape{2, 5, 5, 2}, - ET, - ET, - true, - static_cast(1), - Shape{0, 5, 0, 2}) - }; + ReshapeParams(Shape{1}, Shape{}, ET, ET, std::vector{1}, std::vector{1}, false), + ReshapeParams(Shape{}, Shape{}, ET, ET, std::vector{1}, std::vector{1}, false), + ReshapeParams(Shape{2, 2, 3, 3, 2, 4}, Shape{3, 2, 2, 4, 3, 2}, ET, ET, false, static_cast(1)), + ReshapeParams(Shape{2, 2, 5, 5}, Shape{2, 5, 5, 2}, ET, ET, true, static_cast(1), Shape{0, 5, 0, 2})}; return params; } @@ -301,56 +247,13 @@ std::vector generateParamsForReshape8Bit() { std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, false), - ReshapeParams(Shape{1, 1, 1}, - Shape{}, - ET, - ET, - std::vector{6}, - std::vector{6}, - false), - ReshapeParams(Shape{}, - Shape{1, 1, 1, 1, 1, 1}, - ET, - ET, - std::vector{42}, - std::vector{42}, - false), - ReshapeParams(Shape{3}, - Shape{3, 1}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), - ReshapeParams(Shape{3}, - Shape{1, 3}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), - ReshapeParams(Shape{3}, - Shape{1, 3, 1}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), - ReshapeParams(Shape{1}, - Shape{}, - ET, - ET, - std::vector{1}, - std::vector{1}, - false), - ReshapeParams(Shape{}, - Shape{}, - ET, - ET, - std::vector{1}, - std::vector{1}, - false) - }; + ReshapeParams(Shape{1, 1, 1}, Shape{}, ET, ET, std::vector{6}, std::vector{6}, false), + ReshapeParams(Shape{}, Shape{1, 1, 1, 1, 1, 1}, ET, ET, std::vector{42}, std::vector{42}, false), + ReshapeParams(Shape{3}, Shape{3, 1}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), + ReshapeParams(Shape{3}, Shape{1, 3}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), + ReshapeParams(Shape{3}, Shape{1, 3, 1}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), + ReshapeParams(Shape{1}, Shape{}, ET, ET, std::vector{1}, std::vector{1}, false), + ReshapeParams(Shape{}, Shape{}, ET, ET, std::vector{1}, std::vector{1}, false)}; return params; } @@ -359,32 +262,28 @@ template std::vector generateParamsForReshapeShuffle() { using T = typename element_type_traits::value_type; - std::vector params{ - ReshapeShuffleParams(Shape{1, 112, 56, 56}, - Shape{1, 4, 28, 56, 56}, - Shape{1, 28, 4, 56, 56}, - Shape{1, 112, 56, 56}, - ET, - ET, - false, - static_cast(1)) - }; + std::vector params{ReshapeShuffleParams(Shape{1, 112, 56, 56}, + Shape{1, 4, 28, 56, 56}, + Shape{1, 28, 4, 56, 56}, + Shape{1, 112, 56, 56}, + ET, + ET, + false, + static_cast(1))}; return params; } std::vector generateCombinedParamsForReshape() { - const std::vector> allTypeParams{ - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape8Bit(), - generateParamsForReshape8Bit() - }; + const std::vector> allTypeParams{generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape8Bit(), + generateParamsForReshape8Bit()}; std::vector combinedParams; @@ -417,16 +316,14 @@ std::vector generateCombinedParamsForReshapeShuffle() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Reshape_With_Hardcoded_Refs, - ReferenceReshapeLayerTest, - ::testing::ValuesIn(generateCombinedParamsForReshape()), - ReferenceReshapeLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Reshape_Shuffle_With_Hardcoded_Refs, - ReferenceReshapeShuffleLayerTest, - ::testing::ValuesIn(generateCombinedParamsForReshapeShuffle()), - ReferenceReshapeShuffleLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Reshape_With_Hardcoded_Refs, + ReferenceReshapeLayerTest, + ::testing::ValuesIn(generateCombinedParamsForReshape()), + ReferenceReshapeLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Reshape_Shuffle_With_Hardcoded_Refs, + ReferenceReshapeShuffleLayerTest, + ::testing::ValuesIn(generateCombinedParamsForReshapeShuffle()), + ReferenceReshapeShuffleLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/result.cpp b/src/plugins/template/tests/functional/op_reference/result.cpp index 38ba2ea06a03ca..9b458e4e130106 100644 --- a/src/plugins/template/tests/functional/op_reference/result.cpp +++ b/src/plugins/template/tests/functional/op_reference/result.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/result.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/result.hpp" using namespace reference_tests; using namespace ov; @@ -16,11 +17,11 @@ namespace { struct ResultParams { template ResultParams(const Shape& input_shape, - const Shape& expected_shape, - const element::Type& input_type, - const element::Type& expected_type, - const std::vector& input_value, - const std::vector& expected_value) + const Shape& expected_shape, + const element::Type& input_type, + const element::Type& expected_type, + const std::vector& input_value, + const std::vector& expected_value) : m_input_shape(input_shape), m_expected_shape(expected_shape), m_input_type(input_type), @@ -74,32 +75,24 @@ std::vector generateParamsForResult() { using T = typename element_type_traits::value_type; std::vector params{ - ResultParams(Shape{2, 2}, - Shape{2, 2}, - ET, - ET, - std::vector{1, 2, 3, 5}, - std::vector{1, 2, 3, 5}) - }; + ResultParams(Shape{2, 2}, Shape{2, 2}, ET, ET, std::vector{1, 2, 3, 5}, std::vector{1, 2, 3, 5})}; return params; } std::vector generateCombinedParamsForResult() { - const std::vector> allTypeParams{ - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult() - }; + const std::vector> allTypeParams{generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult()}; std::vector combinedParams; @@ -110,10 +103,9 @@ std::vector generateCombinedParamsForResult() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Result_With_Hardcoded_Refs, - ReferenceResultLayerTest, - ::testing::ValuesIn(generateCombinedParamsForResult()), - ReferenceResultLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Result_With_Hardcoded_Refs, + ReferenceResultLayerTest, + ::testing::ValuesIn(generateCombinedParamsForResult()), + ReferenceResultLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/reverse.cpp b/src/plugins/template/tests/functional/op_reference/reverse.cpp index 48d3387cbd4ca9..b7e19dfbdaf619 100644 --- a/src/plugins/template/tests/functional/op_reference/reverse.cpp +++ b/src/plugins/template/tests/functional/op_reference/reverse.cpp @@ -9,7 +9,6 @@ #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" - using namespace reference_tests; using namespace ov; diff --git a/src/plugins/template/tests/functional/op_reference/reverse_sequence.cpp b/src/plugins/template/tests/functional/op_reference/reverse_sequence.cpp index c4861456ffac55..8135f94b3600f7 100644 --- a/src/plugins/template/tests/functional/op_reference/reverse_sequence.cpp +++ b/src/plugins/template/tests/functional/op_reference/reverse_sequence.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reverse_sequence.hpp" + #include -#include "openvino/op/reverse_sequence.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,9 +13,16 @@ using namespace ov; namespace { struct ReverseSequenceParams { - ReverseSequenceParams(const int64_t batchAxis, const int64_t seqAxis, const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& seqLengthsTensor, - const reference_tests::Tensor& expectedTensor) : mBatchAxis(batchAxis), mSeqAxis(seqAxis), mDataTensor(dataTensor), - mSeqLengthsTensor(seqLengthsTensor), mExpectedTensor(expectedTensor) {} + ReverseSequenceParams(const int64_t batchAxis, + const int64_t seqAxis, + const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& seqLengthsTensor, + const reference_tests::Tensor& expectedTensor) + : mBatchAxis(batchAxis), + mSeqAxis(seqAxis), + mDataTensor(dataTensor), + mSeqLengthsTensor(seqLengthsTensor), + mExpectedTensor(expectedTensor) {} int64_t mBatchAxis; int64_t mSeqAxis; reference_tests::Tensor mDataTensor; @@ -45,9 +53,11 @@ class ReferenceReverseSequenceTest : public testing::TestWithParam CreateFunction(const ReverseSequenceParams& params) { const auto data = std::make_shared(params.mDataTensor.type, params.mDataTensor.shape); - const auto seqLengths = std::make_shared(params.mSeqLengthsTensor.type, params.mSeqLengthsTensor.shape); - const auto reverseSequence = std::make_shared(data, seqLengths, params.mBatchAxis, params.mSeqAxis); - return std::make_shared(NodeVector {reverseSequence}, ParameterVector {data, seqLengths}); + const auto seqLengths = + std::make_shared(params.mSeqLengthsTensor.type, params.mSeqLengthsTensor.shape); + const auto reverseSequence = + std::make_shared(data, seqLengths, params.mBatchAxis, params.mSeqAxis); + return std::make_shared(NodeVector{reverseSequence}, ParameterVector{data, seqLengths}); } }; @@ -58,76 +68,93 @@ TEST_P(ReferenceReverseSequenceTest, CompareWithRefs) { template std::vector generateReverseSeqParams() { using T = typename element_type_traits::value_type; - std::vector reverseSeqParams { + std::vector reverseSeqParams{ // 2D - ReverseSequenceParams(1, 0, - reference_tests::Tensor({4, 4}, IN_ET, std::vector{0, 4, 8, 12, - 1, 5, 9, 13, - 2, 6, 10, 14, - 3, 7, 11, 15}), - reference_tests::Tensor({4}, element::i32, std::vector{4, 3, 2, 1}), - reference_tests::Tensor({4, 4}, IN_ET, std::vector{3, 6, 9, 12, - 2, 5, 8, 13, - 1, 4, 10, 14, - 0, 7, 11, 15})), - ReverseSequenceParams(0, 1, - reference_tests::Tensor({4, 4}, IN_ET, std::vector{0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15}), - reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 3, 4}), - reference_tests::Tensor({4, 4}, IN_ET, std::vector{0, 1, 2, 3, - 5, 4, 6, 7, - 10, 9, 8, 11, - 15, 14, 13, 12})), + ReverseSequenceParams( + 1, + 0, + reference_tests::Tensor({4, 4}, + IN_ET, + std::vector{0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15}), + reference_tests::Tensor({4}, element::i32, std::vector{4, 3, 2, 1}), + reference_tests::Tensor({4, 4}, + IN_ET, + std::vector{3, 6, 9, 12, 2, 5, 8, 13, 1, 4, 10, 14, 0, 7, 11, 15})), + ReverseSequenceParams( + 0, + 1, + reference_tests::Tensor({4, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}), + reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 3, 4}), + reference_tests::Tensor({4, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 5, 4, 6, 7, 10, 9, 8, 11, 15, 14, 13, 12})), // 4D - ReverseSequenceParams(2, 1, - reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{ - 0, 0, 3, 0, 6, 0, 9, 0, 1, 0, 4, 0, 7, 0, 10, 0, 2, 0, 5, 0, 8, 0, 11, 0, - 12, 0, 15, 0, 18, 0, 21, 0, 13, 0, 16, 0, 19, 0, 22, 0, 14, 0, 17, 0, 20, 0, 23, 0}), - reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), - reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{ - 0, 0, 4, 0, 6, 0, 10, 0, 1, 0, 3, 0, 7, 0, 9, 0, 2, 0, 5, 0, 8, 0, 11, 0, - 12, 0, 16, 0, 18, 0, 22, 0, 13, 0, 15, 0, 19, 0, 21, 0, 14, 0, 17, 0, 20, 0, 23, 0})), - ReverseSequenceParams(-2, -3, - reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{ - 0, 0, 3, 0, 6, 0, 9, 0, 1, 0, 4, 0, 7, 0, 10, 0, 2, 0, 5, 0, 8, 0, 11, 0, - 12, 0, 15, 0, 18, 0, 21, 0, 13, 0, 16, 0, 19, 0, 22, 0, 14, 0, 17, 0, 20, 0, 23, 0}), - reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), - reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{ - 0, 0, 4, 0, 6, 0, 10, 0, 1, 0, 3, 0, 7, 0, 9, 0, 2, 0, 5, 0, 8, 0, 11, 0, - 12, 0, 16, 0, 18, 0, 22, 0, 13, 0, 15, 0, 19, 0, 21, 0, 14, 0, 17, 0, 20, 0, 23, 0})), - ReverseSequenceParams(0, 1, - reference_tests::Tensor({4, 3, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}), - reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 3, 3}), - reference_tests::Tensor({4, 3, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17, 18, 19, - 12, 13, 14, 15, 20, 21, 22, 23, 32, 33, 34, 35, 28, 29, 30, 31, - 24, 25, 26, 27, 44, 45, 46, 47, 40, 41, 42, 43, 36, 37, 38, 39})), + ReverseSequenceParams( + 2, + 1, + reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{0, 0, 3, 0, 6, 0, 9, 0, 1, 0, 4, 0, + 7, 0, 10, 0, 2, 0, 5, 0, 8, 0, 11, 0, + 12, 0, 15, 0, 18, 0, 21, 0, 13, 0, 16, 0, + 19, 0, 22, 0, 14, 0, 17, 0, 20, 0, 23, 0}), + reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), + reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{0, 0, 4, 0, 6, 0, 10, 0, 1, 0, 3, 0, + 7, 0, 9, 0, 2, 0, 5, 0, 8, 0, 11, 0, + 12, 0, 16, 0, 18, 0, 22, 0, 13, 0, 15, 0, + 19, 0, 21, 0, 14, 0, 17, 0, 20, 0, 23, 0})), + ReverseSequenceParams( + -2, + -3, + reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{0, 0, 3, 0, 6, 0, 9, 0, 1, 0, 4, 0, + 7, 0, 10, 0, 2, 0, 5, 0, 8, 0, 11, 0, + 12, 0, 15, 0, 18, 0, 21, 0, 13, 0, 16, 0, + 19, 0, 22, 0, 14, 0, 17, 0, 20, 0, 23, 0}), + reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), + reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{0, 0, 4, 0, 6, 0, 10, 0, 1, 0, 3, 0, + 7, 0, 9, 0, 2, 0, 5, 0, 8, 0, 11, 0, + 12, 0, 16, 0, 18, 0, 22, 0, 13, 0, 15, 0, + 19, 0, 21, 0, 14, 0, 17, 0, 20, 0, 23, 0})), + ReverseSequenceParams( + 0, + 1, + reference_tests::Tensor({4, 3, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}), + reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 3, 3}), + reference_tests::Tensor({4, 3, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17, 18, 19, + 12, 13, 14, 15, 20, 21, 22, 23, 32, 33, 34, 35, 28, 29, 30, 31, + 24, 25, 26, 27, 44, 45, 46, 47, 40, 41, 42, 43, 36, 37, 38, 39})), // 5D - ReverseSequenceParams(0, 2, - reference_tests::Tensor({4, 2, 3, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}), - reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), - reference_tests::Tensor({4, 3, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 28, 29, 30, 31, 24, 25, 26, 27, 32, 33, 34, 35, 40, 41, 42, 43, - 36, 37, 38, 39, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 76, 77, 78, 79, 72, 73, 74, 75, - 80, 81, 82, 83, 88, 89, 90, 91, 84, 85, 86, 87, 92, 93, 94, 95})) - }; + ReverseSequenceParams( + 0, + 2, + reference_tests::Tensor( + {4, 2, 3, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}), + reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), + reference_tests::Tensor( + {4, 3, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 28, 29, 30, 31, 24, 25, 26, 27, 32, 33, 34, 35, 40, 41, 42, 43, + 36, 37, 38, 39, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 76, 77, 78, 79, 72, 73, 74, 75, + 80, 81, 82, 83, 88, 89, 90, 91, 84, 85, 86, 87, 92, 93, 94, 95}))}; return reverseSeqParams; } std::vector generateReverseSeqCombinedParams() { - const std::vector> reverseSeqTypeParams { + const std::vector> reverseSeqTypeParams{ generateReverseSeqParams(), generateReverseSeqParams(), generateReverseSeqParams(), @@ -142,6 +169,8 @@ std::vector generateReverseSeqCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ReverseSequence_With_Hardcoded_Refs, ReferenceReverseSequenceTest, - testing::ValuesIn(generateReverseSeqCombinedParams()), ReferenceReverseSequenceTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ReverseSequence_With_Hardcoded_Refs, + ReferenceReverseSequenceTest, + testing::ValuesIn(generateReverseSeqCombinedParams()), + ReferenceReverseSequenceTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/rnn_cell.cpp b/src/plugins/template/tests/functional/op_reference/rnn_cell.cpp index 8d0c36d94d927c..ae9685174a182b 100644 --- a/src/plugins/template/tests/functional/op_reference/rnn_cell.cpp +++ b/src/plugins/template/tests/functional/op_reference/rnn_cell.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/rnn_cell.hpp" + #include -#include "openvino/op/rnn_cell.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,12 +13,26 @@ using namespace ov; namespace { struct RNNCellParams { - RNNCellParams( - int32_t batchSize, int32_t inputSize, int32_t hiddenSize, - const reference_tests::Tensor& X, const reference_tests::Tensor& H_t, const reference_tests::Tensor& W, const reference_tests::Tensor& R, const reference_tests::Tensor& B, - const reference_tests::Tensor& Ho, const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), - X(X), H_t(H_t), W(W), R(R), B(B), Ho(Ho), testcaseName(testcaseName) {} + RNNCellParams(int32_t batchSize, + int32_t inputSize, + int32_t hiddenSize, + const reference_tests::Tensor& X, + const reference_tests::Tensor& H_t, + const reference_tests::Tensor& W, + const reference_tests::Tensor& R, + const reference_tests::Tensor& B, + const reference_tests::Tensor& Ho, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + X(X), + H_t(H_t), + W(W), + R(R), + B(B), + Ho(Ho), + testcaseName(testcaseName) {} int32_t batchSize; int32_t inputSize; @@ -89,9 +104,16 @@ class ReferenceRNNCellTestBiasClip : public ReferenceRNNCellTest { const auto R = std::make_shared(params.R.type, params.R.shape); const auto B = std::make_shared(params.B.type, params.B.shape); - const auto rnn_cell = std::make_shared( - X, H_t, W, R, B, params.hiddenSize, - std::vector{"tanh"}, std::vector{}, std::vector{}, clip); + const auto rnn_cell = std::make_shared(X, + H_t, + W, + R, + B, + params.hiddenSize, + std::vector{"tanh"}, + std::vector{}, + std::vector{}, + clip); auto function = std::make_shared(NodeVector{rnn_cell}, ParameterVector{X, H_t, W, R, B}); return function; } @@ -146,40 +168,52 @@ TEST_P(ReferenceRNNCellTestSigmoidActivationFunction, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - RNNCellParams( - 2, 3, 3, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.41930267f, - 0.7872176f, - 0.89940447f, - 0.23659843f, - 0.24676207f, - 0.17101714f, - 0.3147149f, - 0.6555601f, - 0.4559603f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.8374871f, - 0.86660194f, - 0.82114047f, - 0.71549815f, - 0.18775631f, - 0.3182116f, - 0.25392973f, - 0.38301638f, - 0.85531586f}), - reference_tests::Tensor(ET, {3}, std::vector{0.0f, 0.0f, 0.0f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{0.9408395f, 0.53823817f, 0.84270686f, 0.98932856f, 0.768665f, 0.90461975f}), - "rnn_cell_zero_bias_default_attrs"), + std::vector params{ + RNNCellParams(2, + 3, + 3, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.41930267f, + 0.7872176f, + 0.89940447f, + 0.23659843f, + 0.24676207f, + 0.17101714f, + 0.3147149f, + 0.6555601f, + 0.4559603f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.8374871f, + 0.86660194f, + 0.82114047f, + 0.71549815f, + 0.18775631f, + 0.3182116f, + 0.25392973f, + 0.38301638f, + 0.85531586f}), + reference_tests::Tensor(ET, {3}, std::vector{0.0f, 0.0f, 0.0f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.9408395f, 0.53823817f, 0.84270686f, 0.98932856f, 0.768665f, 0.90461975f}), + "rnn_cell_zero_bias_default_attrs"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -196,40 +230,52 @@ std::vector generateCombinedParams() { template std::vector generateParamsBiasClip() { using T = typename element_type_traits::value_type; - std::vector params { - RNNCellParams( - 2, 3, 3, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.41930267f, - 0.7872176f, - 0.89940447f, - 0.23659843f, - 0.24676207f, - 0.17101714f, - 0.3147149f, - 0.6555601f, - 0.4559603f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.8374871f, - 0.86660194f, - 0.82114047f, - 0.71549815f, - 0.18775631f, - 0.3182116f, - 0.25392973f, - 0.38301638f, - 0.85531586f}), - reference_tests::Tensor(ET, {3}, std::vector{1.0289404f, 1.6362579f, 0.4370661f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{0.9922437f, 0.97749525f, 0.9312212f, 0.9937176f, 0.9901317f, 0.95906746f}), - "rnn_cell_bias_clip"), + std::vector params{ + RNNCellParams(2, + 3, + 3, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.41930267f, + 0.7872176f, + 0.89940447f, + 0.23659843f, + 0.24676207f, + 0.17101714f, + 0.3147149f, + 0.6555601f, + 0.4559603f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.8374871f, + 0.86660194f, + 0.82114047f, + 0.71549815f, + 0.18775631f, + 0.3182116f, + 0.25392973f, + 0.38301638f, + 0.85531586f}), + reference_tests::Tensor(ET, {3}, std::vector{1.0289404f, 1.6362579f, 0.4370661f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.9922437f, 0.97749525f, 0.9312212f, 0.9937176f, 0.9901317f, 0.95906746f}), + "rnn_cell_bias_clip"), }; return params; } std::vector generateCombinedParamsBiasClip() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsBiasClip(), generateParamsBiasClip(), generateParamsBiasClip(), @@ -246,40 +292,52 @@ std::vector generateCombinedParamsBiasClip() { template std::vector generateParamsSigmoidActivationFunction() { using T = typename element_type_traits::value_type; - std::vector params { - RNNCellParams( - 2, 3, 3, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.41930267f, - 0.7872176f, - 0.89940447f, - 0.23659843f, - 0.24676207f, - 0.17101714f, - 0.3147149f, - 0.6555601f, - 0.4559603f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.8374871f, - 0.86660194f, - 0.82114047f, - 0.71549815f, - 0.18775631f, - 0.3182116f, - 0.25392973f, - 0.38301638f, - 0.85531586f}), - reference_tests::Tensor(ET, {3}, std::vector{1.0289404f, 1.6362579f, 0.4370661f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{0.94126844f, 0.9036043f, 0.841243f, 0.9468489f, 0.934215f, 0.873708f}), - "rnn_cell_sigmoid_activation_function"), + std::vector params{ + RNNCellParams(2, + 3, + 3, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.41930267f, + 0.7872176f, + 0.89940447f, + 0.23659843f, + 0.24676207f, + 0.17101714f, + 0.3147149f, + 0.6555601f, + 0.4559603f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.8374871f, + 0.86660194f, + 0.82114047f, + 0.71549815f, + 0.18775631f, + 0.3182116f, + 0.25392973f, + 0.38301638f, + 0.85531586f}), + reference_tests::Tensor(ET, {3}, std::vector{1.0289404f, 1.6362579f, 0.4370661f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.94126844f, 0.9036043f, 0.841243f, 0.9468489f, 0.934215f, 0.873708f}), + "rnn_cell_sigmoid_activation_function"), }; return params; } std::vector generateCombinedParamsSigmoidActivationFunction() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsSigmoidActivationFunction(), generateParamsSigmoidActivationFunction(), generateParamsSigmoidActivationFunction(), @@ -293,12 +351,18 @@ std::vector generateCombinedParamsSigmoidActivationFunction() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, ReferenceRNNCellTest, - testing::ValuesIn(generateCombinedParams()), ReferenceRNNCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, + ReferenceRNNCellTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceRNNCellTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, ReferenceRNNCellTestBiasClip, - testing::ValuesIn(generateCombinedParamsBiasClip()), ReferenceRNNCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, + ReferenceRNNCellTestBiasClip, + testing::ValuesIn(generateCombinedParamsBiasClip()), + ReferenceRNNCellTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, ReferenceRNNCellTestSigmoidActivationFunction, - testing::ValuesIn(generateCombinedParamsSigmoidActivationFunction()), ReferenceRNNCellTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, + ReferenceRNNCellTestSigmoidActivationFunction, + testing::ValuesIn(generateCombinedParamsSigmoidActivationFunction()), + ReferenceRNNCellTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/rnn_sequence.cpp b/src/plugins/template/tests/functional/op_reference/rnn_sequence.cpp index 2a8d5519fb9044..de19641733b55f 100644 --- a/src/plugins/template/tests/functional/op_reference/rnn_sequence.cpp +++ b/src/plugins/template/tests/functional/op_reference/rnn_sequence.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/rnn_sequence.hpp" + #include -#include "openvino/op/rnn_sequence.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,37 +14,51 @@ using namespace ov; namespace { struct RNNSequenceParams { template - RNNSequenceParams( - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const float clip, const op::RecurrentSequenceDirection& rnn_direction, - const element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& seqLengthsValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, - const std::vector& YValues, const std::vector& HoValues, - const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - clip(clip), rnn_direction(rnn_direction), iType(iType), oType(iType), - testcaseName(testcaseName) { - numDirections = (rnn_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; + RNNSequenceParams(const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const float clip, + const op::RecurrentSequenceDirection& rnn_direction, + const element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& seqLengthsValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + clip(clip), + rnn_direction(rnn_direction), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + numDirections = (rnn_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; - Shape XShape = Shape{batchSize, seqLength, inputSize}; - Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape seqLengthsShape = Shape{batchSize}; - Shape WShape = Shape{numDirections, hiddenSize, inputSize}; - Shape RShape = Shape{numDirections, hiddenSize, hiddenSize}; - Shape BShape = Shape{numDirections, hiddenSize}; - Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; - Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape XShape = Shape{batchSize, seqLength, inputSize}; + Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape seqLengthsShape = Shape{batchSize}; + Shape WShape = Shape{numDirections, hiddenSize, inputSize}; + Shape RShape = Shape{numDirections, hiddenSize, hiddenSize}; + Shape BShape = Shape{numDirections, hiddenSize}; + Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; + Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - } + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + } size_t batchSize; size_t inputSize; @@ -71,7 +86,8 @@ class ReferenceRNNSequenceTest : public testing::TestWithParam CreateFunction(const RNNSequenceParams& params) { const auto X = std::make_shared(params.X.type, params.X.shape); const auto H_t = std::make_shared(params.H_t.type, params.H_t.shape); - const auto sequence_lengths = std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); + const auto sequence_lengths = + std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); const auto W = std::make_shared(params.W.type, params.W.shape); const auto R = std::make_shared(params.R.type, params.R.shape); const auto B = std::make_shared(params.B.type, params.B.shape); - const auto rnn_sequence = - std::make_shared(X, - H_t, - sequence_lengths, - W, - R, - B, - params.hiddenSize, - params.rnn_direction, - std::vector{"tanh"}, - std::vector{}, - std::vector{}, - params.clip); + const auto rnn_sequence = std::make_shared(X, + H_t, + sequence_lengths, + W, + R, + B, + params.hiddenSize, + params.rnn_direction, + std::vector{"tanh"}, + std::vector{}, + std::vector{}, + params.clip); - auto function = std::make_shared(rnn_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B}); + auto function = + std::make_shared(rnn_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B}); return function; } }; @@ -131,442 +148,564 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ RNNSequenceParams( - 5, 10, 10, 10, - 0.f, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.f, + op::RecurrentSequenceDirection::FORWARD, ET, - std::vector{ - -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, 0.847476, -0.252158, - -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, - -0.899024, 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, - -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, - -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, 0.386911, - 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, -0.124885, 0.475875, -0.248479, -0.0135011, - -0.971921, -0.501126, -0.30573, 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, - 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, - 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, - -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, -0.298536, 0.522286, - -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, - -0.61579, 0.675731, -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, - 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, 0.159798, -0.243754, - 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, - -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, - 0.406964, 0.772353, 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, - -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, 0.194028, 0.476884, - -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, - 0.452785, -0.869765, 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, - -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, - -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, - -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, -0.59019, -0.0682369, 0.526142, - 0.0647325, 0.102044, -0.529739, -0.448041, -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, - -0.662836, -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, - -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, - -0.18924, -0.129838, 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, -0.0537746, - -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, -0.948014, 0.464231, -0.473613, 0.422959, - 0.354869, 0.641287, 0.582011, 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, - -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, -0.838224, -0.760405, -0.0744435, - 0.556972, -0.203011, 0.248964, 0.59689, -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, - -0.919203, 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, 0.700705, -0.3679, - -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, - -0.544078, 0.565815, -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, 0.556404, - -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, -0.107599, 0.699691, 0.879165, -0.605746, - 0.851844, -0.197677, -0.0638249, -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, - 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, -0.944312, 0.806772, -0.108092, - 0.089091, -0.960954, 0.725746, 0.269557, -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, - -0.815517, -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, 0.36846, -0.0844384, - -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, - -0.919986, 0.409152, -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, 0.770576, - 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, 0.142622, -0.787519, 0.509953, 0.415293, - -0.640467, 0.701937, 0.649218, 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, - -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, 0.340562, -0.927739, 0.570913, - 0.0577081, 0.345886, -0.147266, -0.920045, 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, - -0.763785, -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, -0.11752, 0.246401, - 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, - 0.159976, -0.731893, -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, 0.910255, - 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, 0.792444, 0.874022, -0.108247, 0.452289, - 0.613927, -0.608009, 0.0925679, -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, - -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, -0.848069, -0.850426, 1}, - std::vector{ - -1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, -0.132298, 0.148535, - -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, 0.350663, -0.0375085, 0.954534, -0.57807, - -0.573083, 0.887977, -0.347673, 0.972259, -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, - 0.539075, -0.983636, -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, - -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, 0.482923, 1}, + std::vector{-1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, + -0.0761474, 0.847476, -0.252158, -0.690053, 0.784687, -0.946421, -0.416995, + -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, -0.899024, + 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, + 0.474405, 0.193539, -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, + 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, -0.794512, -0.524943, + -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, + 0.386911, 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, + -0.124885, 0.475875, -0.248479, -0.0135011, -0.971921, -0.501126, -0.30573, + 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, + 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, + 0.57467, 0.434931, -0.11202, 0.501784, 0.315797, -0.278605, -0.243354, + 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, -0.551361, + -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, + -0.298536, 0.522286, -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, + 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, -0.61579, 0.675731, + -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, + -0.13792, 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, + -0.0989319, 0.530222, 0.159798, -0.243754, 0.244787, 0.478345, 0.826766, + 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, + -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, + -0.392934, -0.510492, 0.536422, 0.406964, 0.772353, 0.826283, -0.549379, + -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, -0.181486, + -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, + 0.194028, 0.476884, -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, + 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, 0.452785, -0.869765, + 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, + -0.64626, -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, + -0.266728, -0.984396, 0.310033, -0.663894, -0.00708379, 0.581608, 0.635922, + -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, + -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, + -0.59019, -0.0682369, 0.526142, 0.0647325, 0.102044, -0.529739, -0.448041, + -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, -0.662836, + -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, + 0.324356, 0.75563, -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, + 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, -0.18924, -0.129838, + 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, + -0.0537746, -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, + -0.948014, 0.464231, -0.473613, 0.422959, 0.354869, 0.641287, 0.582011, + 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, + -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, + -0.838224, -0.760405, -0.0744435, 0.556972, -0.203011, 0.248964, 0.59689, + -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, -0.919203, + 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, + 0.700705, -0.3679, -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, + -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, -0.544078, 0.565815, + -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, + 0.556404, -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, + -0.107599, 0.699691, 0.879165, -0.605746, 0.851844, -0.197677, -0.0638249, + -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, + 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, + -0.944312, 0.806772, -0.108092, 0.089091, -0.960954, 0.725746, 0.269557, + -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, -0.815517, + -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, + 0.36846, -0.0844384, -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, + 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, -0.919986, 0.409152, + -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, + 0.770576, 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, + 0.142622, -0.787519, 0.509953, 0.415293, -0.640467, 0.701937, 0.649218, + 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, + -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, + 0.340562, -0.927739, 0.570913, 0.0577081, 0.345886, -0.147266, -0.920045, + 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, -0.763785, + -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, + -0.11752, 0.246401, 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, + -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, 0.159976, -0.731893, + -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, + 0.910255, 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, + 0.792444, 0.874022, -0.108247, 0.452289, 0.613927, -0.608009, 0.0925679, + -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, + -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, + -0.848069, -0.850426, 1}, + std::vector{-1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, + -0.132298, 0.148535, -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, + 0.350663, -0.0375085, 0.954534, -0.57807, -0.573083, 0.887977, -0.347673, 0.972259, + -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, 0.539075, -0.983636, + -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, + -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, + 0.482923, 1}, std::vector{10, 10, 10, 10, 10}, + std::vector{-1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, + 0.782117, 0.297318, -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, + -0.95289, 0.0132674, -0.716936, 0.821415, 0.94, -0.545582, -0.79185, -0.897178, + -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, -0.02916, 0.661658, + -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, + 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, + -0.833119, -0.0234757, -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, + -0.481575, 0.10334, 0.376482, -0.540745, 0.596997, -0.946251, -0.802122, -0.393072, + 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, 0.889737, 0.809528, + -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, + 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, + 0.761418, 0.346103, 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, + 0.272147, 0.612127, -0.390442, 1}, + std::vector{-1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, + -0.595043, -0.477837, 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, + -0.206045, -0.286988, 0.61286, 0.287588, 0.220286, 0.251281, -0.327665, -0.648745, + 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, -0.650602, 0.406752, + -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, + 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, + -0.744722, 0.939746, 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, + 0.169792, 0.574887, 0.805658, -0.042754, 0.419412, 0.372186, 0.730907, -0.750522, + 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, -0.405147, -0.61521, + 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, + -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, + 0.994596, -0.581395, -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, + -0.658721, -0.485042, -0.038087, 1}, + std::vector{-1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, std::vector{ - -1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, 0.782117, 0.297318, - -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, -0.95289, 0.0132674, -0.716936, 0.821415, - 0.94, -0.545582, -0.79185, -0.897178, -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, - -0.02916, 0.661658, -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, - 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, -0.833119, -0.0234757, - -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, -0.481575, 0.10334, 0.376482, -0.540745, - 0.596997, -0.946251, -0.802122, -0.393072, 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, - 0.889737, 0.809528, -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, - 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, 0.761418, 0.346103, - 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, 0.272147, 0.612127, -0.390442, 1}, - std::vector{ - -1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, -0.595043, -0.477837, - 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, -0.206045, -0.286988, 0.61286, 0.287588, - 0.220286, 0.251281, -0.327665, -0.648745, 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, - -0.650602, 0.406752, -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, - 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, -0.744722, 0.939746, - 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, 0.169792, 0.574887, 0.805658, -0.042754, - 0.419412, 0.372186, 0.730907, -0.750522, 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, - -0.405147, -0.61521, 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, - -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, 0.994596, -0.581395, - -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, -0.658721, -0.485042, -0.038087, 1}, - std::vector{ - -1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, - std::vector{ - -0.470427, -0.735855, -0.329029, 0.999017, -0.97258, -0.832011, 0.845522, 0.894361, 0.958116, 0.224556, - -0.194886, 0.7597, -0.979301, 0.857585, -0.317987, 0.646902, 0.593991, 0.999861, 0.538864, 0.927538, - 0.37339, -0.72924, -0.950366, 0.998894, -0.345412, 0.999566, -0.905088, 0.653838, 0.931462, 0.963299, - -0.906984, 0.0686653, -0.987239, -0.536094, 0.796584, 0.99365, -0.558737, 0.999976, -0.599586, 0.998812, - 0.983484, -0.701986, 0.423666, -0.135422, 0.989586, 0.139235, 0.685596, -0.461324, -0.99599, 0.953192, - -0.966443, 0.971833, 0.924096, -0.966079, 0.999922, 0.619564, 0.992519, -0.955464, -0.780334, 0.996958, - 0.754961, -0.856074, 0.390907, 0.0981389, 0.119931, -0.998381, 0.999874, -0.831976, -0.451887, 0.995945, - -0.999099, -0.0742243, 0.0827845, 0.612425, 0.999317, -0.937344, 0.983523, 0.995035, 0.585578, 0.977957, - -0.43647, 0.388421, -0.258281, 0.999908, 0.831387, 0.667824, 0.562112, 0.922843, 0.822575, -0.242546, - 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, 0.0274753, 0.835067, - -0.888153, 0.515512, -0.535921, 0.959418, -0.562229, -0.987868, 0.792129, 0.475789, 0.514164, -0.984779, - 0.0509315, -0.982143, -0.67308, 0.999919, -0.996151, -0.260185, 0.199735, 0.993083, 0.969637, -0.910127, - -0.675983, 0.70171, -0.299249, 0.829332, 0.944843, 0.999636, -0.939607, 0.989802, 0.988641, 0.905483, - -0.646793, 0.164027, -0.106558, 0.912668, 0.865034, 0.996346, -0.954819, 0.658484, -0.733437, 0.981117, - 0.370026, 0.921197, -0.488649, 0.0900238, 0.0720321, 0.992835, 0.585617, -0.46584, -0.903143, 0.99996, - -0.356482, -0.749733, 0.932796, -0.465316, 0.97494, 0.899907, -0.67506, -0.965299, 0.454869, 0.988603, - -0.982064, 0.828854, -0.220461, -0.86623, -0.339239, -0.96652, 0.991063, 0.991035, 0.777575, 0.999398, - 0.946364, 0.880981, -0.998482, 0.547716, 0.999092, -0.992971, 0.697291, 0.963563, -0.891479, 0.300176, - 0.364938, 0.775309, -0.820081, -0.376288, 0.999946, 0.558757, 0.997203, -0.866317, -0.999996, -0.941121, - 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, - 0.681976, -0.725531, 0.510584, 0.12361, 0.125229, 0.977814, -0.998011, -0.965556, -0.631127, 0.871774, - -0.995246, 0.831005, 0.603614, -0.976149, 0.723436, 0.005006, -0.813208, 0.378399, 0.675123, 0.999891, - -0.91046, 0.734962, 0.983588, 0.29022, 0.353188, -0.987676, 0.607138, 0.0411221, -0.694228, 0.70539, - 0.932037, 0.733177, -0.964759, 0.257687, 0.195126, -0.995997, 0.998685, 0.826683, -0.990081, 0.991014, - -0.950626, -0.146971, -0.715613, 0.841348, 0.998419, -0.887543, 0.961327, 0.600526, -0.994247, -0.619601, - 0.84072, -0.738013, -0.698475, 0.999502, 0.881153, -0.793456, 0.739883, 0.0180047, 0.4453, -0.485067, - 0.313446, 0.99986, 0.801312, -0.827691, 0.933498, 0.999094, 0.803509, -0.98389, -0.00203269, 0.846717, - -0.988731, -0.155845, 0.813561, -0.821903, 0.876179, -0.974753, 0.978543, -0.888744, 0.618244, 0.827802, - -0.891081, 0.997132, -0.574761, -0.133318, 0.51666, -0.998325, 0.998647, 0.557186, 0.745226, 0.750499, - -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, - -0.89536, 0.233029, -0.512256, 0.0501049, 0.914272, -0.446383, -0.0660111, 0.987471, -0.293181, 0.0090407, - 0.993962, 0.725552, 0.861327, 0.802724, 0.996225, -0.357275, 0.692737, -0.765375, -0.923606, 0.94725, - -0.976212, 0.112285, 0.116271, 0.625773, -0.107807, -0.991827, 0.616004, -0.187246, -0.546877, 0.598621, - 0.984211, 0.834327, -0.949712, 0.697382, 0.314412, 0.264601, -0.0311285, -0.167991, -0.815124, 0.938068, - -0.997105, -0.0607237, 0.323916, -0.751497, 0.967815, 0.488129, 0.992229, 0.909782, -0.994726, 0.944747, - 0.0310377, -0.997291, -0.57774, 0.999577, 0.952662, -0.993977, 0.966995, 0.653885, 0.81589, -0.00180226, - 0.919955, 0.999967, -0.388806, -0.69297, 0.998599, 0.989852, 0.977406, 0.454365, -0.613587, 0.96152, - 0.668411, -0.834641, 0.808747, -0.218147, 0.994641, 0.649985, 0.983425, -0.999456, -0.993521, -0.237065, - -0.90937, 0.803391, -0.959971, -0.966409, 0.914242, -0.890865, 0.974014, -0.926672, -0.0687355, -0.127353, - 0.662279, -0.589603, 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, - -0.873948, 0.587376, -0.0521998, 0.796093, 0.814562, -0.270571, 0.85441, 0.943845, 0.98825, 0.685685, - -0.451584, 0.0440054, -0.999464, 0.999774, 0.460959, 0.681076, -0.324321, 0.967583, 0.654874, -0.168221, - 0.667043, 0.960345, -0.97207, -0.595059, -0.106839, 0.993147, 0.943661, 0.942445, -0.939552, 0.971532, - -0.300632, -0.791734, 0.396844, -0.757931, 0.995531, 0.657585, 0.997931, -0.830918, -0.989057, 0.804422, - 0.851206, 0.947814, -0.89455, -0.972667, 0.973761, -0.978947, 0.71407, -0.969456, -0.0211013, 0.75895, - -0.824819, 0.994166, 0.996015, -0.911606, 0.992728, -0.180097, 0.999886, -0.970702, -0.859906, 0.384982, - 0.399817, -0.871178, 0.992977, 0.360447, -0.310061, -0.999914, 0.999989, -0.551683, -0.639379, 0.840487, - -0.977291, 0.950401, -0.958736, -0.796325, 0.997133, -0.937949, 0.994022, 0.99259, -0.233032, 0.999401, - 0.996386, 0.496829, 0.983234, 0.972622, 0.999547, 0.0118207, 0.977296, -0.989754, -0.984194, -0.799701, - -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, -0.547825, 0.689601}, - std::vector{ - 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, 0.0274753, 0.835067, - 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, - -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, - 0.662279, -0.589603, 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, - -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, -0.547825, 0.689601}), + -0.470427, -0.735855, -0.329029, 0.999017, -0.97258, -0.832011, 0.845522, 0.894361, + 0.958116, 0.224556, -0.194886, 0.7597, -0.979301, 0.857585, -0.317987, 0.646902, + 0.593991, 0.999861, 0.538864, 0.927538, 0.37339, -0.72924, -0.950366, 0.998894, + -0.345412, 0.999566, -0.905088, 0.653838, 0.931462, 0.963299, -0.906984, 0.0686653, + -0.987239, -0.536094, 0.796584, 0.99365, -0.558737, 0.999976, -0.599586, 0.998812, + 0.983484, -0.701986, 0.423666, -0.135422, 0.989586, 0.139235, 0.685596, -0.461324, + -0.99599, 0.953192, -0.966443, 0.971833, 0.924096, -0.966079, 0.999922, 0.619564, + 0.992519, -0.955464, -0.780334, 0.996958, 0.754961, -0.856074, 0.390907, 0.0981389, + 0.119931, -0.998381, 0.999874, -0.831976, -0.451887, 0.995945, -0.999099, -0.0742243, + 0.0827845, 0.612425, 0.999317, -0.937344, 0.983523, 0.995035, 0.585578, 0.977957, + -0.43647, 0.388421, -0.258281, 0.999908, 0.831387, 0.667824, 0.562112, 0.922843, + 0.822575, -0.242546, 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, + 0.817433, -0.981772, 0.0274753, 0.835067, -0.888153, 0.515512, -0.535921, 0.959418, + -0.562229, -0.987868, 0.792129, 0.475789, 0.514164, -0.984779, 0.0509315, -0.982143, + -0.67308, 0.999919, -0.996151, -0.260185, 0.199735, 0.993083, 0.969637, -0.910127, + -0.675983, 0.70171, -0.299249, 0.829332, 0.944843, 0.999636, -0.939607, 0.989802, + 0.988641, 0.905483, -0.646793, 0.164027, -0.106558, 0.912668, 0.865034, 0.996346, + -0.954819, 0.658484, -0.733437, 0.981117, 0.370026, 0.921197, -0.488649, 0.0900238, + 0.0720321, 0.992835, 0.585617, -0.46584, -0.903143, 0.99996, -0.356482, -0.749733, + 0.932796, -0.465316, 0.97494, 0.899907, -0.67506, -0.965299, 0.454869, 0.988603, + -0.982064, 0.828854, -0.220461, -0.86623, -0.339239, -0.96652, 0.991063, 0.991035, + 0.777575, 0.999398, 0.946364, 0.880981, -0.998482, 0.547716, 0.999092, -0.992971, + 0.697291, 0.963563, -0.891479, 0.300176, 0.364938, 0.775309, -0.820081, -0.376288, + 0.999946, 0.558757, 0.997203, -0.866317, -0.999996, -0.941121, 0.784196, -0.940529, + -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, + 0.681976, -0.725531, 0.510584, 0.12361, 0.125229, 0.977814, -0.998011, -0.965556, + -0.631127, 0.871774, -0.995246, 0.831005, 0.603614, -0.976149, 0.723436, 0.005006, + -0.813208, 0.378399, 0.675123, 0.999891, -0.91046, 0.734962, 0.983588, 0.29022, + 0.353188, -0.987676, 0.607138, 0.0411221, -0.694228, 0.70539, 0.932037, 0.733177, + -0.964759, 0.257687, 0.195126, -0.995997, 0.998685, 0.826683, -0.990081, 0.991014, + -0.950626, -0.146971, -0.715613, 0.841348, 0.998419, -0.887543, 0.961327, 0.600526, + -0.994247, -0.619601, 0.84072, -0.738013, -0.698475, 0.999502, 0.881153, -0.793456, + 0.739883, 0.0180047, 0.4453, -0.485067, 0.313446, 0.99986, 0.801312, -0.827691, + 0.933498, 0.999094, 0.803509, -0.98389, -0.00203269, 0.846717, -0.988731, -0.155845, + 0.813561, -0.821903, 0.876179, -0.974753, 0.978543, -0.888744, 0.618244, 0.827802, + -0.891081, 0.997132, -0.574761, -0.133318, 0.51666, -0.998325, 0.998647, 0.557186, + 0.745226, 0.750499, -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, + 0.995547, 0.970334, -0.285624, 0.876872, -0.89536, 0.233029, -0.512256, 0.0501049, + 0.914272, -0.446383, -0.0660111, 0.987471, -0.293181, 0.0090407, 0.993962, 0.725552, + 0.861327, 0.802724, 0.996225, -0.357275, 0.692737, -0.765375, -0.923606, 0.94725, + -0.976212, 0.112285, 0.116271, 0.625773, -0.107807, -0.991827, 0.616004, -0.187246, + -0.546877, 0.598621, 0.984211, 0.834327, -0.949712, 0.697382, 0.314412, 0.264601, + -0.0311285, -0.167991, -0.815124, 0.938068, -0.997105, -0.0607237, 0.323916, -0.751497, + 0.967815, 0.488129, 0.992229, 0.909782, -0.994726, 0.944747, 0.0310377, -0.997291, + -0.57774, 0.999577, 0.952662, -0.993977, 0.966995, 0.653885, 0.81589, -0.00180226, + 0.919955, 0.999967, -0.388806, -0.69297, 0.998599, 0.989852, 0.977406, 0.454365, + -0.613587, 0.96152, 0.668411, -0.834641, 0.808747, -0.218147, 0.994641, 0.649985, + 0.983425, -0.999456, -0.993521, -0.237065, -0.90937, 0.803391, -0.959971, -0.966409, + 0.914242, -0.890865, 0.974014, -0.926672, -0.0687355, -0.127353, 0.662279, -0.589603, + 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, + -0.873948, 0.587376, -0.0521998, 0.796093, 0.814562, -0.270571, 0.85441, 0.943845, + 0.98825, 0.685685, -0.451584, 0.0440054, -0.999464, 0.999774, 0.460959, 0.681076, + -0.324321, 0.967583, 0.654874, -0.168221, 0.667043, 0.960345, -0.97207, -0.595059, + -0.106839, 0.993147, 0.943661, 0.942445, -0.939552, 0.971532, -0.300632, -0.791734, + 0.396844, -0.757931, 0.995531, 0.657585, 0.997931, -0.830918, -0.989057, 0.804422, + 0.851206, 0.947814, -0.89455, -0.972667, 0.973761, -0.978947, 0.71407, -0.969456, + -0.0211013, 0.75895, -0.824819, 0.994166, 0.996015, -0.911606, 0.992728, -0.180097, + 0.999886, -0.970702, -0.859906, 0.384982, 0.399817, -0.871178, 0.992977, 0.360447, + -0.310061, -0.999914, 0.999989, -0.551683, -0.639379, 0.840487, -0.977291, 0.950401, + -0.958736, -0.796325, 0.997133, -0.937949, 0.994022, 0.99259, -0.233032, 0.999401, + 0.996386, 0.496829, 0.983234, 0.972622, 0.999547, 0.0118207, 0.977296, -0.989754, + -0.984194, -0.799701, -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, + 0.998866, -0.990042, -0.547825, 0.689601}, + std::vector{0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, + 0.0274753, 0.835067, 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, + 0.497822, -0.998929, -0.126009, -0.999082, -0.151921, 0.471127, -0.0807336, 0.991118, + 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, 0.662279, -0.589603, + 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, + -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, + -0.547825, 0.689601}), RNNSequenceParams( - 5, 10, 10, 10, - 0.f, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.f, + op::RecurrentSequenceDirection::REVERSE, ET, - std::vector{ - -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, 0.847476, -0.252158, - -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, - -0.899024, 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, - -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, - -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, 0.386911, - 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, -0.124885, 0.475875, -0.248479, -0.0135011, - -0.971921, -0.501126, -0.30573, 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, - 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, - 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, - -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, -0.298536, 0.522286, - -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, - -0.61579, 0.675731, -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, - 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, 0.159798, -0.243754, - 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, - -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, - 0.406964, 0.772353, 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, - -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, 0.194028, 0.476884, - -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, - 0.452785, -0.869765, 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, - -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, - -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, - -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, -0.59019, -0.0682369, 0.526142, - 0.0647325, 0.102044, -0.529739, -0.448041, -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, - -0.662836, -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, - -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, - -0.18924, -0.129838, 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, -0.0537746, - -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, -0.948014, 0.464231, -0.473613, 0.422959, - 0.354869, 0.641287, 0.582011, 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, - -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, -0.838224, -0.760405, -0.0744435, - 0.556972, -0.203011, 0.248964, 0.59689, -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, - -0.919203, 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, 0.700705, -0.3679, - -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, - -0.544078, 0.565815, -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, 0.556404, - -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, -0.107599, 0.699691, 0.879165, -0.605746, - 0.851844, -0.197677, -0.0638249, -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, - 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, -0.944312, 0.806772, -0.108092, - 0.089091, -0.960954, 0.725746, 0.269557, -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, - -0.815517, -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, 0.36846, -0.0844384, - -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, - -0.919986, 0.409152, -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, 0.770576, - 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, 0.142622, -0.787519, 0.509953, 0.415293, - -0.640467, 0.701937, 0.649218, 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, - -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, 0.340562, -0.927739, 0.570913, - 0.0577081, 0.345886, -0.147266, -0.920045, 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, - -0.763785, -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, -0.11752, 0.246401, - 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, - 0.159976, -0.731893, -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, 0.910255, - 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, 0.792444, 0.874022, -0.108247, 0.452289, - 0.613927, -0.608009, 0.0925679, -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, - -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, -0.848069, -0.850426, 1}, - std::vector{ - -1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, -0.132298, 0.148535, - -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, 0.350663, -0.0375085, 0.954534, -0.57807, - -0.573083, 0.887977, -0.347673, 0.972259, -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, - 0.539075, -0.983636, -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, - -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, 0.482923, 1}, + std::vector{-1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, + -0.0761474, 0.847476, -0.252158, -0.690053, 0.784687, -0.946421, -0.416995, + -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, -0.899024, + 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, + 0.474405, 0.193539, -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, + 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, -0.794512, -0.524943, + -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, + 0.386911, 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, + -0.124885, 0.475875, -0.248479, -0.0135011, -0.971921, -0.501126, -0.30573, + 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, + 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, + 0.57467, 0.434931, -0.11202, 0.501784, 0.315797, -0.278605, -0.243354, + 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, -0.551361, + -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, + -0.298536, 0.522286, -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, + 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, -0.61579, 0.675731, + -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, + -0.13792, 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, + -0.0989319, 0.530222, 0.159798, -0.243754, 0.244787, 0.478345, 0.826766, + 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, + -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, + -0.392934, -0.510492, 0.536422, 0.406964, 0.772353, 0.826283, -0.549379, + -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, -0.181486, + -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, + 0.194028, 0.476884, -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, + 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, 0.452785, -0.869765, + 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, + -0.64626, -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, + -0.266728, -0.984396, 0.310033, -0.663894, -0.00708379, 0.581608, 0.635922, + -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, + -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, + -0.59019, -0.0682369, 0.526142, 0.0647325, 0.102044, -0.529739, -0.448041, + -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, -0.662836, + -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, + 0.324356, 0.75563, -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, + 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, -0.18924, -0.129838, + 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, + -0.0537746, -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, + -0.948014, 0.464231, -0.473613, 0.422959, 0.354869, 0.641287, 0.582011, + 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, + -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, + -0.838224, -0.760405, -0.0744435, 0.556972, -0.203011, 0.248964, 0.59689, + -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, -0.919203, + 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, + 0.700705, -0.3679, -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, + -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, -0.544078, 0.565815, + -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, + 0.556404, -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, + -0.107599, 0.699691, 0.879165, -0.605746, 0.851844, -0.197677, -0.0638249, + -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, + 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, + -0.944312, 0.806772, -0.108092, 0.089091, -0.960954, 0.725746, 0.269557, + -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, -0.815517, + -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, + 0.36846, -0.0844384, -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, + 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, -0.919986, 0.409152, + -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, + 0.770576, 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, + 0.142622, -0.787519, 0.509953, 0.415293, -0.640467, 0.701937, 0.649218, + 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, + -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, + 0.340562, -0.927739, 0.570913, 0.0577081, 0.345886, -0.147266, -0.920045, + 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, -0.763785, + -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, + -0.11752, 0.246401, 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, + -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, 0.159976, -0.731893, + -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, + 0.910255, 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, + 0.792444, 0.874022, -0.108247, 0.452289, 0.613927, -0.608009, 0.0925679, + -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, + -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, + -0.848069, -0.850426, 1}, + std::vector{-1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, + -0.132298, 0.148535, -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, + 0.350663, -0.0375085, 0.954534, -0.57807, -0.573083, 0.887977, -0.347673, 0.972259, + -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, 0.539075, -0.983636, + -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, + -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, + 0.482923, 1}, std::vector{10, 10, 10, 10, 10}, + std::vector{-1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, + 0.782117, 0.297318, -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, + -0.95289, 0.0132674, -0.716936, 0.821415, 0.94, -0.545582, -0.79185, -0.897178, + -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, -0.02916, 0.661658, + -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, + 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, + -0.833119, -0.0234757, -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, + -0.481575, 0.10334, 0.376482, -0.540745, 0.596997, -0.946251, -0.802122, -0.393072, + 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, 0.889737, 0.809528, + -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, + 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, + 0.761418, 0.346103, 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, + 0.272147, 0.612127, -0.390442, 1}, + std::vector{-1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, + -0.595043, -0.477837, 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, + -0.206045, -0.286988, 0.61286, 0.287588, 0.220286, 0.251281, -0.327665, -0.648745, + 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, -0.650602, 0.406752, + -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, + 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, + -0.744722, 0.939746, 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, + 0.169792, 0.574887, 0.805658, -0.042754, 0.419412, 0.372186, 0.730907, -0.750522, + 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, -0.405147, -0.61521, + 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, + -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, + 0.994596, -0.581395, -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, + -0.658721, -0.485042, -0.038087, 1}, + std::vector{-1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, std::vector{ - -1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, 0.782117, 0.297318, - -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, -0.95289, 0.0132674, -0.716936, 0.821415, - 0.94, -0.545582, -0.79185, -0.897178, -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, - -0.02916, 0.661658, -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, - 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, -0.833119, -0.0234757, - -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, -0.481575, 0.10334, 0.376482, -0.540745, - 0.596997, -0.946251, -0.802122, -0.393072, 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, - 0.889737, 0.809528, -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, - 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, 0.761418, 0.346103, - 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, 0.272147, 0.612127, -0.390442, 1}, - std::vector{ - -1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, -0.595043, -0.477837, - 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, -0.206045, -0.286988, 0.61286, 0.287588, - 0.220286, 0.251281, -0.327665, -0.648745, 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, - -0.650602, 0.406752, -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, - 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, -0.744722, 0.939746, - 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, 0.169792, 0.574887, 0.805658, -0.042754, - 0.419412, 0.372186, 0.730907, -0.750522, 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, - -0.405147, -0.61521, 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, - -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, 0.994596, -0.581395, - -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, -0.658721, -0.485042, -0.038087, 1}, - std::vector{ - -1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, - std::vector{ - 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, 0.363935, -0.0884402, - -0.990447, 0.842608, 0.657827, -0.362801, 0.295894, 0.222178, 0.972885, 0.957886, -0.376478, 0.504993, - 0.965053, -0.229597, -0.946319, 0.999672, 0.998961, -0.195694, 0.586567, -0.58356, 0.631116, 0.416555, - -0.725706, 0.0420496, -0.999482, -0.508284, 0.998452, -0.989286, 0.958206, 0.99888, -0.480881, 0.982364, - 0.346879, -0.687323, -0.160273, -0.0172902, -0.303112, -0.950921, 0.991803, -0.710375, -0.933744, 0.991481, - -0.659493, 0.754693, 0.754852, 0.236133, 0.989564, 0.999994, 0.684852, -0.369004, -0.847966, 0.979346, - 0.834702, 0.835757, -0.997023, 0.951418, -0.477717, 0.981288, 0.927471, 0.999848, 0.734415, 0.999904, - -0.991467, -0.766918, 0.62936, 0.964863, -0.857313, -0.0870588, 0.835937, 0.999409, 0.999204, 0.997886, - -0.999555, -0.592204, 0.971622, 0.798724, -0.568013, 0.283743, 0.828658, -0.549155, 0.834866, -0.133557, - 0.920764, 0.999356, 0.694179, -0.30478, 0.427957, 0.281501, 0.429332, -0.936185, 0.347986, 0.950708, - -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, - -0.940115, -0.985955, 0.544464, 0.998682, -0.969063, -0.18267, 0.237068, 0.997719, -0.0337554, 0.905842, - -0.878285, 0.309217, -0.0181193, 0.525607, 0.973771, 0.999497, -0.995735, 0.998789, 0.789885, 0.999584, - -0.736026, -0.435883, -0.953494, 0.903303, -0.417712, 0.997552, -0.981539, 0.869809, 0.98394, 0.991402, - -0.988794, 0.999331, -0.158609, 0.780733, -0.969231, 0.909109, 0.999747, -0.381524, 0.972722, 0.994431, - 0.630485, 0.472457, 0.995772, 0.91051, 0.911919, -0.941698, 0.954069, -0.988044, 0.992782, -0.139916, - -0.566348, 0.763459, -0.0718403, -0.72653, 0.979029, -0.995935, 0.999778, -0.738847, 0.210184, -0.737883, - 0.988825, -0.816843, 0.0513971, -0.839016, 0.988178, -0.992621, 0.848743, -0.998577, -0.929295, -0.919254, - -0.43992, 0.93494, -0.647745, -0.780525, 0.918286, 0.992679, 0.912136, 0.383811, -0.994623, -0.820734, - 0.775965, 0.433662, -0.926421, 0.989989, -0.476612, -0.854611, 0.473324, 0.263526, 0.410454, -0.995444, - -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, - -0.539351, 0.163227, 0.960576, -0.520992, -0.779952, -0.939853, -0.248751, -0.933185, 0.96781, 0.998035, - -0.748558, -0.422557, 0.652144, 0.289789, 0.942327, 0.989907, -0.541705, -0.967179, -0.992064, -0.679435, - 0.987373, 0.88219, -0.990581, 0.966343, 0.149118, 0.900446, 0.967235, 0.996815, -0.959944, 0.950417, - -0.998807, 0.981472, -0.715279, 0.854894, -0.575615, -0.996191, 0.938588, 0.99962, 0.997776, 0.996625, - -0.993116, -0.974635, 0.797837, 0.757842, 0.414458, -0.995602, 0.997473, -0.928389, 0.585003, 0.685336, - 0.35296, 0.999335, 0.815556, -0.978755, 0.977322, 0.862941, 0.844783, -0.999172, -0.737575, 0.868368, - 0.850968, -0.355691, -0.477411, 0.670716, 0.999938, -0.985769, 0.753579, -0.861071, -0.947635, -0.441339, - -0.636707, 0.958056, -0.917965, -0.888682, 0.887396, -0.469046, 0.878908, 0.343275, -0.953879, 0.983756, - -0.265801, -0.874482, 0.732147, 0.142205, 0.488677, 0.601925, 0.0526216, 0.707467, -0.793197, 0.99486, - -0.851224, -0.910939, 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, - 0.351675, 0.738722, 0.784989, -0.98241, 0.901682, 0.0865038, -0.847449, 0.575283, 0.329635, 0.999976, - -0.637486, -0.843608, 0.551505, -0.177101, -0.372926, 0.935283, -0.990545, -0.149183, -0.491596, 0.541562, - 0.996025, 0.472454, -0.845026, 0.991427, -0.334852, 0.999497, -0.0331139, 0.0179286, -0.837703, 0.512776, - -0.984419, 0.979792, -0.974191, 0.925265, -0.135773, 0.0270891, 0.996536, 0.999985, 0.979748, 0.998403, - -0.993161, -0.996728, 0.638566, 0.991593, -0.560185, -0.999493, 0.993987, 0.271173, 0.98406, 0.322271, - -0.334357, 0.997101, 0.943976, -0.999868, 0.880896, 0.709814, 0.982917, -0.995932, -0.474997, 0.995407, - 0.96453, -0.753175, 0.651881, 0.526273, 0.902097, 0.992134, 0.507577, -0.999034, -0.996382, -0.673348, - 0.819122, 0.779549, -0.999686, 0.974422, 0.880611, 0.6546, 0.6598, 0.96634, -0.920738, -0.418959, - -0.954179, 0.87176, -0.330375, 0.223247, -0.100151, -0.310826, 0.93752, 0.996072, 0.883849, 0.902299, - 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, 0.984892, 0.21006, - -0.707005, -0.612093, -0.996712, 0.953598, 0.999635, -0.958756, 0.196832, -0.816948, -0.822502, -0.969466, - 0.440709, 0.915352, -0.987622, -0.756492, 0.811622, -0.999958, 0.999982, -0.47131, -0.907012, 0.897248, - -0.954296, 0.86897, 0.92591, -0.945222, 0.996168, -0.983258, 0.999693, -0.883999, -0.800457, 0.18094, - 0.985958, 0.362557, -0.882676, -0.598648, 0.887364, -0.970348, 0.756076, -0.993787, -0.968946, -0.118565, - -0.636271, 0.998778, -0.0656388, -0.527903, 0.990153, 0.781603, 0.999725, -0.246065, -0.97279, 0.986471, - 0.984443, -0.70469, 0.701, 0.981588, 0.982162, -0.994913, 0.99988, 0.698499, -0.996202, 0.541067, - -0.990485, 0.844747, -0.222405, -0.209739, 0.91219, -0.989144, 0.999699, 0.724279, -0.885552, 0.988889, - 0.58029, 0.759885, 0.99201, 0.818603, 0.873055, -0.884289, 0.99798, -0.965469, -0.480964, 0.475605, - -0.781967, 0.99447, 0.863794, -0.861781, 0.891732, -0.547791, 0.97225, -0.00379388, 0.342407, 0.92741}, - std::vector{ - 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, 0.363935, -0.0884402, - -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, - -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, - -0.851224, -0.910939, 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, - 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, 0.984892, 0.21006}), + 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, + 0.363935, -0.0884402, -0.990447, 0.842608, 0.657827, -0.362801, 0.295894, 0.222178, + 0.972885, 0.957886, -0.376478, 0.504993, 0.965053, -0.229597, -0.946319, 0.999672, + 0.998961, -0.195694, 0.586567, -0.58356, 0.631116, 0.416555, -0.725706, 0.0420496, + -0.999482, -0.508284, 0.998452, -0.989286, 0.958206, 0.99888, -0.480881, 0.982364, + 0.346879, -0.687323, -0.160273, -0.0172902, -0.303112, -0.950921, 0.991803, -0.710375, + -0.933744, 0.991481, -0.659493, 0.754693, 0.754852, 0.236133, 0.989564, 0.999994, + 0.684852, -0.369004, -0.847966, 0.979346, 0.834702, 0.835757, -0.997023, 0.951418, + -0.477717, 0.981288, 0.927471, 0.999848, 0.734415, 0.999904, -0.991467, -0.766918, + 0.62936, 0.964863, -0.857313, -0.0870588, 0.835937, 0.999409, 0.999204, 0.997886, + -0.999555, -0.592204, 0.971622, 0.798724, -0.568013, 0.283743, 0.828658, -0.549155, + 0.834866, -0.133557, 0.920764, 0.999356, 0.694179, -0.30478, 0.427957, 0.281501, + 0.429332, -0.936185, 0.347986, 0.950708, -0.888573, 0.608715, -0.999921, 0.828499, + -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, -0.940115, -0.985955, + 0.544464, 0.998682, -0.969063, -0.18267, 0.237068, 0.997719, -0.0337554, 0.905842, + -0.878285, 0.309217, -0.0181193, 0.525607, 0.973771, 0.999497, -0.995735, 0.998789, + 0.789885, 0.999584, -0.736026, -0.435883, -0.953494, 0.903303, -0.417712, 0.997552, + -0.981539, 0.869809, 0.98394, 0.991402, -0.988794, 0.999331, -0.158609, 0.780733, + -0.969231, 0.909109, 0.999747, -0.381524, 0.972722, 0.994431, 0.630485, 0.472457, + 0.995772, 0.91051, 0.911919, -0.941698, 0.954069, -0.988044, 0.992782, -0.139916, + -0.566348, 0.763459, -0.0718403, -0.72653, 0.979029, -0.995935, 0.999778, -0.738847, + 0.210184, -0.737883, 0.988825, -0.816843, 0.0513971, -0.839016, 0.988178, -0.992621, + 0.848743, -0.998577, -0.929295, -0.919254, -0.43992, 0.93494, -0.647745, -0.780525, + 0.918286, 0.992679, 0.912136, 0.383811, -0.994623, -0.820734, 0.775965, 0.433662, + -0.926421, 0.989989, -0.476612, -0.854611, 0.473324, 0.263526, 0.410454, -0.995444, + -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, + 0.956929, 0.996744, -0.539351, 0.163227, 0.960576, -0.520992, -0.779952, -0.939853, + -0.248751, -0.933185, 0.96781, 0.998035, -0.748558, -0.422557, 0.652144, 0.289789, + 0.942327, 0.989907, -0.541705, -0.967179, -0.992064, -0.679435, 0.987373, 0.88219, + -0.990581, 0.966343, 0.149118, 0.900446, 0.967235, 0.996815, -0.959944, 0.950417, + -0.998807, 0.981472, -0.715279, 0.854894, -0.575615, -0.996191, 0.938588, 0.99962, + 0.997776, 0.996625, -0.993116, -0.974635, 0.797837, 0.757842, 0.414458, -0.995602, + 0.997473, -0.928389, 0.585003, 0.685336, 0.35296, 0.999335, 0.815556, -0.978755, + 0.977322, 0.862941, 0.844783, -0.999172, -0.737575, 0.868368, 0.850968, -0.355691, + -0.477411, 0.670716, 0.999938, -0.985769, 0.753579, -0.861071, -0.947635, -0.441339, + -0.636707, 0.958056, -0.917965, -0.888682, 0.887396, -0.469046, 0.878908, 0.343275, + -0.953879, 0.983756, -0.265801, -0.874482, 0.732147, 0.142205, 0.488677, 0.601925, + 0.0526216, 0.707467, -0.793197, 0.99486, -0.851224, -0.910939, 0.657066, 0.603613, + 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, 0.351675, 0.738722, + 0.784989, -0.98241, 0.901682, 0.0865038, -0.847449, 0.575283, 0.329635, 0.999976, + -0.637486, -0.843608, 0.551505, -0.177101, -0.372926, 0.935283, -0.990545, -0.149183, + -0.491596, 0.541562, 0.996025, 0.472454, -0.845026, 0.991427, -0.334852, 0.999497, + -0.0331139, 0.0179286, -0.837703, 0.512776, -0.984419, 0.979792, -0.974191, 0.925265, + -0.135773, 0.0270891, 0.996536, 0.999985, 0.979748, 0.998403, -0.993161, -0.996728, + 0.638566, 0.991593, -0.560185, -0.999493, 0.993987, 0.271173, 0.98406, 0.322271, + -0.334357, 0.997101, 0.943976, -0.999868, 0.880896, 0.709814, 0.982917, -0.995932, + -0.474997, 0.995407, 0.96453, -0.753175, 0.651881, 0.526273, 0.902097, 0.992134, + 0.507577, -0.999034, -0.996382, -0.673348, 0.819122, 0.779549, -0.999686, 0.974422, + 0.880611, 0.6546, 0.6598, 0.96634, -0.920738, -0.418959, -0.954179, 0.87176, + -0.330375, 0.223247, -0.100151, -0.310826, 0.93752, 0.996072, 0.883849, 0.902299, + 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, + 0.984892, 0.21006, -0.707005, -0.612093, -0.996712, 0.953598, 0.999635, -0.958756, + 0.196832, -0.816948, -0.822502, -0.969466, 0.440709, 0.915352, -0.987622, -0.756492, + 0.811622, -0.999958, 0.999982, -0.47131, -0.907012, 0.897248, -0.954296, 0.86897, + 0.92591, -0.945222, 0.996168, -0.983258, 0.999693, -0.883999, -0.800457, 0.18094, + 0.985958, 0.362557, -0.882676, -0.598648, 0.887364, -0.970348, 0.756076, -0.993787, + -0.968946, -0.118565, -0.636271, 0.998778, -0.0656388, -0.527903, 0.990153, 0.781603, + 0.999725, -0.246065, -0.97279, 0.986471, 0.984443, -0.70469, 0.701, 0.981588, + 0.982162, -0.994913, 0.99988, 0.698499, -0.996202, 0.541067, -0.990485, 0.844747, + -0.222405, -0.209739, 0.91219, -0.989144, 0.999699, 0.724279, -0.885552, 0.988889, + 0.58029, 0.759885, 0.99201, 0.818603, 0.873055, -0.884289, 0.99798, -0.965469, + -0.480964, 0.475605, -0.781967, 0.99447, 0.863794, -0.861781, 0.891732, -0.547791, + 0.97225, -0.00379388, 0.342407, 0.92741}, + std::vector{0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, + 0.363935, -0.0884402, -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, + -0.976568, 0.999748, 0.284666, 0.983777, -0.979617, 0.971752, -0.698165, -0.513943, + 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, -0.851224, -0.910939, + 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, + 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, + 0.984892, 0.21006}), RNNSequenceParams( - 5, 10, 10, 5, - 0.f, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.f, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, 0.847476, -0.252158, - -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, - -0.899024, 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, - -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, - -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, 0.386911, - 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, -0.124885, 0.475875, -0.248479, -0.0135011, - -0.971921, -0.501126, -0.30573, 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, - 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, - 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, - -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, -0.298536, 0.522286, - -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, - -0.61579, 0.675731, -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, - 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, 0.159798, -0.243754, - 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, - -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, - 0.406964, 0.772353, 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, - -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, 0.194028, 0.476884, - -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, - 0.452785, -0.869765, 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, - -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, - -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, - -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, -0.59019, -0.0682369, 0.526142, - 0.0647325, 0.102044, -0.529739, -0.448041, -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, - -0.662836, -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, - -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, -0.609801, 1}, - std::vector{ - -1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, -0.132298, 0.148535, - -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, 0.350663, -0.0375085, 0.954534, -0.57807, - -0.573083, 0.887977, -0.347673, 0.972259, -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, - 0.539075, -0.983636, -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, - -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, 0.482923, 0.347901, - 0.311816, -0.576313, 0.179154, 0.567313, -0.00876484, -0.798421, 0.757543, 0.233467, 0.37899, 0.943278, - -0.15769, -0.857001, -0.619298, -0.547625, -0.900258, -0.644746, 0.114178, 0.915776, 0.898331, -0.0161833, - -0.722535, -0.480636, 0.149871, 0.971252, -0.787511, -0.0598378, -0.906727, -0.441301, 0.199715, -0.976172, - -0.990469, -0.967287, -0.187634, -0.64864, -0.797272, -0.144963, 0.354636, 0.0431377, -0.34536, 0.0950868, - 0.433708, -0.190774, 0.144971, 0.796839, -0.583502, 0.698024, -0.569746, -0.685824, -0.306595, 1}, + -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, + 0.847476, -0.252158, -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, + 0.254189, 0.81585, 0.112795, 0.679838, -0.899024, 0.61247, 0.861631, -0.271941, + 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, -0.272586, 0.589941, + 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, + -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, + 0.115046, 0.386911, 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, + -0.124885, 0.475875, -0.248479, -0.0135011, -0.971921, -0.501126, -0.30573, 0.593373, + 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, 0.855695, -0.179938, + -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, + 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, + 0.61021, -0.869385, -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, + -0.780665, -0.370868, -0.298536, 0.522286, -0.802298, 0.862921, -0.347842, -0.146729, + -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, -0.61579, 0.675731, + -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, + 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, + 0.159798, -0.243754, 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, + -0.75666, 0.287393, -0.108071, -0.84735, -0.694862, -0.840984, 0.758743, -0.677052, + 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, 0.406964, 0.772353, + 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, + -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, + 0.194028, 0.476884, -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, + -0.394025, 0.218032, -0.664486, 0.716852, 0.452785, -0.869765, 0.0361971, 0.190971, + -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, -0.558575, -0.0518135, + 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, + -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, + -0.0427639, -0.575115, -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, + 0.840711, -0.59019, -0.0682369, 0.526142, 0.0647325, 0.102044, -0.529739, -0.448041, + -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, -0.662836, -0.397345, + -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, + -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, + -0.609801, 1}, + std::vector{-1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, + -0.132298, 0.148535, -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, + 0.350663, -0.0375085, 0.954534, -0.57807, -0.573083, 0.887977, -0.347673, 0.972259, + -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, 0.539075, -0.983636, + -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, + -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, + 0.482923, 0.347901, 0.311816, -0.576313, 0.179154, 0.567313, -0.00876484, -0.798421, + 0.757543, 0.233467, 0.37899, 0.943278, -0.15769, -0.857001, -0.619298, -0.547625, + -0.900258, -0.644746, 0.114178, 0.915776, 0.898331, -0.0161833, -0.722535, -0.480636, + 0.149871, 0.971252, -0.787511, -0.0598378, -0.906727, -0.441301, 0.199715, -0.976172, + -0.990469, -0.967287, -0.187634, -0.64864, -0.797272, -0.144963, 0.354636, 0.0431377, + -0.34536, 0.0950868, 0.433708, -0.190774, 0.144971, 0.796839, -0.583502, 0.698024, + -0.569746, -0.685824, -0.306595, 1}, std::vector{5, 5, 5, 5, 5}, std::vector{ - -1, -0.926344, -0.582316, 0.0865198, 0.297413, 0.322063, 0.843462, -0.0454604, -0.984223, 0.775538, - -0.435946, 0.241916, -0.0617699, 0.0814942, -0.132106, -0.151756, -0.11959, 0.179991, -0.875631, 0.568118, - -0.389758, -0.479348, -0.964229, -0.356113, 0.542067, 0.689303, 0.142807, -0.538379, -0.0514927, 0.785763, - -0.0770423, -0.456633, -0.215616, -0.952389, 0.414427, 0.843987, -0.212933, 0.19066, -0.660616, 0.761736, - 0.919935, -0.312803, -0.785377, -0.540347, -0.798652, -0.686071, 0.213151, -0.449002, 0.824935, -0.828034, - -0.299549, -0.761415, 0.438801, 0.482191, -0.280699, -0.859561, 0.550405, -0.555281, -0.805135, -0.0118858, - 0.480064, 0.771889, -0.699574, -0.977754, 0.446223, -0.160575, -0.895838, 0.119659, -0.72875, -0.0616542, - -0.181988, 0.710806, -0.196843, -0.640025, 0.57054, -0.616873, 0.862449, 0.408087, 0.100587, -0.201909, - 0.149038, 0.032842, 0.934702, 0.57581, -0.99622, 0.437858, -0.268711, 0.224117, -0.364069, -0.860503, - 0.890393, 0.295326, -0.917327, 0.856288, 0.893708, 0.39705, -0.619794, 0.00161488, -0.168908, -0.254165, - -0.184681, 0.537402, -0.481641, 0.87129, -0.280677, 0.854046, 0.287546, -0.0278301, -0.3463, -0.242125, - -0.739907, -0.686197, 0.853342, 0.0498392, 0.559902, -0.578234, -0.25999, 0.582969, 0.200952, 0.675112, - -0.962187, 0.0809053, 0.952629, -0.625565, -0.549088, -0.11634, -0.576362, -0.381605, -0.872919, -0.0600615, - 0.765514, 0.670759, 0.802974, 0.460444, 0.999155, -0.298183, -0.385252, -0.275577, 0.953655, 0.264913, - -0.786946, 0.711652, 0.854234, 0.380515, 0.91512, 0.477837, 0.437375, 0.853442, -0.268497, 0.677688, - 0.863327, -0.3444, -0.161007, 0.461606, 0.0772189, 0.117377, 0.163221, 0.0239453, 0.019685, 0.273669, - -0.282091, 0.365973, 0.427208, 0.574901, 0.309154, 0.329836, 0.541685, 0.0837654, -0.0486602, 0.0510945, - -0.434022, -0.526059, -0.855641, -0.485477, -0.205111, 0.505822, 0.123943, -0.635588, -0.936965, -0.204293, - -0.967828, 0.891365, 0.498722, 0.482032, 0.102506, -0.264663, -0.218876, 0.839871, -0.750406, 0.585929, - -0.385895, -0.660037, -0.672461, -0.0446399, 0.428186, 0.716547, 0.855249, -0.889884, 0.570145, 1}, - std::vector{ - -1, -0.253945, 0.73288, -0.966727, 0.0901037, 0.837826, -0.893587, 0.622855, -0.0867499, 0.479825, - -0.261255, 0.26512, 0.0826726, -0.505826, -0.390737, 0.684796, 0.86693, 0.464841, 0.687843, -0.891697, - -0.665494, 0.970505, 0.364571, -0.534104, 0.44091, -0.962463, 0.8284, 0.800076, 0.95721, -0.634602, - -0.504336, 0.905075, 0.23103, -0.736274, -0.814191, 0.956706, 0.112823, 0.588837, -0.831731, 0.581655, - 0.914972, -0.992799, -0.282463, -0.544414, 0.847968, -0.165939, -0.726117, -0.238597, -0.974254, -0.810775, - -0.532935, -0.643432, -0.940879, 0.0380719, 0.631952, 0.183682, 0.752789, -0.0175759, -0.61915, -0.185426, - 0.398154, -0.918035, -0.338854, 0.809874, 0.110495, -0.230016, -0.610258, 0.498212, 0.39098, -0.567554, - -0.534496, -0.638824, 0.225616, -0.553646, -0.707093, 0.581841, -0.96963, 0.0352891, -0.5563, -0.228776, - 0.9294, -0.7047, 0.928105, -0.403176, 0.278741, 0.46796, 0.188304, 0.253805, 0.182099, -0.0110354, - -0.858687, 0.260241, 0.220721, 0.665172, 0.661437, 0.602803, 0.306672, -0.84912, -0.222462, -0.541647, - -0.962065, -0.805781, 0.120177, -0.0642701, -0.544034, 0.827055, -0.0296891, 0.215652, 0.517538, 0.522539, - -0.0204405, -0.992085, -0.156433, 0.689398, -0.0805059, 0.425146, 0.0442416, -0.395637, -0.247687, 0.59433, - 0.131145, 0.286784, 0.407671, -0.169255, 0.555561, 0.953183, 0.219984, -0.705963, 0.92809, -0.354063, - -0.626351, 0.215441, 0.53867, 0.552067, -0.121693, 0.383347, -0.0938885, 0.534377, 0.684564, -0.286056, - -0.939983, 0.321623, -0.467205, 0.683613, -0.586294, -0.398608, -0.808, -0.274275, -0.381228, 0.426617, - 0.845405, 0.940272, -0.866575, -0.818976, 0.785773, 0.176847, -0.0428235, 0.357473, 0.615433, 0.700104, - 0.685618, -0.0173497, 0.496372, 0.856828, -0.548016, 0.813342, 0.711675, 0.303949, -0.496123, -0.851943, - 0.87302, -0.386388, -0.121659, -0.941249, -0.22728, 0.754366, -0.871963, 0.860706, -0.0306181, 0.781978, - 0.808575, -0.552888, 0.934217, -0.445505, -0.359024, 0.348107, -0.387147, 0.765867, -0.500837, -0.618321, - -0.208389, -0.994924, -0.411653, -0.142604, -0.019078, 0.386257, -0.86829, -0.576939, 0.69359, 1}, - std::vector{ - -1, -0.870588, -0.87619, 0.79389, 0.774298, 0.116866, -0.731208, 0.043552, 0.0202228, 0.161924, - -0.371015, 0.77565, 0.2867, -0.00586168, -0.366594, -0.871108, 0.111998, 0.897703, 0.633766, 1}, - std::vector{ - -0.966396, -0.986771, 0.926876, -0.722396, 0.675557, 0.602292, -0.498172, 0.790898, -0.999677, 0.832672, - 0.999863, -0.731074, -0.551715, 0.999514, 0.758388, -0.721206, -0.411589, 0.998558, 0.111818, 0.0592748, - -0.992179, -0.985487, -0.963537, -0.995447, 0.954873, 0.865383, 0.871542, 0.391732, -0.149309, -0.997971, - 0.813067, 0.939383, 0.294972, 0.783985, -0.144818, 0.992986, -0.951086, 0.953676, -0.221013, 0.958121, - 0.959354, -0.881273, -0.970651, 0.995653, -0.821644, -0.835365, -0.950953, 0.213407, -0.00109488, -0.896989, - -0.965055, -0.78096, -0.170206, -0.481907, -0.538034, 0.641884, -0.884119, 0.982638, 0.406508, 0.988232, - 0.831903, 0.757781, 0.76693, -0.424041, 0.991776, -0.955123, -0.181495, 0.405243, 0.597223, 0.9837, - -0.996655, 0.966301, 0.972842, 0.695827, 0.91464, 0.839867, -0.491131, -0.691128, -0.621549, 0.960544, - 0.890169, 0.963342, -0.504563, 0.827856, 0.99986, -0.683868, -0.0510934, -0.378609, 0.960018, 0.997703, - -0.862139, 0.323698, 0.639983, -0.511134, 0.319546, 0.264711, -0.877705, -0.831202, -0.380162, 0.747056, - -0.823153, -0.585965, -0.996211, 0.980581, 0.791137, 0.95481, -0.657369, 0.344983, -0.616705, 0.618986, - 0.989789, -0.945455, -0.991626, 0.756961, -0.335582, 0.995072, -0.718516, 0.969593, -0.997331, 0.835764, - -0.876628, -0.997024, -0.999998, -0.0175216, 0.999809, 0.923745, 0.267774, 0.972511, 0.550053, -0.846703, - -0.989225, -0.0441148, -0.684613, -0.937905, 0.999519, 0.987282, 0.987515, 0.581755, -0.316902, 0.982837, - 0.970184, 0.645835, 0.437802, 0.999792, -0.395441, 0.998468, -0.983758, -0.861604, -0.102437, -0.726916, - -0.878295, 0.961768, 0.948726, 0.223961, -0.142666, 0.986927, -0.997041, 0.591299, -0.992189, 0.781923, - -0.991835, 0.994752, -0.945418, -0.196264, 0.977303, 0.988259, -0.601266, -0.271539, 0.17424, 0.953503, - 0.53872, 0.96462, -0.99991, 0.522511, 0.806427, -0.914626, 0.333313, 0.675464, 0.475059, 0.941286, - -0.238261, -0.971927, -0.828532, 0.995514, -0.860047, -0.253, -0.998519, 0.975192, -0.575898, 0.160909, - -0.867538, 0.990647, 0.957296, -0.981018, -0.895147, -0.719873, -0.98971, 0.997134, 0.620214, 0.997141, - -0.609738, 0.475016, 0.403754, 0.606247, -0.309416, 0.886356, -0.510721, -0.75893, 0.176028, 0.097955, - 0.348629, -0.866701, -0.835186, 0.564923, 0.062626, -0.871556, -0.958889, 0.98606, -0.973364, 0.965377, - -0.998828, -0.999759, -0.999971, -0.626266, 0.997697, 0.311617, 0.955397, 0.84038, 0.534363, -0.979817, - -0.994872, 0.90103, -0.789867, -0.946177, 0.954561, 0.998517, 0.797661, 0.0702938, 0.91554, 0.776407, - 0.995062, 0.930073, 0.972781, 0.998503, -0.994274, 0.999141, -0.99872, -0.0965485, -0.985132, -0.7469, - 0.81997, 0.78163, 0.667184, -0.991648, 0.876578, -0.99955, -0.697148, 0.550283, -0.274609, 0.963469, - -0.695669, -0.803776, 0.198897, 0.824321, 0.617847, -0.993569, 0.211401, -0.99829, -0.93661, 0.871181, - -0.831197, 0.794105, 0.774464, 0.994574, 0.809722, -0.998086, 0.111103, -0.998328, 0.570258, -0.785505, - -0.753277, -0.303051, 0.678275, 0.985752, 0.37114, -0.264355, -0.985409, -0.780116, 0.224394, -0.993415, - -0.979806, 0.999698, 0.763876, -0.295216, 0.407618, -0.912578, -0.0110002, 0.737138, 0.474711, 0.988256, - -0.998907, -0.0574032, -0.904585, -0.395231, 0.425855, -0.839491, 0.865367, 0.862032, 0.0869983, -0.997064, - 0.0553182, 0.530786, 0.99843, 0.484269, -0.698659, 0.996345, -0.992878, -0.816039, -0.895165, -0.125273, - 0.619797, -0.311227, -0.999652, 0.996676, -0.972845, -0.906996, -0.982145, 0.461568, 0.979399, 0.778045, - -0.97935, -0.986793, -0.990768, -0.465094, -0.263282, -0.607552, 0.971551, -0.896471, 0.320939, -0.93909, - -0.994494, -0.237455, -0.100728, -0.975005, -0.0117797, 0.995582, -0.986234, -0.899297, 0.439427, 0.911726, - 0.203506, 0.993091, 0.951738, 0.999095, 0.841566, -0.99347, 0.350599, -0.999231, -0.433626, -0.406675, - -0.96008, 0.335784, 0.741311, 0.77931, -0.902052, 0.426213, 0.978833, -0.720206, 0.842681, 0.793444, - 0.961349, 0.095775, 0.990917, 0.162366, 0.988417, -0.997433, 0.971865, 0.347841, 0.999839, -0.671945, - -0.989461, 0.60871, 0.876491, -0.919018, -0.954406, 0.834608, -0.410929, -0.529981, -0.925456, -0.914565, - 0.943016, 0.886728, 0.71595, 0.984002, 0.975321, -0.999722, 0.963597, -0.667433, 0.533139, 0.971698, - -0.977911, -0.189758, -0.998167, 0.570572, 0.819584, 0.819533, -0.15264, 0.924569, 0.874921, -0.774673, - 0.829862, 0.826993, 0.0484993, -0.745097, 0.170151, 0.999774, -0.934382, -0.591278, -0.185407, -0.771122, - -0.762141, -0.048014, -0.946054, 0.955278, 0.99961, -0.731922, 0.138094, -0.0371518, 0.817227, 0.449736, - -0.571427, -0.905313, 0.923767, -0.388737, -0.972294, 0.647981, -0.360347, -0.944748, -0.993917, 0.537831, - 0.994776, -0.484682, -0.990703, 0.999149, 0.779736, 0.0102033, -0.709741, 0.998436, -0.511018, 0.152785, - -0.937848, -0.687825, 0.905885, 0.312886, -0.950348, 0.917466, -0.957475, 0.399452, 0.226108, -0.996484, - 0.38622, 0.99715, -0.317704, -0.497559, -0.118911, -0.961001, 0.965842, 0.999756, 0.999437, 0.996626, - 0.982077, -0.793749, 0.977901, 0.469991, -0.972339, 0.344807, -0.994449, 0.999891, -0.566665, 0.985128, - -0.950463, 0.389667, -0.171013, -0.494231, -0.288177, 0.989171, -0.806886, 0.967839, 0.956819, 0.853921, - 0.78097, 0.925808, 0.681741, -0.934712, 0.642082, -0.933539, 0.481516, 0.997935, 0.805567, 0.999646}, - std::vector{ - 0.959354, -0.881273, -0.970651, 0.995653, -0.821644, -0.835365, -0.950953, 0.213407, -0.00109488, -0.896989, - -0.965055, -0.78096, -0.170206, -0.481907, -0.538034, 0.641884, -0.884119, 0.982638, 0.406508, 0.988232, - 0.970184, 0.645835, 0.437802, 0.999792, -0.395441, 0.998468, -0.983758, -0.861604, -0.102437, -0.726916, - -0.878295, 0.961768, 0.948726, 0.223961, -0.142666, 0.986927, -0.997041, 0.591299, -0.992189, 0.781923, - 0.995062, 0.930073, 0.972781, 0.998503, -0.994274, 0.999141, -0.99872, -0.0965485, -0.985132, -0.7469, - 0.81997, 0.78163, 0.667184, -0.991648, 0.876578, -0.99955, -0.697148, 0.550283, -0.274609, 0.963469, - -0.994494, -0.237455, -0.100728, -0.975005, -0.0117797, 0.995582, -0.986234, -0.899297, 0.439427, 0.911726, - 0.203506, 0.993091, 0.951738, 0.999095, 0.841566, -0.99347, 0.350599, -0.999231, -0.433626, -0.406675, - 0.994776, -0.484682, -0.990703, 0.999149, 0.779736, 0.0102033, -0.709741, 0.998436, -0.511018, 0.152785, - -0.937848, -0.687825, 0.905885, 0.312886, -0.950348, 0.917466, -0.957475, 0.399452, 0.226108, -0.996484}), + -1, -0.926344, -0.582316, 0.0865198, 0.297413, 0.322063, 0.843462, -0.0454604, + -0.984223, 0.775538, -0.435946, 0.241916, -0.0617699, 0.0814942, -0.132106, -0.151756, + -0.11959, 0.179991, -0.875631, 0.568118, -0.389758, -0.479348, -0.964229, -0.356113, + 0.542067, 0.689303, 0.142807, -0.538379, -0.0514927, 0.785763, -0.0770423, -0.456633, + -0.215616, -0.952389, 0.414427, 0.843987, -0.212933, 0.19066, -0.660616, 0.761736, + 0.919935, -0.312803, -0.785377, -0.540347, -0.798652, -0.686071, 0.213151, -0.449002, + 0.824935, -0.828034, -0.299549, -0.761415, 0.438801, 0.482191, -0.280699, -0.859561, + 0.550405, -0.555281, -0.805135, -0.0118858, 0.480064, 0.771889, -0.699574, -0.977754, + 0.446223, -0.160575, -0.895838, 0.119659, -0.72875, -0.0616542, -0.181988, 0.710806, + -0.196843, -0.640025, 0.57054, -0.616873, 0.862449, 0.408087, 0.100587, -0.201909, + 0.149038, 0.032842, 0.934702, 0.57581, -0.99622, 0.437858, -0.268711, 0.224117, + -0.364069, -0.860503, 0.890393, 0.295326, -0.917327, 0.856288, 0.893708, 0.39705, + -0.619794, 0.00161488, -0.168908, -0.254165, -0.184681, 0.537402, -0.481641, 0.87129, + -0.280677, 0.854046, 0.287546, -0.0278301, -0.3463, -0.242125, -0.739907, -0.686197, + 0.853342, 0.0498392, 0.559902, -0.578234, -0.25999, 0.582969, 0.200952, 0.675112, + -0.962187, 0.0809053, 0.952629, -0.625565, -0.549088, -0.11634, -0.576362, -0.381605, + -0.872919, -0.0600615, 0.765514, 0.670759, 0.802974, 0.460444, 0.999155, -0.298183, + -0.385252, -0.275577, 0.953655, 0.264913, -0.786946, 0.711652, 0.854234, 0.380515, + 0.91512, 0.477837, 0.437375, 0.853442, -0.268497, 0.677688, 0.863327, -0.3444, + -0.161007, 0.461606, 0.0772189, 0.117377, 0.163221, 0.0239453, 0.019685, 0.273669, + -0.282091, 0.365973, 0.427208, 0.574901, 0.309154, 0.329836, 0.541685, 0.0837654, + -0.0486602, 0.0510945, -0.434022, -0.526059, -0.855641, -0.485477, -0.205111, 0.505822, + 0.123943, -0.635588, -0.936965, -0.204293, -0.967828, 0.891365, 0.498722, 0.482032, + 0.102506, -0.264663, -0.218876, 0.839871, -0.750406, 0.585929, -0.385895, -0.660037, + -0.672461, -0.0446399, 0.428186, 0.716547, 0.855249, -0.889884, 0.570145, 1}, + std::vector{-1, -0.253945, 0.73288, -0.966727, 0.0901037, 0.837826, -0.893587, 0.622855, + -0.0867499, 0.479825, -0.261255, 0.26512, 0.0826726, -0.505826, -0.390737, 0.684796, + 0.86693, 0.464841, 0.687843, -0.891697, -0.665494, 0.970505, 0.364571, -0.534104, + 0.44091, -0.962463, 0.8284, 0.800076, 0.95721, -0.634602, -0.504336, 0.905075, + 0.23103, -0.736274, -0.814191, 0.956706, 0.112823, 0.588837, -0.831731, 0.581655, + 0.914972, -0.992799, -0.282463, -0.544414, 0.847968, -0.165939, -0.726117, -0.238597, + -0.974254, -0.810775, -0.532935, -0.643432, -0.940879, 0.0380719, 0.631952, 0.183682, + 0.752789, -0.0175759, -0.61915, -0.185426, 0.398154, -0.918035, -0.338854, 0.809874, + 0.110495, -0.230016, -0.610258, 0.498212, 0.39098, -0.567554, -0.534496, -0.638824, + 0.225616, -0.553646, -0.707093, 0.581841, -0.96963, 0.0352891, -0.5563, -0.228776, + 0.9294, -0.7047, 0.928105, -0.403176, 0.278741, 0.46796, 0.188304, 0.253805, + 0.182099, -0.0110354, -0.858687, 0.260241, 0.220721, 0.665172, 0.661437, 0.602803, + 0.306672, -0.84912, -0.222462, -0.541647, -0.962065, -0.805781, 0.120177, -0.0642701, + -0.544034, 0.827055, -0.0296891, 0.215652, 0.517538, 0.522539, -0.0204405, -0.992085, + -0.156433, 0.689398, -0.0805059, 0.425146, 0.0442416, -0.395637, -0.247687, 0.59433, + 0.131145, 0.286784, 0.407671, -0.169255, 0.555561, 0.953183, 0.219984, -0.705963, + 0.92809, -0.354063, -0.626351, 0.215441, 0.53867, 0.552067, -0.121693, 0.383347, + -0.0938885, 0.534377, 0.684564, -0.286056, -0.939983, 0.321623, -0.467205, 0.683613, + -0.586294, -0.398608, -0.808, -0.274275, -0.381228, 0.426617, 0.845405, 0.940272, + -0.866575, -0.818976, 0.785773, 0.176847, -0.0428235, 0.357473, 0.615433, 0.700104, + 0.685618, -0.0173497, 0.496372, 0.856828, -0.548016, 0.813342, 0.711675, 0.303949, + -0.496123, -0.851943, 0.87302, -0.386388, -0.121659, -0.941249, -0.22728, 0.754366, + -0.871963, 0.860706, -0.0306181, 0.781978, 0.808575, -0.552888, 0.934217, -0.445505, + -0.359024, 0.348107, -0.387147, 0.765867, -0.500837, -0.618321, -0.208389, -0.994924, + -0.411653, -0.142604, -0.019078, 0.386257, -0.86829, -0.576939, 0.69359, 1}, + std::vector{-1, -0.870588, -0.87619, 0.79389, 0.774298, 0.116866, -0.731208, + 0.043552, 0.0202228, 0.161924, -0.371015, 0.77565, 0.2867, -0.00586168, + -0.366594, -0.871108, 0.111998, 0.897703, 0.633766, 1}, + std::vector{-0.966396, -0.986771, 0.926876, -0.722396, 0.675557, 0.602292, -0.498172, 0.790898, + -0.999677, 0.832672, 0.999863, -0.731074, -0.551715, 0.999514, 0.758388, -0.721206, + -0.411589, 0.998558, 0.111818, 0.0592748, -0.992179, -0.985487, -0.963537, -0.995447, + 0.954873, 0.865383, 0.871542, 0.391732, -0.149309, -0.997971, 0.813067, 0.939383, + 0.294972, 0.783985, -0.144818, 0.992986, -0.951086, 0.953676, -0.221013, 0.958121, + 0.959354, -0.881273, -0.970651, 0.995653, -0.821644, -0.835365, -0.950953, 0.213407, + -0.00109488, -0.896989, -0.965055, -0.78096, -0.170206, -0.481907, -0.538034, 0.641884, + -0.884119, 0.982638, 0.406508, 0.988232, 0.831903, 0.757781, 0.76693, -0.424041, + 0.991776, -0.955123, -0.181495, 0.405243, 0.597223, 0.9837, -0.996655, 0.966301, + 0.972842, 0.695827, 0.91464, 0.839867, -0.491131, -0.691128, -0.621549, 0.960544, + 0.890169, 0.963342, -0.504563, 0.827856, 0.99986, -0.683868, -0.0510934, -0.378609, + 0.960018, 0.997703, -0.862139, 0.323698, 0.639983, -0.511134, 0.319546, 0.264711, + -0.877705, -0.831202, -0.380162, 0.747056, -0.823153, -0.585965, -0.996211, 0.980581, + 0.791137, 0.95481, -0.657369, 0.344983, -0.616705, 0.618986, 0.989789, -0.945455, + -0.991626, 0.756961, -0.335582, 0.995072, -0.718516, 0.969593, -0.997331, 0.835764, + -0.876628, -0.997024, -0.999998, -0.0175216, 0.999809, 0.923745, 0.267774, 0.972511, + 0.550053, -0.846703, -0.989225, -0.0441148, -0.684613, -0.937905, 0.999519, 0.987282, + 0.987515, 0.581755, -0.316902, 0.982837, 0.970184, 0.645835, 0.437802, 0.999792, + -0.395441, 0.998468, -0.983758, -0.861604, -0.102437, -0.726916, -0.878295, 0.961768, + 0.948726, 0.223961, -0.142666, 0.986927, -0.997041, 0.591299, -0.992189, 0.781923, + -0.991835, 0.994752, -0.945418, -0.196264, 0.977303, 0.988259, -0.601266, -0.271539, + 0.17424, 0.953503, 0.53872, 0.96462, -0.99991, 0.522511, 0.806427, -0.914626, + 0.333313, 0.675464, 0.475059, 0.941286, -0.238261, -0.971927, -0.828532, 0.995514, + -0.860047, -0.253, -0.998519, 0.975192, -0.575898, 0.160909, -0.867538, 0.990647, + 0.957296, -0.981018, -0.895147, -0.719873, -0.98971, 0.997134, 0.620214, 0.997141, + -0.609738, 0.475016, 0.403754, 0.606247, -0.309416, 0.886356, -0.510721, -0.75893, + 0.176028, 0.097955, 0.348629, -0.866701, -0.835186, 0.564923, 0.062626, -0.871556, + -0.958889, 0.98606, -0.973364, 0.965377, -0.998828, -0.999759, -0.999971, -0.626266, + 0.997697, 0.311617, 0.955397, 0.84038, 0.534363, -0.979817, -0.994872, 0.90103, + -0.789867, -0.946177, 0.954561, 0.998517, 0.797661, 0.0702938, 0.91554, 0.776407, + 0.995062, 0.930073, 0.972781, 0.998503, -0.994274, 0.999141, -0.99872, -0.0965485, + -0.985132, -0.7469, 0.81997, 0.78163, 0.667184, -0.991648, 0.876578, -0.99955, + -0.697148, 0.550283, -0.274609, 0.963469, -0.695669, -0.803776, 0.198897, 0.824321, + 0.617847, -0.993569, 0.211401, -0.99829, -0.93661, 0.871181, -0.831197, 0.794105, + 0.774464, 0.994574, 0.809722, -0.998086, 0.111103, -0.998328, 0.570258, -0.785505, + -0.753277, -0.303051, 0.678275, 0.985752, 0.37114, -0.264355, -0.985409, -0.780116, + 0.224394, -0.993415, -0.979806, 0.999698, 0.763876, -0.295216, 0.407618, -0.912578, + -0.0110002, 0.737138, 0.474711, 0.988256, -0.998907, -0.0574032, -0.904585, -0.395231, + 0.425855, -0.839491, 0.865367, 0.862032, 0.0869983, -0.997064, 0.0553182, 0.530786, + 0.99843, 0.484269, -0.698659, 0.996345, -0.992878, -0.816039, -0.895165, -0.125273, + 0.619797, -0.311227, -0.999652, 0.996676, -0.972845, -0.906996, -0.982145, 0.461568, + 0.979399, 0.778045, -0.97935, -0.986793, -0.990768, -0.465094, -0.263282, -0.607552, + 0.971551, -0.896471, 0.320939, -0.93909, -0.994494, -0.237455, -0.100728, -0.975005, + -0.0117797, 0.995582, -0.986234, -0.899297, 0.439427, 0.911726, 0.203506, 0.993091, + 0.951738, 0.999095, 0.841566, -0.99347, 0.350599, -0.999231, -0.433626, -0.406675, + -0.96008, 0.335784, 0.741311, 0.77931, -0.902052, 0.426213, 0.978833, -0.720206, + 0.842681, 0.793444, 0.961349, 0.095775, 0.990917, 0.162366, 0.988417, -0.997433, + 0.971865, 0.347841, 0.999839, -0.671945, -0.989461, 0.60871, 0.876491, -0.919018, + -0.954406, 0.834608, -0.410929, -0.529981, -0.925456, -0.914565, 0.943016, 0.886728, + 0.71595, 0.984002, 0.975321, -0.999722, 0.963597, -0.667433, 0.533139, 0.971698, + -0.977911, -0.189758, -0.998167, 0.570572, 0.819584, 0.819533, -0.15264, 0.924569, + 0.874921, -0.774673, 0.829862, 0.826993, 0.0484993, -0.745097, 0.170151, 0.999774, + -0.934382, -0.591278, -0.185407, -0.771122, -0.762141, -0.048014, -0.946054, 0.955278, + 0.99961, -0.731922, 0.138094, -0.0371518, 0.817227, 0.449736, -0.571427, -0.905313, + 0.923767, -0.388737, -0.972294, 0.647981, -0.360347, -0.944748, -0.993917, 0.537831, + 0.994776, -0.484682, -0.990703, 0.999149, 0.779736, 0.0102033, -0.709741, 0.998436, + -0.511018, 0.152785, -0.937848, -0.687825, 0.905885, 0.312886, -0.950348, 0.917466, + -0.957475, 0.399452, 0.226108, -0.996484, 0.38622, 0.99715, -0.317704, -0.497559, + -0.118911, -0.961001, 0.965842, 0.999756, 0.999437, 0.996626, 0.982077, -0.793749, + 0.977901, 0.469991, -0.972339, 0.344807, -0.994449, 0.999891, -0.566665, 0.985128, + -0.950463, 0.389667, -0.171013, -0.494231, -0.288177, 0.989171, -0.806886, 0.967839, + 0.956819, 0.853921, 0.78097, 0.925808, 0.681741, -0.934712, 0.642082, -0.933539, + 0.481516, 0.997935, 0.805567, 0.999646}, + std::vector{0.959354, -0.881273, -0.970651, 0.995653, -0.821644, -0.835365, -0.950953, 0.213407, + -0.00109488, -0.896989, -0.965055, -0.78096, -0.170206, -0.481907, -0.538034, 0.641884, + -0.884119, 0.982638, 0.406508, 0.988232, 0.970184, 0.645835, 0.437802, 0.999792, + -0.395441, 0.998468, -0.983758, -0.861604, -0.102437, -0.726916, -0.878295, 0.961768, + 0.948726, 0.223961, -0.142666, 0.986927, -0.997041, 0.591299, -0.992189, 0.781923, + 0.995062, 0.930073, 0.972781, 0.998503, -0.994274, 0.999141, -0.99872, -0.0965485, + -0.985132, -0.7469, 0.81997, 0.78163, 0.667184, -0.991648, 0.876578, -0.99955, + -0.697148, 0.550283, -0.274609, 0.963469, -0.994494, -0.237455, -0.100728, -0.975005, + -0.0117797, 0.995582, -0.986234, -0.899297, 0.439427, 0.911726, 0.203506, 0.993091, + 0.951738, 0.999095, 0.841566, -0.99347, 0.350599, -0.999231, -0.433626, -0.406675, + 0.994776, -0.484682, -0.990703, 0.999149, 0.779736, 0.0102033, -0.709741, 0.998436, + -0.511018, 0.152785, -0.937848, -0.687825, 0.905885, 0.312886, -0.950348, 0.917466, + -0.957475, 0.399452, 0.226108, -0.996484}), }; return params; } @@ -575,448 +714,339 @@ template std::vector generateParamsBF16() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ RNNSequenceParams( - 5, 10, 10, 10, - 0.f, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.f, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - -2, 2, 2, -1, -2, -2, -2, -1, 2, 0, - 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, - -2, 1, 2, 2, -2, -2, -1, -2, -1, -1, - 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, - -2, 1, 2, 1, 2, 0, -1, -1, 1, 0, - -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, - -1, -2, 1, 2, 1, 2, 2, -2, 2, 0, - 2, 0, 2, 0, 2, -2, 1, 2, 2, 1, - -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, - 0, -1, 1, 0, 1, 0, 0, 1, 1, -2, - 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, - -2, -2, 0, 0, 1, -1, -1, 2, 0, 2, - -2, -1, -1, -1, -1, 0, 1, -2, 2, -2, - -2, 1, 1, 1, 2, 0, 1, 2, 2, 1, - 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, - -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, - 1, 2, 1, 0, -1, -1, -1, 1, 1, -1, - -2, 0, -2, -1, -2, -1, 2, 1, -2, -1, - -1, 1, -2, 1, 1, 2, -2, 2, -1, -2, - 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, - -2, -2, 2, -1, -1, 1, 0, -2, -1, -2, - 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, - -2, 1, 2, -1, -2, 2, 0, 0, 0, -2, - 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, - 2, 2, 2, 0, 2, -2, -1, 0, 0, 1, - -1, 2, 0, 0, 1, -1, 0, -2, -1, 0, - 1, 0, 1, -2, 2, 1, 0, 1, 0, 1, - -2, 0, -2, -2, 1, 2, 0, 1, -2, -2, - -2, -1, -2, 1, 2, -1, -2, -2, 2, -2, - -2, 2, 2, -1, -1, 0, -1, 0, 1, 0, - 1, 2, 2, 1, 2, -1, -1, -2, 0, -2, - -2, 2, -1, 2, 2, 2, 2, -2, 1, 0, - 0, 0, -1, -2, 2, -1, 1, 0, 1, 1, - 2, 1, 2, 2, 0, 1, 0, 0, 1, 1, - -1, 2, 1, -1, 2, 2, 2, 2, -2, 1, - 2, -1, -1, 2, 1, 2, -2, 2, 2, -2, - 1, -2, -2, -1, 0, 2, 0, -2, 0, -2, - 0, 1, -1, -2, 2, 1, -2, 0, -2, -2, - -1, 1, 0, 1, 2, -2, 2, -2, 1, 1, - 2, -1, -1, -1, -2, 0, 1, -1, -2, 0, - 0, 2, 1, -1, 2, 0, -1, 2, -2, -1, - -2, -2, -2, 0, 1, 0, 0, 1, -1, -1, - -1, 2, -2, 0, 2, 0, 1, 1, -2, 0, - -1, 1, 2, -1, -1, 1, 0, -1, 1, -2, - 0, -1, 0, -1, -1, -2, -1, 1, -2, -1, - 0, -2, -2, 1, -2, 0, -1, 1, 0, 1, - -2, -1, -1, -1, 0, -1, 0, -2, 1, -2, - 1, -2, 0, -1, 2, -1, 1, 1, 2, 2, - 0, 1, 1, 1, -2, -1, -1, -1, -1, -2, - 0, 2, 1, 0, -1, 2, -2, -1, 1, 2}, - std::vector{ - -2, 2, 0, 1, -2, 1, 2, 0, 2, 0, - -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, - -1, 0, 2, -2, -1, 2, -1, 2, 2, 1, - -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, - -1, 2, 2, -2, -1, -1, 2, 2, 0, 2}, + -2, 2, 2, -1, -2, -2, -2, -1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, -2, 1, 2, 2, -2, + -2, -1, -2, -1, -1, 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, -2, 1, 2, 1, 2, 0, -1, -1, 1, 0, + -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, -1, -2, 1, 2, 1, 2, 2, -2, 2, 0, 2, 0, 2, 0, 2, + -2, 1, 2, 2, 1, -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, 0, -1, 1, 0, 1, 0, 0, 1, 1, -2, + 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, -2, -2, 0, 0, 1, -1, -1, 2, 0, 2, -2, -1, -1, -1, -1, + 0, 1, -2, 2, -2, -2, 1, 1, 1, 2, 0, 1, 2, 2, 1, 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, + -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, 1, 2, 1, 0, -1, -1, -1, 1, 1, -1, -2, 0, -2, -1, -2, + -1, 2, 1, -2, -1, -1, 1, -2, 1, 1, 2, -2, 2, -1, -2, 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, + -2, -2, 2, -1, -1, 1, 0, -2, -1, -2, 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, -2, 1, 2, -1, -2, + 2, 0, 0, 0, -2, 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, 2, 2, 2, 0, 2, -2, -1, 0, 0, 1, + -1, 2, 0, 0, 1, -1, 0, -2, -1, 0, 1, 0, 1, -2, 2, 1, 0, 1, 0, 1, -2, 0, -2, -2, 1, + 2, 0, 1, -2, -2, -2, -1, -2, 1, 2, -1, -2, -2, 2, -2, -2, 2, 2, -1, -1, 0, -1, 0, 1, 0, + 1, 2, 2, 1, 2, -1, -1, -2, 0, -2, -2, 2, -1, 2, 2, 2, 2, -2, 1, 0, 0, 0, -1, -2, 2, + -1, 1, 0, 1, 1, 2, 1, 2, 2, 0, 1, 0, 0, 1, 1, -1, 2, 1, -1, 2, 2, 2, 2, -2, 1, + 2, -1, -1, 2, 1, 2, -2, 2, 2, -2, 1, -2, -2, -1, 0, 2, 0, -2, 0, -2, 0, 1, -1, -2, 2, + 1, -2, 0, -2, -2, -1, 1, 0, 1, 2, -2, 2, -2, 1, 1, 2, -1, -1, -1, -2, 0, 1, -1, -2, 0, + 0, 2, 1, -1, 2, 0, -1, 2, -2, -1, -2, -2, -2, 0, 1, 0, 0, 1, -1, -1, -1, 2, -2, 0, 2, + 0, 1, 1, -2, 0, -1, 1, 2, -1, -1, 1, 0, -1, 1, -2, 0, -1, 0, -1, -1, -2, -1, 1, -2, -1, + 0, -2, -2, 1, -2, 0, -1, 1, 0, 1, -2, -1, -1, -1, 0, -1, 0, -2, 1, -2, 1, -2, 0, -1, 2, + -1, 1, 1, 2, 2, 0, 1, 1, 1, -2, -1, -1, -1, -1, -2, 0, 2, 1, 0, -1, 2, -2, -1, 1, 2}, + std::vector{-2, 2, 0, 1, -2, 1, 2, 0, 2, 0, -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, -1, 0, 2, -2, -1, + 2, -1, 2, 2, 1, -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, -1, 2, 2, -2, -1, -1, 2, 2, 0, 2}, std::vector{10, 10, 10, 10, 10}, + std::vector{-2, 2, -2, -1, -1, 2, 0, 0, 1, 1, 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, + -1, -1, 1, -2, 0, 1, 0, 2, 0, 0, 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, + -1, -1, -1, -2, -2, -2, -1, -1, 1, -1, 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, + 0, 1, -1, 2, -1, 0, -2, 0, 1, -2, 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, + 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, -2, -2, 1, -2, -1, -2, 2, -1, -2, 2}, + std::vector{-2, -2, -1, 0, 2, -1, -2, 1, 0, 0, 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, + -1, -1, 1, 2, 0, 2, -1, 1, -1, 1, 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, + -2, 0, 2, 2, 1, -1, -1, -2, 1, -2, -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, + -1, 1, 2, -2, 1, 2, -2, -1, -2, -2, 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, + 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, 0, -2, -2, 1, -1, 2, -2, 1, -2, 2}, + std::vector{-2, 1, -2, 2, -2, -1, 2, 1, 2, 2}, std::vector{ - -2, 2, -2, -1, -1, 2, 0, 0, 1, 1, - 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, - -1, -1, 1, -2, 0, 1, 0, 2, 0, 0, - 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, - -1, -1, -1, -2, -2, -2, -1, -1, 1, -1, - 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, - 0, 1, -1, 2, -1, 0, -2, 0, 1, -2, - 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, - 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, - -2, -2, 1, -2, -1, -2, 2, -1, -2, 2}, - std::vector{ - -2, -2, -1, 0, 2, -1, -2, 1, 0, 0, - 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, - -1, -1, 1, 2, 0, 2, -1, 1, -1, 1, - 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, - -2, 0, 2, 2, 1, -1, -1, -2, 1, -2, - -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, - -1, 1, 2, -2, 1, 2, -2, -1, -2, -2, - 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, - 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, - 0, -2, -2, 1, -1, 2, -2, 1, -2, 2}, - std::vector{ - -2, 1, -2, 2, -2, -1, 2, 1, 2, 2}, - std::vector{ - -1, -0.757812, -0.960938, 1, 1, 0, 0.960938, 0.757812, -1, -0.960938, - -0.59375, 1, 0.921875, -1, -1, 0.244141, -1, -1, -0.992188, 1, - -1, -1, -1, -0.953125, 1, -0.449219, 1, -0.957031, -1, 1, - 0.898438, 1, -1, 1, -1, 1, 0.992188, 1, -1, -1, - -1, 1, -0.953125, 0.992188, -1, -1, 0.96875, -0.185547, -1, 0.960938, - -0.996094, 0.154297, -0.154297, -1, -1, -1, 0.890625, -1, -0.542969, -0.289062, - -1, 0.96875, -1, -1, -1, 1, 0.617188, -1, -1, -0.976562, - -1, 0.757812, -0.984375, 1, -1, 1, 0.992188, -0.244141, -1, -0.124023, - 1, -0.992188, -0.96875, -1, -0.976562, -1, 1, -1, -0.773438, 1, - -1, 0.996094, -0.996094, 1, -1, -1, -0.984375, -1, 1, -0.507812, - -0.960938, -1, 0.960938, 1, -1, -0.960938, 1, -0.960938, 1, -1, - -1, 0.96875, 1, 1, 1, 0.640625, -1, -1, 0.757812, 1, - 1, -1, 0.984375, -0.976562, 1, 0.996094, 1, 1, -1, 1, - 0.765625, 0.992188, 1, 1, -1, -0.992188, 0.953125, -1, -1, 0.96875, - -1, -1, -1, 1, -1, 0.871094, -0.921875, 0.558594, 1, -0.992188, - 1, 1, 1, -1, -0.992188, -1, -1, -0.996094, -0.960938, 1, - -1, 0.0625, -1, 1, -0.960938, -0.785156, 1, 1, 0.992188, -1, - 1, -1, -0.554688, -1, 1, -1, -1, -1, 1, 1, - 1, 1, -1, -0.108887, -1, -1, 1, 0.960938, 1, -1, - 1, 1, -1, -0.75, -1, -1, 1, -0.964844, 1, -1, - -1, -1, 1, -1, 0.757812, -1, 1, -1, -1, 1, - 0.984375, 1, -0.960938, 1, -0.996094, 1, 1, -0.847656, 1, -1, - -1, 1, 0.976562, -0.96875, 0.671875, -1, 0.757812, -1, 1, -0.726562, - -0.996094, 0.957031, -1, -1, -0.921875, 0.992188, 1, -1, -0.953125, -1, - -1, 0.996094, -1, 1, -1, 0.992188, 1, 1, -1, -0.992188, - -0.992188, -1, -1, -1, -1, -1, 0.960938, -0.992188, -1, 1, - -0.957031, 0.960938, 0.96875, 1, -1, 0.953125, -1, -1, 0.96875, 1, - 1, -1, 1, 0, 1, -1, 0.992188, -1, 1, 0.992188, - -0.960938, 1, -1, 1, 1, 0.992188, 1, 1, -0.992188, -1, - 1, 1, 1, 1, 0.960938, -0.96875, 1, -0.992188, -1, 1, - -1, -1, -1, 1, -0.757812, 1, 1, 0.992188, -1, -1, - 1, 1, -1, -1, -1, -1, 0.976562, -1, -1, 0.9375, - -1, -1, -1, 1, -1, 1, -1, 0.96875, -1, 1, - -0.773438, 1, 0.992188, -0.960938, -1, -0.960938, 0.964844, 1, -1, 1, - 0.554688, -1, 1, 1, -1, -1, -1, -1, -1, 0.976562, - -1, 1, 0.882812, 1, -1, -0.992188, 1, 1, 1, -1, - -1, -1, -1, -1, 1, 1, -0.214844, -0.992188, 1, -1, - 1, 0.992188, -0.652344, -0.890625, 0.835938, -1, 1, 0.882812, 1, -1, - -1, 0.871094, -1, -1, -1, 1, -1, 0.976562, -1, -0.90625, - -1, -1, -0.992188, -1, -0.96875, 0.992188, 1, -0.992188, 1, 1, - -1, -1, 0, 1, -1, -0.992188, -0.757812, -1, -1, -1, - 0.984375, -1, 1, -1, 1, -1, 1, -1, 1, 1, - 0.992188, -1, -1, 1, -1, -1, -1, -0.992188, 0.960938, -1, - 0.964844, 1, -0.960938, -1, 1, -1, -0.734375, 1, 1, 0.789062, - -1, -1, -1, 0.96875, 0.300781, -1, -0.960938, -1, 1, 1, - 1, 1, -0.800781, -0.554688, 1, 0.9375, -0.59375, 1, 1, 1, - 0.0625, -1, -0.996094, -0.71875, 1, -1, 1, 0.984375, -0.996094, 1, - -0.96875, 0.992188, 0.449219, 1, -1, 1, -1, -0.507812, -1, 1, - -1, -1, -0.0625, -0.910156, 1, -1, 1, 0.078125, 0.828125, 1, - 1, 1, -1, 1, -1, 1, -0.0625, 1, -0.976562, -1}, - std::vector{ - -1, 0.996094, -0.996094, 1, -1, -1, -0.984375, -1, 1, -0.507812, - 1, 1, -1, -0.75, -1, -1, 1, -0.964844, 1, -1, - 1, 1, 1, 1, 0.960938, -0.96875, 1, -0.992188, -1, 1, - -1, -1, -0.992188, -1, -0.96875, 0.992188, 1, -0.992188, 1, 1, - 1, 1, -1, 1, -1, 1, -0.0625, 1, -0.976562, -1}), + -1, -0.757812, -0.960938, 1, 1, 0, 0.960938, 0.757812, -1, + -0.960938, -0.59375, 1, 0.921875, -1, -1, 0.244141, -1, -1, + -0.992188, 1, -1, -1, -1, -0.953125, 1, -0.449219, 1, + -0.957031, -1, 1, 0.898438, 1, -1, 1, -1, 1, + 0.992188, 1, -1, -1, -1, 1, -0.953125, 0.992188, -1, + -1, 0.96875, -0.185547, -1, 0.960938, -0.996094, 0.154297, -0.154297, -1, + -1, -1, 0.890625, -1, -0.542969, -0.289062, -1, 0.96875, -1, + -1, -1, 1, 0.617188, -1, -1, -0.976562, -1, 0.757812, + -0.984375, 1, -1, 1, 0.992188, -0.244141, -1, -0.124023, 1, + -0.992188, -0.96875, -1, -0.976562, -1, 1, -1, -0.773438, 1, + -1, 0.996094, -0.996094, 1, -1, -1, -0.984375, -1, 1, + -0.507812, -0.960938, -1, 0.960938, 1, -1, -0.960938, 1, -0.960938, + 1, -1, -1, 0.96875, 1, 1, 1, 0.640625, -1, + -1, 0.757812, 1, 1, -1, 0.984375, -0.976562, 1, 0.996094, + 1, 1, -1, 1, 0.765625, 0.992188, 1, 1, -1, + -0.992188, 0.953125, -1, -1, 0.96875, -1, -1, -1, 1, + -1, 0.871094, -0.921875, 0.558594, 1, -0.992188, 1, 1, 1, + -1, -0.992188, -1, -1, -0.996094, -0.960938, 1, -1, 0.0625, + -1, 1, -0.960938, -0.785156, 1, 1, 0.992188, -1, 1, + -1, -0.554688, -1, 1, -1, -1, -1, 1, 1, + 1, 1, -1, -0.108887, -1, -1, 1, 0.960938, 1, + -1, 1, 1, -1, -0.75, -1, -1, 1, -0.964844, + 1, -1, -1, -1, 1, -1, 0.757812, -1, 1, + -1, -1, 1, 0.984375, 1, -0.960938, 1, -0.996094, 1, + 1, -0.847656, 1, -1, -1, 1, 0.976562, -0.96875, 0.671875, + -1, 0.757812, -1, 1, -0.726562, -0.996094, 0.957031, -1, -1, + -0.921875, 0.992188, 1, -1, -0.953125, -1, -1, 0.996094, -1, + 1, -1, 0.992188, 1, 1, -1, -0.992188, -0.992188, -1, + -1, -1, -1, -1, 0.960938, -0.992188, -1, 1, -0.957031, + 0.960938, 0.96875, 1, -1, 0.953125, -1, -1, 0.96875, 1, + 1, -1, 1, 0, 1, -1, 0.992188, -1, 1, + 0.992188, -0.960938, 1, -1, 1, 1, 0.992188, 1, 1, + -0.992188, -1, 1, 1, 1, 1, 0.960938, -0.96875, 1, + -0.992188, -1, 1, -1, -1, -1, 1, -0.757812, 1, + 1, 0.992188, -1, -1, 1, 1, -1, -1, -1, + -1, 0.976562, -1, -1, 0.9375, -1, -1, -1, 1, + -1, 1, -1, 0.96875, -1, 1, -0.773438, 1, 0.992188, + -0.960938, -1, -0.960938, 0.964844, 1, -1, 1, 0.554688, -1, + 1, 1, -1, -1, -1, -1, -1, 0.976562, -1, + 1, 0.882812, 1, -1, -0.992188, 1, 1, 1, -1, + -1, -1, -1, -1, 1, 1, -0.214844, -0.992188, 1, + -1, 1, 0.992188, -0.652344, -0.890625, 0.835938, -1, 1, 0.882812, + 1, -1, -1, 0.871094, -1, -1, -1, 1, -1, + 0.976562, -1, -0.90625, -1, -1, -0.992188, -1, -0.96875, 0.992188, + 1, -0.992188, 1, 1, -1, -1, 0, 1, -1, + -0.992188, -0.757812, -1, -1, -1, 0.984375, -1, 1, -1, + 1, -1, 1, -1, 1, 1, 0.992188, -1, -1, + 1, -1, -1, -1, -0.992188, 0.960938, -1, 0.964844, 1, + -0.960938, -1, 1, -1, -0.734375, 1, 1, 0.789062, -1, + -1, -1, 0.96875, 0.300781, -1, -0.960938, -1, 1, 1, + 1, 1, -0.800781, -0.554688, 1, 0.9375, -0.59375, 1, 1, + 1, 0.0625, -1, -0.996094, -0.71875, 1, -1, 1, 0.984375, + -0.996094, 1, -0.96875, 0.992188, 0.449219, 1, -1, 1, -1, + -0.507812, -1, 1, -1, -1, -0.0625, -0.910156, 1, -1, + 1, 0.078125, 0.828125, 1, 1, 1, -1, 1, -1, + 1, -0.0625, 1, -0.976562, -1}, + std::vector{-1, 0.996094, -0.996094, 1, -1, -1, -0.984375, -1, 1, + -0.507812, 1, 1, -1, -0.75, -1, -1, 1, -0.964844, + 1, -1, 1, 1, 1, 1, 0.960938, -0.96875, 1, + -0.992188, -1, 1, -1, -1, -0.992188, -1, -0.96875, 0.992188, + 1, -0.992188, 1, 1, 1, 1, -1, 1, -1, + 1, -0.0625, 1, -0.976562, -1}), RNNSequenceParams( - 5, 10, 10, 10, - 0.f, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.f, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - -2, 2, 2, -1, -2, -2, -2, -1, 2, 0, - 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, - -2, 1, 2, 2, -2, -2, -1, -2, -1, -1, - 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, - -2, 1, 2, 1, 2, 0, -1, -1, 1, 0, - -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, - -1, -2, 1, 2, 1, 2, 2, -2, 2, 0, - 2, 0, 2, 0, 2, -2, 1, 2, 2, 1, - -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, - 0, -1, 1, 0, 1, 0, 0, 1, 1, -2, - 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, - -2, -2, 0, 0, 1, -1, -1, 2, 0, 2, - -2, -1, -1, -1, -1, 0, 1, -2, 2, -2, - -2, 1, 1, 1, 2, 0, 1, 2, 2, 1, - 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, - -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, - 1, 2, 1, 0, -1, -1, -1, 1, 1, -1, - -2, 0, -2, -1, -2, -1, 2, 1, -2, -1, - -1, 1, -2, 1, 1, 2, -2, 2, -1, -2, - 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, - -2, -2, 2, -1, -1, 1, 0, -2, -1, -2, - 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, - -2, 1, 2, -1, -2, 2, 0, 0, 0, -2, - 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, - 2, 2, 2, 0, 2, -2, -1, 0, 0, 1, - -1, 2, 0, 0, 1, -1, 0, -2, -1, 0, - 1, 0, 1, -2, 2, 1, 0, 1, 0, 1, - -2, 0, -2, -2, 1, 2, 0, 1, -2, -2, - -2, -1, -2, 1, 2, -1, -2, -2, 2, -2, - -2, 2, 2, -1, -1, 0, -1, 0, 1, 0, - 1, 2, 2, 1, 2, -1, -1, -2, 0, -2, - -2, 2, -1, 2, 2, 2, 2, -2, 1, 0, - 0, 0, -1, -2, 2, -1, 1, 0, 1, 1, - 2, 1, 2, 2, 0, 1, 0, 0, 1, 1, - -1, 2, 1, -1, 2, 2, 2, 2, -2, 1, - 2, -1, -1, 2, 1, 2, -2, 2, 2, -2, - 1, -2, -2, -1, 0, 2, 0, -2, 0, -2, - 0, 1, -1, -2, 2, 1, -2, 0, -2, -2, - -1, 1, 0, 1, 2, -2, 2, -2, 1, 1, - 2, -1, -1, -1, -2, 0, 1, -1, -2, 0, - 0, 2, 1, -1, 2, 0, -1, 2, -2, -1, - -2, -2, -2, 0, 1, 0, 0, 1, -1, -1, - -1, 2, -2, 0, 2, 0, 1, 1, -2, 0, - -1, 1, 2, -1, -1, 1, 0, -1, 1, -2, - 0, -1, 0, -1, -1, -2, -1, 1, -2, -1, - 0, -2, -2, 1, -2, 0, -1, 1, 0, 1, - -2, -1, -1, -1, 0, -1, 0, -2, 1, -2, - 1, -2, 0, -1, 2, -1, 1, 1, 2, 2, - 0, 1, 1, 1, -2, -1, -1, -1, -1, -2, - 0, 2, 1, 0, -1, 2, -2, -1, 1, 2}, - std::vector{ - -2, 2, 0, 1, -2, 1, 2, 0, 2, 0, - -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, - -1, 0, 2, -2, -1, 2, -1, 2, 2, 1, - -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, - -1, 2, 2, -2, -1, -1, 2, 2, 0, 2}, + -2, 2, 2, -1, -2, -2, -2, -1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, -2, 1, 2, 2, -2, + -2, -1, -2, -1, -1, 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, -2, 1, 2, 1, 2, 0, -1, -1, 1, 0, + -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, -1, -2, 1, 2, 1, 2, 2, -2, 2, 0, 2, 0, 2, 0, 2, + -2, 1, 2, 2, 1, -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, 0, -1, 1, 0, 1, 0, 0, 1, 1, -2, + 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, -2, -2, 0, 0, 1, -1, -1, 2, 0, 2, -2, -1, -1, -1, -1, + 0, 1, -2, 2, -2, -2, 1, 1, 1, 2, 0, 1, 2, 2, 1, 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, + -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, 1, 2, 1, 0, -1, -1, -1, 1, 1, -1, -2, 0, -2, -1, -2, + -1, 2, 1, -2, -1, -1, 1, -2, 1, 1, 2, -2, 2, -1, -2, 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, + -2, -2, 2, -1, -1, 1, 0, -2, -1, -2, 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, -2, 1, 2, -1, -2, + 2, 0, 0, 0, -2, 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, 2, 2, 2, 0, 2, -2, -1, 0, 0, 1, + -1, 2, 0, 0, 1, -1, 0, -2, -1, 0, 1, 0, 1, -2, 2, 1, 0, 1, 0, 1, -2, 0, -2, -2, 1, + 2, 0, 1, -2, -2, -2, -1, -2, 1, 2, -1, -2, -2, 2, -2, -2, 2, 2, -1, -1, 0, -1, 0, 1, 0, + 1, 2, 2, 1, 2, -1, -1, -2, 0, -2, -2, 2, -1, 2, 2, 2, 2, -2, 1, 0, 0, 0, -1, -2, 2, + -1, 1, 0, 1, 1, 2, 1, 2, 2, 0, 1, 0, 0, 1, 1, -1, 2, 1, -1, 2, 2, 2, 2, -2, 1, + 2, -1, -1, 2, 1, 2, -2, 2, 2, -2, 1, -2, -2, -1, 0, 2, 0, -2, 0, -2, 0, 1, -1, -2, 2, + 1, -2, 0, -2, -2, -1, 1, 0, 1, 2, -2, 2, -2, 1, 1, 2, -1, -1, -1, -2, 0, 1, -1, -2, 0, + 0, 2, 1, -1, 2, 0, -1, 2, -2, -1, -2, -2, -2, 0, 1, 0, 0, 1, -1, -1, -1, 2, -2, 0, 2, + 0, 1, 1, -2, 0, -1, 1, 2, -1, -1, 1, 0, -1, 1, -2, 0, -1, 0, -1, -1, -2, -1, 1, -2, -1, + 0, -2, -2, 1, -2, 0, -1, 1, 0, 1, -2, -1, -1, -1, 0, -1, 0, -2, 1, -2, 1, -2, 0, -1, 2, + -1, 1, 1, 2, 2, 0, 1, 1, 1, -2, -1, -1, -1, -1, -2, 0, 2, 1, 0, -1, 2, -2, -1, 1, 2}, + std::vector{-2, 2, 0, 1, -2, 1, 2, 0, 2, 0, -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, -1, 0, 2, -2, -1, + 2, -1, 2, 2, 1, -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, -1, 2, 2, -2, -1, -1, 2, 2, 0, 2}, std::vector{10, 10, 10, 10, 10}, + std::vector{-2, 2, -2, -1, -1, 2, 0, 0, 1, 1, 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, + -1, -1, 1, -2, 0, 1, 0, 2, 0, 0, 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, + -1, -1, -1, -2, -2, -2, -1, -1, 1, -1, 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, + 0, 1, -1, 2, -1, 0, -2, 0, 1, -2, 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, + 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, -2, -2, 1, -2, -1, -2, 2, -1, -2, 2}, + std::vector{-2, -2, -1, 0, 2, -1, -2, 1, 0, 0, 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, + -1, -1, 1, 2, 0, 2, -1, 1, -1, 1, 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, + -2, 0, 2, 2, 1, -1, -1, -2, 1, -2, -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, + -1, 1, 2, -2, 1, 2, -2, -1, -2, -2, 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, + 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, 0, -2, -2, 1, -1, 2, -2, 1, -2, 2}, + std::vector{-2, 1, -2, 2, -2, -1, 2, 1, 2, 2}, std::vector{ - -2, 2, -2, -1, -1, 2, 0, 0, 1, 1, - 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, - -1, -1, 1, -2, 0, 1, 0, 2, 0, 0, - 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, - -1, -1, -1, -2, -2, -2, -1, -1, 1, -1, - 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, - 0, 1, -1, 2, -1, 0, -2, 0, 1, -2, - 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, - 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, - -2, -2, 1, -2, -1, -2, 2, -1, -2, 2}, + 0.921875, -0.507812, -0.804688, 1, 1, -0.890625, 1, 1, -1, + 1, -0.808594, 1, -1, -0.960938, -1, 1, -1, -1, + -0.992188, 1, -1, -0.960938, -1, -1, 0.964844, -0.992188, 1, + -1, -1, 1, -1, 1, -0.996094, 1, -1, 0.972656, + 1, 1, -0.992188, -1, -0.988281, 1, -1, 0.214844, -0.124023, + 0.671875, 1, -0.988281, -1, -1, -1, -1, 0.589844, 0.357422, + -1, -1, 1, -1, -1, -0.984375, -0.96875, 0.992188, 0.734375, + -1, -1, 0.960938, 1, -0.953125, -1, 1, -1, 1, + -1, 1, -1, 1, -1, 0.949219, -1, -1, 1, + 0.921875, -1, -1, 1, -0.984375, 1, 0.585938, 1, -1, + -1, -1, 0.960938, -0.992188, 0.757812, -1, -0.960938, -1, 0, + -1, -0.984375, -0.765625, 1, 1, -1, -1, -1, 1, + 1, -0.574219, 0.890625, -0.124023, 1, 1, -1, -0.957031, -1, + -1, -1, 1, -0.75, -1, -0.996094, -0.244141, 1, 0.992188, + 1, 0.960938, 0.847656, 1, 1, 1, 0.96875, 0, -1, + -1, -1, -1, -1, 0.90625, -1, -1, -0.992188, 0.542969, + -1, -1, 0.984375, 0.96875, 1, 1, -0.796875, 1, -0.757812, + 0.75, -1, -0.0932617, -1, -1, -0.960938, 1, 1, 1, + -1, 0, 0.960938, -0.992188, 1, 1, 1, -1, -0.992188, + -1, -1, -1, 1, -1, -1, -1, 1, 1, + 1, 1, -1, 0.984375, -0.992188, -1, 1, -0.941406, 1, + -1, 1, -1, 0.757812, -0.757812, 0.992188, -1, 1, -1, + 1, -1, -0.976562, 0.992188, 0.0625, -1, 1, 0.59375, -1, + -1, 1, 1, -0.921875, 1, -1, 1, 0.992188, -0.925781, + 1, 1, 1, -1, 0.75, -1, 0.984375, 0.984375, 0.460938, + -0.976562, 1, -1, 0.996094, -0.910156, -0.757812, 0.273438, 0.996094, -1, + -1, -1, 1, -1, -1, 1, -1, 1, -1, + 1, -1, 1, -1, 1, -1, -0.640625, 0.773438, -1, + -1, -1, 1, -1, 0.953125, 0.773438, -1, 0.185547, -1, + 1, 0.953125, 1, -1, -0.984375, -1, 0.996094, 1, -0.976562, + 1, -1, 1, -0.0625, -0.75, -1, 0.960938, -1, 1, + 1, -1, 0.03125, -1, 1, 1, 0.96875, 1, 1, + -1, -1, 1, -1, 1, 1, -0.960938, -1, 1, + -0.960938, -1, 1, -1, 0.964844, -1, -0.992188, -1, -0.964844, + 0.960938, -0.734375, -1, -1, 1, 0.984375, -1, -1, -1, + -1, 0.988281, 0.996094, -1, 1, -0.992188, -1, -0.996094, 0.9375, + -1, 0.273438, -1, -0.96875, -1, 1, -1, 1, -1, + -1, -1, 0.855469, 1, 1, 1, -1, -0.773438, 0.71875, + -0.992188, -1, -1, -1, -1, -1, 1, -0.96875, 0.992188, + 1, -0.960938, -1, -1, -1, 1, 1, 1, -1, + -1, -0.384766, -1, -0.976562, 1, 0.796875, -1, 1, 1, + -1, 1, -0.90625, 1, 0.992188, -1, -1, 1, -0.796875, + 1, 1, -0.90625, -0.945312, -1, 0.980469, 0.734375, 1, -1, + 1, -1, 1, -1, -1, 0.757812, 1, 1, 1, + 1, -0.757812, 0.960938, 1, 1, 1, -0.357422, 0.921875, -1, + -1, -0.847656, -1, 1, -0.992188, -0.617188, -0.960938, -0.757812, -1, + 0.984375, -1, -0.808594, -1, 1, 1, 0.75, -1, -1, + 0.472656, -1, -1, -0.390625, -1, -0.384766, -1, 1, 1, + 1, -1, 1, -0.992188, 0.992188, 0.960938, 1, -0.757812, -1, + -1, 1, 1, 1, -1, -1, -1, 1, 1, + -0.753906, 0, -1, 1, 0.757812, 1, 1, 0.992188, 1, + 0, 1, -1, 1, -1, 1, -1, 0.996094, -0.992188, + -1, 1, -1, -0.992188, -1, 1, -1, 1, -1, + 0.890625, -1, 0.933594, -1, 1, -1, -0.90625, -0.460938, -1, + 1, -0.898438, 1, 1, 0.757812, -1, -1, 1, -1, + 1, 0.992188, 0, -1, -1}, std::vector{ - -2, -2, -1, 0, 2, -1, -2, 1, 0, 0, - 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, - -1, -1, 1, 2, 0, 2, -1, 1, -1, 1, - 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, - -2, 0, 2, 2, 1, -1, -1, -2, 1, -2, - -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, - -1, 1, 2, -2, 1, 2, -2, -1, -2, -2, - 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, - 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, - 0, -2, -2, 1, -1, 2, -2, 1, -2, 2}, - std::vector{ - -2, 1, -2, 2, -2, -1, 2, 1, 2, 2}, - std::vector{ - 0.921875, -0.507812, -0.804688, 1, 1, -0.890625, 1, 1, -1, 1, - -0.808594, 1, -1, -0.960938, -1, 1, -1, -1, -0.992188, 1, - -1, -0.960938, -1, -1, 0.964844, -0.992188, 1, -1, -1, 1, - -1, 1, -0.996094, 1, -1, 0.972656, 1, 1, -0.992188, -1, - -0.988281, 1, -1, 0.214844, -0.124023, 0.671875, 1, -0.988281, -1, -1, - -1, -1, 0.589844, 0.357422, -1, -1, 1, -1, -1, -0.984375, - -0.96875, 0.992188, 0.734375, -1, -1, 0.960938, 1, -0.953125, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 0.949219, -1, -1, - 1, 0.921875, -1, -1, 1, -0.984375, 1, 0.585938, 1, -1, - -1, -1, 0.960938, -0.992188, 0.757812, -1, -0.960938, -1, 0, -1, - -0.984375, -0.765625, 1, 1, -1, -1, -1, 1, 1, -0.574219, - 0.890625, -0.124023, 1, 1, -1, -0.957031, -1, -1, -1, 1, - -0.75, -1, -0.996094, -0.244141, 1, 0.992188, 1, 0.960938, 0.847656, 1, - 1, 1, 0.96875, 0, -1, -1, -1, -1, -1, 0.90625, - -1, -1, -0.992188, 0.542969, -1, -1, 0.984375, 0.96875, 1, 1, - -0.796875, 1, -0.757812, 0.75, -1, -0.0932617, -1, -1, -0.960938, 1, - 1, 1, -1, 0, 0.960938, -0.992188, 1, 1, 1, -1, - -0.992188, -1, -1, -1, 1, -1, -1, -1, 1, 1, - 1, 1, -1, 0.984375, -0.992188, -1, 1, -0.941406, 1, -1, - 1, -1, 0.757812, -0.757812, 0.992188, -1, 1, -1, 1, -1, - -0.976562, 0.992188, 0.0625, -1, 1, 0.59375, -1, -1, 1, 1, - -0.921875, 1, -1, 1, 0.992188, -0.925781, 1, 1, 1, -1, - 0.75, -1, 0.984375, 0.984375, 0.460938, -0.976562, 1, -1, 0.996094, -0.910156, - -0.757812, 0.273438, 0.996094, -1, -1, -1, 1, -1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, -0.640625, - 0.773438, -1, -1, -1, 1, -1, 0.953125, 0.773438, -1, 0.185547, - -1, 1, 0.953125, 1, -1, -0.984375, -1, 0.996094, 1, -0.976562, - 1, -1, 1, -0.0625, -0.75, -1, 0.960938, -1, 1, 1, - -1, 0.03125, -1, 1, 1, 0.96875, 1, 1, -1, -1, - 1, -1, 1, 1, -0.960938, -1, 1, -0.960938, -1, 1, - -1, 0.964844, -1, -0.992188, -1, -0.964844, 0.960938, -0.734375, -1, -1, - 1, 0.984375, -1, -1, -1, -1, 0.988281, 0.996094, -1, 1, - -0.992188, -1, -0.996094, 0.9375, -1, 0.273438, -1, -0.96875, -1, 1, - -1, 1, -1, -1, -1, 0.855469, 1, 1, 1, -1, - -0.773438, 0.71875, -0.992188, -1, -1, -1, -1, -1, 1, -0.96875, - 0.992188, 1, -0.960938, -1, -1, -1, 1, 1, 1, -1, - -1, -0.384766, -1, -0.976562, 1, 0.796875, -1, 1, 1, -1, - 1, -0.90625, 1, 0.992188, -1, -1, 1, -0.796875, 1, 1, - -0.90625, -0.945312, -1, 0.980469, 0.734375, 1, -1, 1, -1, 1, - -1, -1, 0.757812, 1, 1, 1, 1, -0.757812, 0.960938, 1, - 1, 1, -0.357422, 0.921875, -1, -1, -0.847656, -1, 1, -0.992188, - -0.617188, -0.960938, -0.757812, -1, 0.984375, -1, -0.808594, -1, 1, 1, - 0.75, -1, -1, 0.472656, -1, -1, -0.390625, -1, -0.384766, -1, - 1, 1, 1, -1, 1, -0.992188, 0.992188, 0.960938, 1, -0.757812, - -1, -1, 1, 1, 1, -1, -1, -1, 1, 1, - -0.753906, 0, -1, 1, 0.757812, 1, 1, 0.992188, 1, 0, - 1, -1, 1, -1, 1, -1, 0.996094, -0.992188, -1, 1, - -1, -0.992188, -1, 1, -1, 1, -1, 0.890625, -1, 0.933594, - -1, 1, -1, -0.90625, -0.460938, -1, 1, -0.898438, 1, 1, - 0.757812, -1, -1, 1, -1, 1, 0.992188, 0, -1, -1}, - std::vector{ - 0.921875, -0.507812, -0.804688, 1, 1, -0.890625, 1, 1, -1, 1, - -0.984375, -0.765625, 1, 1, -1, -1, -1, 1, 1, -0.574219, - -0.976562, 0.992188, 0.0625, -1, 1, 0.59375, -1, -1, 1, 1, - -1, 0.964844, -1, -0.992188, -1, -0.964844, 0.960938, -0.734375, -1, -1, - 1, 1, -0.357422, 0.921875, -1, -1, -0.847656, -1, 1, -0.992188}), + 0.921875, -0.507812, -0.804688, 1, 1, -0.890625, 1, 1, -1, 1, + -0.984375, -0.765625, 1, 1, -1, -1, -1, 1, 1, -0.574219, + -0.976562, 0.992188, 0.0625, -1, 1, 0.59375, -1, -1, 1, 1, + -1, 0.964844, -1, -0.992188, -1, -0.964844, 0.960938, -0.734375, -1, -1, + 1, 1, -0.357422, 0.921875, -1, -1, -0.847656, -1, 1, -0.992188}), RNNSequenceParams( - 5, 10, 10, 5, - 0.f, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.f, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, - std::vector{ - -2, 2, 2, -1, -2, -2, -2, -1, 2, 0, - 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, - -2, 1, 2, 2, -2, -2, -1, -2, -1, -1, - 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, - -2, 1, 2, 1, 2, 0, -1, -1, 1, 0, - -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, - -1, -2, 1, 2, 1, 2, 2, -2, 2, 0, - 2, 0, 2, 0, 2, -2, 1, 2, 2, 1, - -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, - 0, -1, 1, 0, 1, 0, 0, 1, 1, -2, - 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, - -2, -2, 0, 0, 1, -1, -1, 2, 0, 2, - -2, -1, -1, -1, -1, 0, 1, -2, 2, -2, - -2, 1, 1, 1, 2, 0, 1, 2, 2, 1, - 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, - -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, - 1, 2, 1, 0, -1, -1, -1, 1, 1, -1, - -2, 0, -2, -1, -2, -1, 2, 1, -2, -1, - -1, 1, -2, 1, 1, 2, -2, 2, -1, -2, - 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, - -2, -2, 2, -1, -1, 1, 0, -2, -1, -2, - 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, - -2, 1, 2, -1, -2, 2, 0, 0, 0, -2, - 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, - 2, 2, 2, 0, 2, -2, -1, 0, 0, 2}, - std::vector{ - -2, 2, 0, 1, -2, 1, 2, 0, 2, 0, - -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, - -1, 0, 2, -2, -1, 2, -1, 2, 2, 1, - -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, - -1, 2, 2, -2, -1, -1, 2, 2, 0, 2, - 2, -2, -1, 2, 1, -1, -2, 1, -1, -2, - 1, 2, -2, 0, -1, 1, -1, 2, -1, -2, - -2, -2, 0, 0, 0, 2, 1, 1, 2, 1, - -1, 0, 0, 0, -2, 1, -2, 1, 1, -2, - 0, -1, 2, -2, -1, 2, 1, -2, 1, 2}, + std::vector{-2, 2, 2, -1, -2, -2, -2, -1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, -2, 1, 2, + 2, -2, -2, -1, -2, -1, -1, 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, -2, 1, 2, 1, 2, 0, + -1, -1, 1, 0, -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, -1, -2, 1, 2, 1, 2, 2, -2, 2, + 0, 2, 0, 2, 0, 2, -2, 1, 2, 2, 1, -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, 0, -1, + 1, 0, 1, 0, 0, 1, 1, -2, 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, -2, -2, 0, 0, 1, + -1, -1, 2, 0, 2, -2, -1, -1, -1, -1, 0, 1, -2, 2, -2, -2, 1, 1, 1, 2, 0, 1, 2, + 2, 1, 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, 1, + 2, 1, 0, -1, -1, -1, 1, 1, -1, -2, 0, -2, -1, -2, -1, 2, 1, -2, -1, -1, 1, -2, 1, + 1, 2, -2, 2, -1, -2, 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, -2, -2, 2, -1, -1, 1, 0, + -2, -1, -2, 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, -2, 1, 2, -1, -2, 2, 0, 0, 0, -2, + 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, 2, 2, 2, 0, 2, -2, -1, 0, 0, 2}, + std::vector{-2, 2, 0, 1, -2, 1, 2, 0, 2, 0, -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, + -1, 0, 2, -2, -1, 2, -1, 2, 2, 1, -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, + -1, 2, 2, -2, -1, -1, 2, 2, 0, 2, 2, -2, -1, 2, 1, -1, -2, 1, -1, -2, + 1, 2, -2, 0, -1, 1, -1, 2, -1, -2, -2, -2, 0, 0, 0, 2, 1, 1, 2, 1, + -1, 0, 0, 0, -2, 1, -2, 1, 1, -2, 0, -1, 2, -2, -1, 2, 1, -2, 1, 2}, std::vector{5, 5, 5, 5, 5}, + std::vector{-2, 2, -2, -1, -1, 2, 0, 0, 1, 1, 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, -1, -1, 1, + -2, 0, 1, 0, 2, 0, 0, 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, -1, -1, -1, -2, -2, -2, + -1, -1, 1, -1, 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, 0, 1, -1, 2, -1, 0, -2, 0, 1, + -2, 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, -2, -2, + 1, -2, -1, -2, 2, -1, -2, 2, -1, 0, -2, -1, 1, 0, 1, 2, -1, -2, -2, -2, 1, 0, -1, + -2, -2, -2, 0, -1, 1, 2, 2, -2, -2, 1, -2, 2, 1, -1, 0, -2, -2, -1, 0, -1, -2, 2, + 0, 2, 0, 2, 2, -2, 0, 1, -2, 2, 1, 0, -2, 0, 2, -1, 1, -2, 0, 0, -1, -1, 0, + 1, 0, 0, 2, 1, 1, -1, -2, -2, 1, 1, -1, -1, 1, 0, -1, 0, -2, 1, 2, 1, 1, -1, + -2, 0, 2, 2, 2, 0, 1, 1, -2, -2, 0, 0, 0, -1, -1, 2}, + std::vector{-2, -2, -1, 0, 2, -1, -2, 1, 0, 0, 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, -1, -1, 1, + 2, 0, 2, -1, 1, -1, 1, 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, -2, 0, 2, 2, 1, -1, + -1, -2, 1, -2, -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, -1, 1, 2, -2, 1, 2, -2, -1, -2, + -2, 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, 0, -2, + -2, 1, -1, 2, -2, 1, -2, 1, -1, -2, -2, -2, -2, -2, 0, -1, 2, 0, 0, 2, 2, 1, 0, + 1, -2, -1, 0, -1, 1, 1, -2, 1, -1, 1, 2, 0, 0, -2, -1, 0, -2, -2, 1, 2, 1, -1, + -1, 1, -1, 0, -2, 1, 1, 1, -1, 2, -2, 2, 1, 1, -2, 2, 0, 0, -1, -2, -1, 2, 2, + 1, -2, -2, 2, 1, -1, -2, 1, 0, 1, 2, 0, 2, 1, 0, 0, -1, 0, 1, -2, -1, 1, 2, + 1, -1, 2, 1, 2, -2, 2, 1, 1, -1, -2, -1, -1, -1, -1, 2}, + std::vector{-2, 1, -2, 2, -2, -1, 2, 1, 2, -2, 0, 1, -2, 2, 0, -2, 0, 0, 0, 2}, std::vector{ - -2, 2, -2, -1, -1, 2, 0, 0, 1, 1, - 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, - -1, -1, 1, -2, 0, 1, 0, 2, 0, 0, - 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, - -1, -1, -1, -2, -2, -2, -1, -1, 1, -1, - 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, - 0, 1, -1, 2, -1, 0, -2, 0, 1, -2, - 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, - 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, - -2, -2, 1, -2, -1, -2, 2, -1, -2, 2, - -1, 0, -2, -1, 1, 0, 1, 2, -1, -2, - -2, -2, 1, 0, -1, -2, -2, -2, 0, -1, - 1, 2, 2, -2, -2, 1, -2, 2, 1, -1, - 0, -2, -2, -1, 0, -1, -2, 2, 0, 2, - 0, 2, 2, -2, 0, 1, -2, 2, 1, 0, - -2, 0, 2, -1, 1, -2, 0, 0, -1, -1, - 0, 1, 0, 0, 2, 1, 1, -1, -2, -2, - 1, 1, -1, -1, 1, 0, -1, 0, -2, 1, - 2, 1, 1, -1, -2, 0, 2, 2, 2, 0, - 1, 1, -2, -2, 0, 0, 0, -1, -1, 2}, - std::vector{ - -2, -2, -1, 0, 2, -1, -2, 1, 0, 0, - 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, - -1, -1, 1, 2, 0, 2, -1, 1, -1, 1, - 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, - -2, 0, 2, 2, 1, -1, -1, -2, 1, -2, - -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, - -1, 1, 2, -2, 1, 2, -2, -1, -2, -2, - 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, - 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, - 0, -2, -2, 1, -1, 2, -2, 1, -2, 1, - -1, -2, -2, -2, -2, -2, 0, -1, 2, 0, - 0, 2, 2, 1, 0, 1, -2, -1, 0, -1, - 1, 1, -2, 1, -1, 1, 2, 0, 0, -2, - -1, 0, -2, -2, 1, 2, 1, -1, -1, 1, - -1, 0, -2, 1, 1, 1, -1, 2, -2, 2, - 1, 1, -2, 2, 0, 0, -1, -2, -1, 2, - 2, 1, -2, -2, 2, 1, -1, -2, 1, 0, - 1, 2, 0, 2, 1, 0, 0, -1, 0, 1, - -2, -1, 1, 2, 1, -1, 2, 1, 2, -2, - 2, 1, 1, -1, -2, -1, -1, -1, -1, 2}, - std::vector{ - -2, 1, -2, 2, -2, -1, 2, 1, 2, -2, - 0, 1, -2, 2, 0, -2, 0, 0, 0, 2}, - std::vector{ - -1, -0.757812, -0.960938, 1, 1, 0, 0.960938, 0.757812, -1, -1, - -0.59375, 1, 0.921875, -1, -1, 0.244141, -1, -1, -0.992188, 1, - -1, -1, -1, -0.953125, 1, -0.449219, 1, -0.957031, -1, 1, - 0.898438, 1, -1, 1, -1, 1, 0.992188, 1, -1, -1, - -1, 1, -0.953125, 0.992188, -1, -1, 0.96875, -0.185547, -1, -0.757812, - -1, 1, 1, 0.863281, 1, 1, -1, -1, 1, -1, - -0.757812, -0.96875, -0.957031, 0.757812, -0.773438, -0.03125, 1, -1, -0.992188, -0.992188, - -1, 1, -1, -1, -1, 1, -0.960938, -1, -1, -1, - 0.0625, -1, 1, 0.214844, 1, -1, 1, -0.832031, -0.300781, 0.996094, - 0.757812, 1, -0.960938, -0.992188, -0.960938, -1, -0.960938, -1, -1, -1, - -0.757812, -1, 1, -1, -1, -1, 1, -1, -1, -1, - -1, 1, -1, -1, -1, 1, 1, -1, -1, -1, - -1, 0.757812, -0.992188, 1, -1, 1, 0.960938, -0.757812, -1, -1, - 1, -0.652344, -1, -1, 0.515625, -1, 1, -0.984375, 0.945312, -0.835938, - -1, 1, -1, -0.785156, -0.992188, -1, -0.300781, -1, 1, -1, - 1, 0, 1, -1, -1, 0.78125, 1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, 1, -1, 0.949219, -1, - 1, -1, 1, 1, 0.835938, -0.992188, -1, -1, 1, -1, - -1, 1, -1, -1, -0.859375, -1, 1, 0.03125, 1, -0.996094, - -1, 1, 1, 1, 1, 1, -0.757812, 0.960938, 0.992188, -1, - -1, -1, 0, 1, -1, 1, -1, -1, -1, -1, - -0.757812, 0, 1, 1, 1, -1, 0.992188, -0.757812, -0.992188, 1, - 1, -1, -0.0078125, 0.976562, 1, 1, 1, -0.992188, -1, -0.9375, - 0, 1, 1, 1, -1, -1, 0.953125, 0.734375, -1, -0.992188, - -1, -1, -1, 0.976562, -0.984375, 0.992188, 0.875, -1, 1, -1, - -0.734375, -1, 0.984375, 1, 1, -0.996094, -0.703125, 1, -1, 1, - 1, 1, 0.960938, 1, -1, 0.992188, -0.0625, 0, -1, 0.785156, - 1, 1, -1, -1, -1, 1, 1, -1, 0.925781, -1, - 1, -1, -1, 0.820312, 1, -1, -1, -1, 1, -1, - -0.960938, -1, 1, -1, 1, -0.757812, 0.757812, 1, 1, 0.960938, - -0.992188, 0.992188, 1, -0.960938, -1, -1, -1, -1, -1, 1, - -1, -1, -1, 1, 0.96875, 0.992188, 1, 0.96875, -0.734375, -1, - 1, -1, 1, -0.914062, 1, -1, -0.486328, -1, 1, 1, - 1, 1, -0.996094, 1, -1, -1, 1, 0.785156, 1, -1, - 1, 1, -0.996094, -0.652344, -0.914062, -1, 0.976562, -0.507812, 1, -1, - -1, 0.976562, -1, 0.980469, 1, 0.410156, 0.996094, -1, -1, 0.96875, - 0.914062, -1, 1, -0.984375, 1, 1, -1, 0.757812, 1, 1, - 1, -1, -0.53125, 1, -1, -0.882812, 0.523438, -1, -0.632812, 1, - 1, 0, -0.757812, -0.992188, -0.960938, -1, 1, 1, -0.992188, -0.960938, - 1, -1, 1, 1, 1, -1, -1, -1, 1, -1, - -0.992188, -1, 1, -1, 1, -1, 1, -1, 1, 1, - 0.992188, 1, -1, 1, -0.757812, 1, 1, 0.757812, 1, -1, - -0.9375, 1, 1, -1, -0.976562, -1, -0.460938, -1, 1, -0.984375, - -1, -0.6875, -1, -1, -0.929688, -0.992188, 1, -1, 0.914062, -1, - -1, 1, -1, 0.976562, -1, 1, -1, 1, -0.914062, -1, - -0.460938, 1, -0.996094, -1, -0.992188, 1, -1, -1, 0.244141, -1, - -0.992188, 0.765625, 1, 0.992188, -1, -1, 0.992188, 1, 1, 0.960938, - 0.984375, 1, 1, -1, 1, -0.984375, 1, -1, 1, -1, - -0.460938, -1, 1, -1, 1, 0.964844, -1, -1, 1, -1, - -1, -0.992188, -1, 1, 0, -0.757812, 0.960938, 1, -1, 1}, - std::vector{ - -1, 1, -0.953125, 0.992188, -1, -1, 0.96875, -0.185547, -1, -0.757812, - -1, 1, 1, 0.863281, 1, 1, -1, -1, 1, -1, - -1, 1, -1, -0.785156, -0.992188, -1, -0.300781, -1, 1, -1, - 1, 0, 1, -1, -1, 0.78125, 1, -1, 1, -1, - -1, -1, -1, 0.976562, -0.984375, 0.992188, 0.875, -1, 1, -1, - -0.734375, -1, 0.984375, 1, 1, -0.996094, -0.703125, 1, -1, 1, - 1, 1, -0.996094, -0.652344, -0.914062, -1, 0.976562, -0.507812, 1, -1, - -1, 0.976562, -1, 0.980469, 1, 0.410156, 0.996094, -1, -1, 0.96875, - -1, 1, -1, 0.976562, -1, 1, -1, 1, -0.914062, -1, - -0.460938, 1, -0.996094, -1, -0.992188, 1, -1, -1, 0.244141, -1}), + -1, -0.757812, -0.960938, 1, 1, 0, 0.960938, 0.757812, -1, + -1, -0.59375, 1, 0.921875, -1, -1, 0.244141, -1, -1, + -0.992188, 1, -1, -1, -1, -0.953125, 1, -0.449219, 1, + -0.957031, -1, 1, 0.898438, 1, -1, 1, -1, 1, + 0.992188, 1, -1, -1, -1, 1, -0.953125, 0.992188, -1, + -1, 0.96875, -0.185547, -1, -0.757812, -1, 1, 1, 0.863281, + 1, 1, -1, -1, 1, -1, -0.757812, -0.96875, -0.957031, + 0.757812, -0.773438, -0.03125, 1, -1, -0.992188, -0.992188, -1, 1, + -1, -1, -1, 1, -0.960938, -1, -1, -1, 0.0625, + -1, 1, 0.214844, 1, -1, 1, -0.832031, -0.300781, 0.996094, + 0.757812, 1, -0.960938, -0.992188, -0.960938, -1, -0.960938, -1, -1, + -1, -0.757812, -1, 1, -1, -1, -1, 1, -1, + -1, -1, -1, 1, -1, -1, -1, 1, 1, + -1, -1, -1, -1, 0.757812, -0.992188, 1, -1, 1, + 0.960938, -0.757812, -1, -1, 1, -0.652344, -1, -1, 0.515625, + -1, 1, -0.984375, 0.945312, -0.835938, -1, 1, -1, -0.785156, + -0.992188, -1, -0.300781, -1, 1, -1, 1, 0, 1, + -1, -1, 0.78125, 1, -1, 1, -1, -1, 1, + -1, -1, -1, -1, 1, -1, 0.949219, -1, 1, + -1, 1, 1, 0.835938, -0.992188, -1, -1, 1, -1, + -1, 1, -1, -1, -0.859375, -1, 1, 0.03125, 1, + -0.996094, -1, 1, 1, 1, 1, 1, -0.757812, 0.960938, + 0.992188, -1, -1, -1, 0, 1, -1, 1, -1, + -1, -1, -1, -0.757812, 0, 1, 1, 1, -1, + 0.992188, -0.757812, -0.992188, 1, 1, -1, -0.0078125, 0.976562, 1, + 1, 1, -0.992188, -1, -0.9375, 0, 1, 1, 1, + -1, -1, 0.953125, 0.734375, -1, -0.992188, -1, -1, -1, + 0.976562, -0.984375, 0.992188, 0.875, -1, 1, -1, -0.734375, -1, + 0.984375, 1, 1, -0.996094, -0.703125, 1, -1, 1, 1, + 1, 0.960938, 1, -1, 0.992188, -0.0625, 0, -1, 0.785156, + 1, 1, -1, -1, -1, 1, 1, -1, 0.925781, + -1, 1, -1, -1, 0.820312, 1, -1, -1, -1, + 1, -1, -0.960938, -1, 1, -1, 1, -0.757812, 0.757812, + 1, 1, 0.960938, -0.992188, 0.992188, 1, -0.960938, -1, -1, + -1, -1, -1, 1, -1, -1, -1, 1, 0.96875, + 0.992188, 1, 0.96875, -0.734375, -1, 1, -1, 1, -0.914062, + 1, -1, -0.486328, -1, 1, 1, 1, 1, -0.996094, + 1, -1, -1, 1, 0.785156, 1, -1, 1, 1, + -0.996094, -0.652344, -0.914062, -1, 0.976562, -0.507812, 1, -1, -1, + 0.976562, -1, 0.980469, 1, 0.410156, 0.996094, -1, -1, 0.96875, + 0.914062, -1, 1, -0.984375, 1, 1, -1, 0.757812, 1, + 1, 1, -1, -0.53125, 1, -1, -0.882812, 0.523438, -1, + -0.632812, 1, 1, 0, -0.757812, -0.992188, -0.960938, -1, 1, + 1, -0.992188, -0.960938, 1, -1, 1, 1, 1, -1, + -1, -1, 1, -1, -0.992188, -1, 1, -1, 1, + -1, 1, -1, 1, 1, 0.992188, 1, -1, 1, + -0.757812, 1, 1, 0.757812, 1, -1, -0.9375, 1, 1, + -1, -0.976562, -1, -0.460938, -1, 1, -0.984375, -1, -0.6875, + -1, -1, -0.929688, -0.992188, 1, -1, 0.914062, -1, -1, + 1, -1, 0.976562, -1, 1, -1, 1, -0.914062, -1, + -0.460938, 1, -0.996094, -1, -0.992188, 1, -1, -1, 0.244141, + -1, -0.992188, 0.765625, 1, 0.992188, -1, -1, 0.992188, 1, + 1, 0.960938, 0.984375, 1, 1, -1, 1, -0.984375, 1, + -1, 1, -1, -0.460938, -1, 1, -1, 1, 0.964844, + -1, -1, 1, -1, -1, -0.992188, -1, 1, 0, + -0.757812, 0.960938, 1, -1, 1}, + std::vector{-1, 1, -0.953125, 0.992188, -1, -1, 0.96875, -0.185547, + -1, -0.757812, -1, 1, 1, 0.863281, 1, 1, + -1, -1, 1, -1, -1, 1, -1, -0.785156, + -0.992188, -1, -0.300781, -1, 1, -1, 1, 0, + 1, -1, -1, 0.78125, 1, -1, 1, -1, + -1, -1, -1, 0.976562, -0.984375, 0.992188, 0.875, -1, + 1, -1, -0.734375, -1, 0.984375, 1, 1, -0.996094, + -0.703125, 1, -1, 1, 1, 1, -0.996094, -0.652344, + -0.914062, -1, 0.976562, -0.507812, 1, -1, -1, 0.976562, + -1, 0.980469, 1, 0.410156, 0.996094, -1, -1, 0.96875, + -1, 1, -1, 0.976562, -1, 1, -1, 1, + -0.914062, -1, -0.460938, 1, -0.996094, -1, -0.992188, 1, + -1, -1, 0.244141, -1}), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -1030,7 +1060,9 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_RNNSequence_With_Hardcoded_Refs, ReferenceRNNSequenceTest, - testing::ValuesIn(generateCombinedParams()), ReferenceRNNSequenceTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_RNNSequence_With_Hardcoded_Refs, + ReferenceRNNSequenceTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceRNNSequenceTest::getTestCaseName); -} // namespace \ No newline at end of file +} // namespace \ No newline at end of file diff --git a/src/plugins/template/tests/functional/op_reference/roi_align.cpp b/src/plugins/template/tests/functional/op_reference/roi_align.cpp index d27fec9377aa16..ede8f75ace3c04 100644 --- a/src/plugins/template/tests/functional/op_reference/roi_align.cpp +++ b/src/plugins/template/tests/functional/op_reference/roi_align.cpp @@ -4,12 +4,12 @@ #include -#include "openvino/opsets/opset9.hpp" -#include "openvino/opsets/opset5.hpp" -#include "openvino/opsets/opset4.hpp" -#include "openvino/opsets/opset3.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset3.hpp" +#include "openvino/opsets/opset4.hpp" +#include "openvino/opsets/opset5.hpp" +#include "openvino/opsets/opset9.hpp" using namespace reference_tests; using namespace ov; @@ -17,11 +17,17 @@ using namespace ov; namespace { struct ROIAlignParams { template - ROIAlignParams(const PartialShape& pShape, const element::Type& iType, const std::vector& iValues, + ROIAlignParams(const PartialShape& pShape, + const element::Type& iType, + const std::vector& iValues, const reference_tests::Tensor& expectedFeatureMap, - const reference_tests::Tensor& coords, const reference_tests::Tensor& roiIdx, - const int32_t pooledH, const int32_t pooledW, - const float spatialScale, const int32_t poolingRatio, const std::string& poolingMode, + const reference_tests::Tensor& coords, + const reference_tests::Tensor& roiIdx, + const int32_t pooledH, + const int32_t pooledW, + const float spatialScale, + const int32_t poolingRatio, + const std::string& poolingMode, const std::string& testcaseName) : pShape(pShape), iType(iType), @@ -52,12 +58,19 @@ struct ROIAlignParams { struct ROIAlignV9Params { template - ROIAlignV9Params(const PartialShape& pShape, const element::Type& iType, const std::vector& iValues, - const reference_tests::Tensor& expectedFeatureMap, - const reference_tests::Tensor& coords, const reference_tests::Tensor& roiIdx, - const int32_t pooledH, const int32_t pooledW, - const float spatialScale, const int32_t poolingRatio, const std::string& poolingMode, - const std::string& alignedMode, const std::string& testcaseName) + ROIAlignV9Params(const PartialShape& pShape, + const element::Type& iType, + const std::vector& iValues, + const reference_tests::Tensor& expectedFeatureMap, + const reference_tests::Tensor& coords, + const reference_tests::Tensor& roiIdx, + const int32_t pooledH, + const int32_t pooledW, + const float spatialScale, + const int32_t poolingRatio, + const std::string& poolingMode, + const std::string& alignedMode, + const std::string& testcaseName) : pShape(pShape), iType(iType), featureMap(CreateTensor(iType, iValues)), @@ -121,8 +134,10 @@ class ReferenceROIAlignTest : public testing::TestWithParam, pub private: static std::shared_ptr CreateFunction(const ROIAlignParams& params) { const auto featureMap = std::make_shared(params.iType, params.pShape); - const auto coords = std::make_shared(params.coords.type, params.coords.shape, params.coords.data.data()); - const auto roisIdx = std::make_shared(params.roiIdx.type, params.roiIdx.shape, params.roiIdx.data.data()); + const auto coords = + std::make_shared(params.coords.type, params.coords.shape, params.coords.data.data()); + const auto roisIdx = + std::make_shared(params.roiIdx.type, params.roiIdx.shape, params.roiIdx.data.data()); const auto roi_align = std::make_shared(featureMap, coords, roisIdx, @@ -171,8 +186,10 @@ class ReferenceROIAlignV9Test : public testing::TestWithParam, private: static std::shared_ptr CreateFunction(const ROIAlignV9Params& params) { const auto featureMap = std::make_shared(params.iType, params.pShape); - const auto coords = std::make_shared(params.coords.type, params.coords.shape, params.coords.data.data()); - const auto roisIdx = std::make_shared(params.roiIdx.type, params.roiIdx.shape, params.roiIdx.data.data()); + const auto coords = + std::make_shared(params.coords.type, params.coords.shape, params.coords.data.data()); + const auto roisIdx = + std::make_shared(params.roiIdx.type, params.roiIdx.shape, params.roiIdx.data.data()); const auto pooling_mode = EnumNames::as_enum(params.poolingMode); const auto aligned_mode = EnumNames::as_enum(params.alignedMode); const auto roi_align = std::make_shared(featureMap, @@ -201,64 +218,74 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - ROIAlignParams(PartialShape{2, 1, 8, 8}, ET, - std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, - 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, 1, 7, 4, 7, 10, 8, - 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, - 2, 4, 8, 5, 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, - 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, 8, 8, - 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, - 4, 9, 2, 4, 5, 5, 3, 1, 1, 6, 8, 0, 5, 5, 10, 8, - 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, - reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3, 3.75, 4.75, 5, 3, 5.5, 2.75, 3.75}), - reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), - reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), - 2, 2, 1, 2, "avg", "roi_align_avg"), + std::vector params{ + ROIAlignParams( + PartialShape{2, 1, 8, 8}, + ET, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, + 1, 7, 4, 7, 10, 8, 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, 2, 4, 8, 5, + 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, + 8, 8, 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, 4, 9, 2, 4, 5, 5, 3, 1, + 1, 6, 8, 0, 5, 5, 10, 8, 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, + reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3, 3.75, 4.75, 5, 3, 5.5, 2.75, 3.75}), + reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), + reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), + 2, + 2, + 1, + 2, + "avg", + "roi_align_avg"), - ROIAlignParams(PartialShape{2, 1, 8, 8}, ET, - std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, - 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, 1, 7, 4, 7, 10, 8, - 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, - 2, 4, 8, 5, 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, - 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, 8, 8, - 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, - 4, 9, 2, 4, 5, 5, 3, 1, 1, 6, 8, 0, 5, 5, 10, 8, - 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, - reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{4.375, 4.9375, 5.6875, 5.625, 4.625, 7.125, 3.3125, 4.3125}), - reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), - reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), - 2, 2, 1, 2, "max", "roi_align_max"), + ROIAlignParams( + PartialShape{2, 1, 8, 8}, + ET, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, + 1, 7, 4, 7, 10, 8, 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, 2, 4, 8, 5, + 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, + 8, 8, 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, 4, 9, 2, 4, 5, 5, 3, 1, + 1, 6, 8, 0, 5, 5, 10, 8, 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, + reference_tests::Tensor(ET, + {2, 1, 2, 2}, + std::vector{4.375, 4.9375, 5.6875, 5.625, 4.625, 7.125, 3.3125, 4.3125}), + reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), + reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), + 2, + 2, + 1, + 2, + "max", + "roi_align_max"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), + const std::vector> generatedParams{ + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), }; std::vector combinedParams; @@ -272,78 +299,95 @@ template std::vector generateParamsV9() { using T = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - ROIAlignV9Params(PartialShape{2, 1, 8, 8}, ET, - std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, - 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, 1, 7, 4, 7, 10, 8, - 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, - 2, 4, 8, 5, 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, - 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, 8, 8, - 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, - 4, 9, 2, 4, 5, 5, 3, 1, 1, 6, 8, 0, 5, 5, 10, 8, - 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, - reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3, 3.75, 4.75, 5, 3, 5.5, 2.75, 3.75}), - reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), - reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), - 2, 2, 1, 2, "avg", "asymmetric", "roi_align_v9_avg_asymmetric"), + std::vector params{ + ROIAlignV9Params( + PartialShape{2, 1, 8, 8}, + ET, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, + 1, 7, 4, 7, 10, 8, 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, 2, 4, 8, 5, + 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, + 8, 8, 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, 4, 9, 2, 4, 5, 5, 3, 1, + 1, 6, 8, 0, 5, 5, 10, 8, 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, + reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3, 3.75, 4.75, 5, 3, 5.5, 2.75, 3.75}), + reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), + reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), + 2, + 2, + 1, + 2, + "avg", + "asymmetric", + "roi_align_v9_avg_asymmetric"), - ROIAlignV9Params(PartialShape{2, 1, 8, 8}, ET, - std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, - 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, 1, 7, 4, 7, 10, 8, - 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, - 2, 4, 8, 5, 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, - 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, 8, 8, - 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, - 4, 9, 2, 4, 5, 5, 3, 1, 1, 6, 8, 0, 5, 5, 10, 8, - 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, - reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3.14, 2.16, 2.86, 5.03, 1.83, 5.84, 2.77, 3.44}), - reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), - reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), - 2, 2, 1, 2, "avg", "half_pixel_for_nn", "roi_align_v9_avg_half_pixel_for_nn"), + ROIAlignV9Params( + PartialShape{2, 1, 8, 8}, + ET, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, + 1, 7, 4, 7, 10, 8, 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, 2, 4, 8, 5, + 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, + 8, 8, 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, 4, 9, 2, 4, 5, 5, 3, 1, + 1, 6, 8, 0, 5, 5, 10, 8, 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, + reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3.14, 2.16, 2.86, 5.03, 1.83, 5.84, 2.77, 3.44}), + reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), + reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), + 2, + 2, + 1, + 2, + "avg", + "half_pixel_for_nn", + "roi_align_v9_avg_half_pixel_for_nn"), - ROIAlignV9Params(PartialShape{2, 1, 8, 8}, ET, - std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, - 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, 1, 7, 4, 7, 10, 8, - 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, - 2, 4, 8, 5, 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, - 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, 8, 8, - 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, - 4, 9, 2, 4, 5, 5, 3, 1, 1, 6, 8, 0, 5, 5, 10, 8, - 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, - reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{4.375, 4.9375, 5.6875, 5.625, 4.625, 7.125, 3.3125, 4.3125}), - reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), - reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), - 2, 2, 1, 2, "max", "half_pixel", "roi_align_v9_max_half_pixel"), + ROIAlignV9Params( + PartialShape{2, 1, 8, 8}, + ET, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, + 1, 7, 4, 7, 10, 8, 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, 2, 4, 8, 5, + 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, + 8, 8, 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, 4, 9, 2, 4, 5, 5, 3, 1, + 1, 6, 8, 0, 5, 5, 10, 8, 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, + reference_tests::Tensor(ET, + {2, 1, 2, 2}, + std::vector{4.375, 4.9375, 5.6875, 5.625, 4.625, 7.125, 3.3125, 4.3125}), + reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), + reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), + 2, + 2, + 1, + 2, + "max", + "half_pixel", + "roi_align_v9_max_half_pixel"), }; return params; } std::vector generateCombinedParamsV9() { - const std::vector> generatedParams { - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), + const std::vector> generatedParams{ + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), }; std::vector combinedParams; @@ -353,9 +397,13 @@ std::vector generateCombinedParamsV9() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ROIAlign_With_Hardcoded_Refs, ReferenceROIAlignTest, - testing::ValuesIn(generateCombinedParams()), ReferenceROIAlignTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ROIAlign_With_Hardcoded_Refs, + ReferenceROIAlignTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceROIAlignTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_ROIAlignV9_With_Hardcoded_Refs, ReferenceROIAlignV9Test, - testing::ValuesIn(generateCombinedParamsV9()), ReferenceROIAlignV9Test::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ROIAlignV9_With_Hardcoded_Refs, + ReferenceROIAlignV9Test, + testing::ValuesIn(generateCombinedParamsV9()), + ReferenceROIAlignV9Test::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/roi_pooling.cpp b/src/plugins/template/tests/functional/op_reference/roi_pooling.cpp index de1f4c1b81d1be..cce7a1dd4eca8c 100644 --- a/src/plugins/template/tests/functional/op_reference/roi_pooling.cpp +++ b/src/plugins/template/tests/functional/op_reference/roi_pooling.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/roi_pooling.hpp" + #include -#include "openvino/op/roi_pooling.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -12,13 +13,30 @@ using namespace reference_tests; struct ROIPoolingParams { template - ROIPoolingParams(const size_t iH, const size_t iW, const size_t ch, const size_t rois, - const size_t oH, const size_t oW, const float sS, const std::string mode, - const ov::element::Type& type, const std::vector& inputValues, - const std::vector& proposalValues, const std::vector& outputValues) - : inputH(iH), inputW(iW), channelCount(ch), roiCount(rois), outputH(oH), outputW(oW), spatialScale(sS), - poolingMode(mode), dataType(type), featureMap(CreateTensor(type, inputValues)), - proposal(CreateTensor(type, proposalValues)), refData(CreateTensor(type, outputValues)) {} + ROIPoolingParams(const size_t iH, + const size_t iW, + const size_t ch, + const size_t rois, + const size_t oH, + const size_t oW, + const float sS, + const std::string mode, + const ov::element::Type& type, + const std::vector& inputValues, + const std::vector& proposalValues, + const std::vector& outputValues) + : inputH(iH), + inputW(iW), + channelCount(ch), + roiCount(rois), + outputH(oH), + outputW(oW), + spatialScale(sS), + poolingMode(mode), + dataType(type), + featureMap(CreateTensor(type, inputValues)), + proposal(CreateTensor(type, proposalValues)), + refData(CreateTensor(type, outputValues)) {} size_t inputH; size_t inputW; size_t channelCount; @@ -33,7 +51,7 @@ struct ROIPoolingParams { ov::Tensor refData; public: - template + template inline static std::vector increasinglyFilledBlob(size_t size) { std::vector inputValues; T one = 1; @@ -42,7 +60,7 @@ struct ROIPoolingParams { } return inputValues; } - template + template inline static std::vector equallyFilledBlob(size_t size, T value) { std::vector inputValues; for (size_t i = 0; i < size; i++) { @@ -56,8 +74,15 @@ class ReferenceRoiPoolingLayerTest : public testing::TestWithParam CreateFunction(const size_t i_h, const size_t i_w, const size_t ch, const size_t roi_count, - const size_t o_h, const size_t o_w, const float spat_scale, const std::string mode, - const ov::element::Type& type) { + static std::shared_ptr CreateFunction(const size_t i_h, + const size_t i_w, + const size_t ch, + const size_t roi_count, + const size_t o_h, + const size_t o_w, + const float spat_scale, + const std::string mode, + const ov::element::Type& type) { Shape feat_map_shape{1, ch, i_h, i_w}; Shape rois_shape{roi_count, 5}; Shape pooled_shape{o_h, o_w}; @@ -96,126 +127,209 @@ TEST_P(ReferenceRoiPoolingLayerTest, CompareWithHardcodedRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_ROIPooling_With_Hardcoded_Refs, ReferenceRoiPoolingLayerTest, - ::testing::Values( - // fp32 - // roi_pooling_1x1_max - ROIPoolingParams(6, 6, // iH, iW - 3, 3, // channels, rois - 1, 1, // oH, oW - 1.f, "max", // scale, mode - element::f32, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, - std::vector {2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), - // roi_pooling_2x2_max - ROIPoolingParams(6, 6, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "max", // scale, mode - element::f32, ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), - std::vector {0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, - std::vector {1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), - // roi_pooling_1x1_bilinear - ROIPoolingParams(6, 6, // iH, iW - 3, 2, // channels, rois - 1, 1, // oH, oW - 1.f, "bilinear", // scale, mode - element::f32, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, - std::vector {1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), - // roi_pooling_2x2_bilinear - ROIPoolingParams(8, 8, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "bilinear", // scale, mode - element::f32, ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), - std::vector {0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, - std::vector {1.225f, 1.645f, 4.585f, 5.005f, - 1.225f, 1.645f, 4.585f, 5.005f, - 1.225f, 1.645f, 4.585f, 5.005f}), - // roi_pooling_2x2_bilinear_border_proposal - ROIPoolingParams(50, 50, // iH, iW - 1, 1, // channels, rois - 4, 4, // oH, oW - 1.f, "bilinear", // scale, mode - element::f32, ROIPoolingParams::equallyFilledBlob(1 * 50 * 50, 1), - std::vector {0.f, 0.f, 0.248046786f, 0.471333951f, 1.f}, - std::vector(16, 1.f)), + smoke_ROIPooling_With_Hardcoded_Refs, + ReferenceRoiPoolingLayerTest, + ::testing::Values( + // fp32 + // roi_pooling_1x1_max + ROIPoolingParams(6, + 6, // iH, iW + 3, + 3, // channels, rois + 1, + 1, // oH, oW + 1.f, + "max", // scale, mode + element::f32, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, + std::vector{2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), + // roi_pooling_2x2_max + ROIPoolingParams(6, + 6, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "max", // scale, mode + element::f32, + ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), + std::vector{0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, + std::vector{1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), + // roi_pooling_1x1_bilinear + ROIPoolingParams(6, + 6, // iH, iW + 3, + 2, // channels, rois + 1, + 1, // oH, oW + 1.f, + "bilinear", // scale, mode + element::f32, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, + std::vector{1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), + // roi_pooling_2x2_bilinear + ROIPoolingParams( + 8, + 8, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "bilinear", // scale, mode + element::f32, + ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), + std::vector< + float>{0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, + std::vector< + float>{1.225f, 1.645f, 4.585f, 5.005f, 1.225f, 1.645f, 4.585f, 5.005f, 1.225f, 1.645f, 4.585f, 5.005f}), + // roi_pooling_2x2_bilinear_border_proposal + ROIPoolingParams(50, + 50, // iH, iW + 1, + 1, // channels, rois + 4, + 4, // oH, oW + 1.f, + "bilinear", // scale, mode + element::f32, + ROIPoolingParams::equallyFilledBlob(1 * 50 * 50, 1), + std::vector{0.f, 0.f, 0.248046786f, 0.471333951f, 1.f}, + std::vector(16, 1.f)), - // bf16 - // roi_pooling_1x1_max - ROIPoolingParams(6, 6, // iH, iW - 3, 3, // channels, rois - 1, 1, // oH, oW - 1.f, "max", // scale, mode - element::bf16, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, - std::vector {2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), - // roi_pooling_2x2_max - ROIPoolingParams(6, 6, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "max", // scale, mode - element::bf16, ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), - std::vector {0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, - std::vector {1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), - // roi_pooling_1x1_bilinear - ROIPoolingParams(6, 6, // iH, iW - 3, 2, // channels, rois - 1, 1, // oH, oW - 1.f, "bilinear", // scale, mode - element::bf16, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, - std::vector {1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), - // roi_pooling_2x2_bilinear - ROIPoolingParams(8, 8, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "bilinear", // scale, mode - element::bf16, ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), - std::vector {0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, - std::vector {1.225f, 1.645f, 4.585f, 4.937f, - 1.225f, 1.645f, 4.585f, 4.937f, - 1.225f, 1.645f, 4.585f, 4.937f}), - // fp16 - // roi_pooling_1x1_max - ROIPoolingParams(6, 6, // iH, iW - 3, 3, // channels, rois - 1, 1, // oH, oW - 1.f, "max", // scale, mode - element::f16, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, - std::vector {2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), - // roi_pooling_2x2_max - ROIPoolingParams(6, 6, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "max", // scale, mode - element::f16, ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), - std::vector {0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, - std::vector {1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), - // roi_pooling_1x1_bilinear - ROIPoolingParams(6, 6, // iH, iW - 3, 2, // channels, rois - 1, 1, // oH, oW - 1.f, "bilinear", // scale, mode - element::f16, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, - std::vector {1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), - // roi_pooling_2x2_bilinear - ROIPoolingParams(8, 8, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "bilinear", // scale, mode - element::f16, ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), - std::vector {0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, - std::vector {1.225f, 1.645f, 4.585f, 5.005f, - 1.225f, 1.645f, 4.585f, 5.005f, - 1.225f, 1.645f, 4.585f, 5.005f})), - ReferenceRoiPoolingLayerTest::getTestCaseName); + // bf16 + // roi_pooling_1x1_max + ROIPoolingParams(6, + 6, // iH, iW + 3, + 3, // channels, rois + 1, + 1, // oH, oW + 1.f, + "max", // scale, mode + element::bf16, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, + std::vector{2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), + // roi_pooling_2x2_max + ROIPoolingParams(6, + 6, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "max", // scale, mode + element::bf16, + ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), + std::vector{0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, + std::vector{1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), + // roi_pooling_1x1_bilinear + ROIPoolingParams(6, + 6, // iH, iW + 3, + 2, // channels, rois + 1, + 1, // oH, oW + 1.f, + "bilinear", // scale, mode + element::bf16, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, + std::vector{1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), + // roi_pooling_2x2_bilinear + ROIPoolingParams( + 8, + 8, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "bilinear", // scale, mode + element::bf16, + ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), + std::vector< + bfloat16>{0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, + std::vector{1.225f, + 1.645f, + 4.585f, + 4.937f, + 1.225f, + 1.645f, + 4.585f, + 4.937f, + 1.225f, + 1.645f, + 4.585f, + 4.937f}), + // fp16 + // roi_pooling_1x1_max + ROIPoolingParams(6, + 6, // iH, iW + 3, + 3, // channels, rois + 1, + 1, // oH, oW + 1.f, + "max", // scale, mode + element::f16, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, + std::vector{2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), + // roi_pooling_2x2_max + ROIPoolingParams(6, + 6, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "max", // scale, mode + element::f16, + ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), + std::vector{0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, + std::vector{1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), + // roi_pooling_1x1_bilinear + ROIPoolingParams(6, + 6, // iH, iW + 3, + 2, // channels, rois + 1, + 1, // oH, oW + 1.f, + "bilinear", // scale, mode + element::f16, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, + std::vector{1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), + // roi_pooling_2x2_bilinear + ROIPoolingParams( + 8, + 8, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "bilinear", // scale, mode + element::f16, + ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), + std::vector< + float16>{0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, + std::vector{1.225f, + 1.645f, + 4.585f, + 5.005f, + 1.225f, + 1.645f, + 4.585f, + 5.005f, + 1.225f, + 1.645f, + 4.585f, + 5.005f})), + ReferenceRoiPoolingLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/roll.cpp b/src/plugins/template/tests/functional/op_reference/roll.cpp index d275b15f6f5916..b9d2b54f5debb0 100644 --- a/src/plugins/template/tests/functional/op_reference/roll.cpp +++ b/src/plugins/template/tests/functional/op_reference/roll.cpp @@ -4,19 +4,25 @@ #include +#include "base_reference_test.hpp" #include "openvino/opsets/opset1.hpp" #include "openvino/opsets/opset7.hpp" -#include "base_reference_test.hpp" using namespace reference_tests; using namespace ov; namespace { struct RollParams { - RollParams(const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& shiftTensor, const reference_tests::Tensor& axesTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), shiftTensor(shiftTensor), axesTensor(axesTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + RollParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& shiftTensor, + const reference_tests::Tensor& axesTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + shiftTensor(shiftTensor), + axesTensor(axesTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor shiftTensor; @@ -63,7 +69,7 @@ class ReferenceRollLayerTest : public testing::TestWithParam, public params.axesTensor.shape, params.axesTensor.data.data()); const auto roll = std::make_shared(data, shift, axes); - return std::make_shared(NodeVector {roll}, ParameterVector {data}); + return std::make_shared(NodeVector{roll}, ParameterVector{data}); } }; @@ -74,117 +80,135 @@ TEST_P(ReferenceRollLayerTest, CompareWithRefs) { template std::vector generateRollParams() { using T = typename element_type_traits::value_type; - std::vector rollParams { + std::vector rollParams{ // roll_repeated_axes - RollParams( - reference_tests::Tensor({4, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor({3}, element::i64, std::vector{1, 2, 1}), - reference_tests::Tensor({3}, element::i64, std::vector{0, 1, 0}), - reference_tests::Tensor({4, 3}, IN_ET, std::vector{8, 9, 7, 11, 12, 10, 2, 3, 1, 5, 6, 4}), - "roll_repeated_axes"), + RollParams(reference_tests::Tensor({4, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor({3}, element::i64, std::vector{1, 2, 1}), + reference_tests::Tensor({3}, element::i64, std::vector{0, 1, 0}), + reference_tests::Tensor({4, 3}, IN_ET, std::vector{8, 9, 7, 11, 12, 10, 2, 3, 1, 5, 6, 4}), + "roll_repeated_axes"), // roll_negative_axes RollParams( - reference_tests::Tensor({4, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({3}, element::i64, std::vector{2, -1, -7}), reference_tests::Tensor({3}, element::i64, std::vector{-1, -1, -2}), - reference_tests::Tensor({4, 2, 3}, IN_ET, std::vector{6, 4, 5, 3, 1, 2, 12, 10, 11, 9, 7, 8, 18, 16, 17, 15, 13, 14, 24, 22, 23, 21, 19, 20}), + reference_tests::Tensor({4, 2, 3}, IN_ET, std::vector{6, 4, 5, 3, 1, 2, 12, 10, 11, 9, 7, 8, + 18, 16, 17, 15, 13, 14, 24, 22, 23, 21, 19, 20}), "roll_negative_axes"), }; return rollParams; } std::vector generateRollFloatingPointParams() { - std::vector rollParams { + std::vector rollParams{ // roll_2d_input - RollParams( - reference_tests::Tensor({4, 3}, element::f32, std::vector{50.2907, - 70.8054, - -68.3403, - 62.6444, - 4.9748, - -18.5551, - 40.5383, - -15.3859, - -4.5881, - -43.3479, - 94.1676, - -95.7097}), - reference_tests::Tensor({1}, element::i64, std::vector{1}), - reference_tests::Tensor({1}, element::i64, std::vector{0}), - reference_tests::Tensor({4, 3}, element::f32, std::vector{-43.3479, - 94.1676, - -95.7097, - 50.2907, - 70.8054, - -68.3403, - 62.6444, - 4.9748, - -18.5551, - 40.5383, - -15.3859, - -4.5881}), - "roll_2d_input"), + RollParams(reference_tests::Tensor({4, 3}, + element::f32, + std::vector{50.2907, + 70.8054, + -68.3403, + 62.6444, + 4.9748, + -18.5551, + 40.5383, + -15.3859, + -4.5881, + -43.3479, + 94.1676, + -95.7097}), + reference_tests::Tensor({1}, element::i64, std::vector{1}), + reference_tests::Tensor({1}, element::i64, std::vector{0}), + reference_tests::Tensor({4, 3}, + element::f32, + std::vector{-43.3479, + 94.1676, + -95.7097, + 50.2907, + 70.8054, + -68.3403, + 62.6444, + 4.9748, + -18.5551, + 40.5383, + -15.3859, + -4.5881}), + "roll_2d_input"), // roll_2d_input_negative_shift - RollParams( - reference_tests::Tensor({4, 3}, element::f32, std::vector{50.2907, - 70.8054, - -68.3403, - 62.6444, - 4.9748, - -18.5551, - 40.5383, - -15.3859, - -4.5881, - -43.3479, - 94.1676, - -95.7097}), - reference_tests::Tensor({2}, element::i64, std::vector{-1, 2}), - reference_tests::Tensor({2}, element::i64, std::vector{0, 1}), - reference_tests::Tensor({4, 3}, element::f32, std::vector{4.9748, - -18.5551, - 62.6444, - -15.3859, - -4.5881, - 40.5383, - 94.1676, - -95.7097, - -43.3479, - 70.8054, - -68.3403, - 50.2907}), - "roll_2d_input_negative_shift"), + RollParams(reference_tests::Tensor({4, 3}, + element::f32, + std::vector{50.2907, + 70.8054, + -68.3403, + 62.6444, + 4.9748, + -18.5551, + 40.5383, + -15.3859, + -4.5881, + -43.3479, + 94.1676, + -95.7097}), + reference_tests::Tensor({2}, element::i64, std::vector{-1, 2}), + reference_tests::Tensor({2}, element::i64, std::vector{0, 1}), + reference_tests::Tensor({4, 3}, + element::f32, + std::vector{4.9748, + -18.5551, + 62.6444, + -15.3859, + -4.5881, + 40.5383, + 94.1676, + -95.7097, + -43.3479, + 70.8054, + -68.3403, + 50.2907}), + "roll_2d_input_negative_shift"), // roll_3d_input RollParams( - reference_tests::Tensor({4, 2, 3}, element::f32, std::vector{94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023, 10.4662, 11.7532, - -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, 12.0827, 81.4669, - 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, 14.9372, -33.0825}), + reference_tests::Tensor( + {4, 2, 3}, + element::f32, + std::vector{94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023, 10.4662, 11.7532, + -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, 12.0827, 81.4669, + 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, 14.9372, -33.0825}), reference_tests::Tensor({3}, element::i64, std::vector{2, 1, 3}), reference_tests::Tensor({3}, element::i64, std::vector{0, 1, 2}), - reference_tests::Tensor({4, 2, 3}, element::f32, std::vector{81.4669, 19.5321, -8.9553, 1.9305, 13.8025, 12.0827, 62.7361, 14.9372, - -33.0825, -75.3226, 20.8033, 20.7660, -20.3640, 54.5372, -54.3023, 94.0773, - 33.0599, 58.1724, 56.4223, -95.3774, 8.8978, 10.4662, 11.7532, -11.7692}), + reference_tests::Tensor( + {4, 2, 3}, + element::f32, + std::vector{81.4669, 19.5321, -8.9553, 1.9305, 13.8025, 12.0827, 62.7361, 14.9372, + -33.0825, -75.3226, 20.8033, 20.7660, -20.3640, 54.5372, -54.3023, 94.0773, + 33.0599, 58.1724, 56.4223, -95.3774, 8.8978, 10.4662, 11.7532, -11.7692}), "roll_3d_input"), // roll_3d_input_negative_shift - RollParams( - reference_tests::Tensor({4, 2, 3}, element::f32, std::vector{94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023, 10.4662, 11.7532, - -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, 12.0827, 81.4669, - 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, 14.9372, -33.0825}), - reference_tests::Tensor({3}, element::i64, std::vector{-5, 1, 3}), - reference_tests::Tensor({3}, element::i64, std::vector{0, 1, 1}), - reference_tests::Tensor({4, 2, 3}, element::f32, std::vector{10.4662, 11.7532, -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, - 12.0827, 81.4669, 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, - 14.9372, -33.0825, 94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023}), - "roll_3d_input_negative_shift"), + RollParams(reference_tests::Tensor( + {4, 2, 3}, + element::f32, + std::vector{94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023, 10.4662, 11.7532, + -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, 12.0827, 81.4669, + 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, 14.9372, -33.0825}), + reference_tests::Tensor({3}, element::i64, std::vector{-5, 1, 3}), + reference_tests::Tensor({3}, element::i64, std::vector{0, 1, 1}), + reference_tests::Tensor( + {4, 2, 3}, + element::f32, + std::vector{10.4662, 11.7532, -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, + 12.0827, 81.4669, 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, + 14.9372, -33.0825, 94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023}), + "roll_3d_input_negative_shift"), }; return rollParams; } std::vector generateRollCombinedParams() { - const std::vector> rollTypeParams { + const std::vector> rollTypeParams{ generateRollParams(), generateRollParams(), generateRollParams(), @@ -207,6 +231,8 @@ std::vector generateRollCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Roll_With_Hardcoded_Refs, ReferenceRollLayerTest, - testing::ValuesIn(generateRollCombinedParams()), ReferenceRollLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Roll_With_Hardcoded_Refs, + ReferenceRollLayerTest, + testing::ValuesIn(generateRollCombinedParams()), + ReferenceRollLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/round.cpp b/src/plugins/template/tests/functional/op_reference/round.cpp index 2b01faf9487d80..cb20868e575db9 100644 --- a/src/plugins/template/tests/functional/op_reference/round.cpp +++ b/src/plugins/template/tests/functional/op_reference/round.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/round.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/round.hpp" using namespace ov; using namespace reference_tests; @@ -13,7 +15,10 @@ namespace { struct RoundParams { template - RoundParams(const PartialShape& shape, const element::Type& iType, const std::vector& iValues, const std::vector& oValues) + RoundParams(const PartialShape& shape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -25,7 +30,7 @@ struct RoundParams { element::Type outType; ov::Tensor inputData; ov::Tensor refData; - }; +}; class ReferenceRoundHalfToEvenLayerTest : public testing::TestWithParam, public CommonReferenceTest { public: @@ -46,8 +51,8 @@ class ReferenceRoundHalfToEvenLayerTest : public testing::TestWithParam CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto round = std::make_shared(in, op::v5::Round::RoundMode::HALF_TO_EVEN); return std::make_shared(NodeVector{round}, ParameterVector{in}); @@ -73,8 +78,8 @@ class ReferenceRoundHalfAwayFromZeroLayerTest : public testing::TestWithParam CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto round = std::make_shared(in, op::v5::Round::RoundMode::HALF_AWAY_FROM_ZERO); return std::make_shared(NodeVector{round}, ParameterVector{in}); @@ -93,12 +98,10 @@ template std::vector generateParamsForRoundHalfToEven() { using T = typename element_type_traits::value_type; - std::vector params{ - RoundParams(ov::PartialShape{5}, - IN_ET, - std::vector{0.9f, 2.5f, 2.3f, 1.5f, -4.5f}, - std::vector{1.0f, 2.0f, 2.0f, 2.0f, -4.0f}) - }; + std::vector params{RoundParams(ov::PartialShape{5}, + IN_ET, + std::vector{0.9f, 2.5f, 2.3f, 1.5f, -4.5f}, + std::vector{1.0f, 2.0f, 2.0f, 2.0f, -4.0f})}; return params; } @@ -106,12 +109,11 @@ template std::vector generateParamsForRound2D() { using T = typename element_type_traits::value_type; - std::vector params{ - RoundParams(ov::PartialShape{15}, - IN_ET, - std::vector{0.1f, 0.5f, 0.9f, 1.2f, 1.5f, 1.8f, 2.3f, 2.5f, 2.7f, -1.1f, -1.5f, -1.9f, -2.2f, -2.5f, -2.8f}, - std::vector{0.f, 0.f, 1.f, 1.f, 2.f, 2.f, 2.f, 2.f, 3.f, -1.f, -2.f, -2.f, -2.f, -2.f, -3.f}) - }; + std::vector params{RoundParams( + ov::PartialShape{15}, + IN_ET, + std::vector{0.1f, 0.5f, 0.9f, 1.2f, 1.5f, 1.8f, 2.3f, 2.5f, 2.7f, -1.1f, -1.5f, -1.9f, -2.2f, -2.5f, -2.8f}, + std::vector{0.f, 0.f, 1.f, 1.f, 2.f, 2.f, 2.f, 2.f, 3.f, -1.f, -2.f, -2.f, -2.f, -2.f, -3.f})}; return params; } @@ -119,11 +121,10 @@ template std::vector generateParamsForRoundInt64() { using T = typename element_type_traits::value_type; - std::vector params{ - RoundParams(ov::PartialShape{3}, - IN_ET, - std::vector{0, 1, 0x4000000000000001}, - std::vector{0, 1, 0x4000000000000001})}; + std::vector params{RoundParams(ov::PartialShape{3}, + IN_ET, + std::vector{0, 1, 0x4000000000000001}, + std::vector{0, 1, 0x4000000000000001})}; return params; } @@ -132,10 +133,7 @@ std::vector generateParamsForRoundInt() { using T = typename element_type_traits::value_type; std::vector params{ - RoundParams(ov::PartialShape{3}, - IN_ET, - std::vector{0, 1, 0x40}, - std::vector{0, 1, 0x40})}; + RoundParams(ov::PartialShape{3}, IN_ET, std::vector{0, 1, 0x40}, std::vector{0, 1, 0x40})}; return params; } @@ -143,11 +141,10 @@ template std::vector generateParamsForRoundAwayFromZero() { using T = typename element_type_traits::value_type; - std::vector params{ - RoundParams(ov::PartialShape{5}, - IN_ET, - std::vector{0.9f, 2.5f, 2.3f, 1.5f, -4.5f}, - std::vector{1.0f, 3.0f, 2.0f, 2.0f, -5.0f})}; + std::vector params{RoundParams(ov::PartialShape{5}, + IN_ET, + std::vector{0.9f, 2.5f, 2.3f, 1.5f, -4.5f}, + std::vector{1.0f, 3.0f, 2.0f, 2.0f, -5.0f})}; return params; } @@ -168,11 +165,9 @@ std::vector generateCombinedParamsForRoundHalfToEven() { } std::vector generateCombinedParamsForRound2D() { - const std::vector> allTypeParams{ - generateParamsForRound2D(), - generateParamsForRound2D(), - generateParamsForRound2D() - }; + const std::vector> allTypeParams{generateParamsForRound2D(), + generateParamsForRound2D(), + generateParamsForRound2D()}; std::vector combinedParams; @@ -184,16 +179,14 @@ std::vector generateCombinedParamsForRound2D() { } std::vector generateCombinedParamsForRoundInt() { - const std::vector> allTypeParams{ - generateParamsForRoundInt64(), - generateParamsForRoundInt(), - generateParamsForRoundInt(), - generateParamsForRoundInt(), - generateParamsForRoundInt(), - generateParamsForRoundInt(), - generateParamsForRoundInt(), - generateParamsForRoundInt() - }; + const std::vector> allTypeParams{generateParamsForRoundInt64(), + generateParamsForRoundInt(), + generateParamsForRoundInt(), + generateParamsForRoundInt(), + generateParamsForRoundInt(), + generateParamsForRoundInt(), + generateParamsForRoundInt(), + generateParamsForRoundInt()}; std::vector combinedParams; @@ -208,8 +201,7 @@ std::vector generateCombinedParamsForRoundAwayFromZero() { const std::vector> allTypeParams{ generateParamsForRoundAwayFromZero(), generateParamsForRoundAwayFromZero(), - generateParamsForRoundAwayFromZero() - }; + generateParamsForRoundAwayFromZero()}; std::vector combinedParams; @@ -220,28 +212,24 @@ std::vector generateCombinedParamsForRoundAwayFromZero() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Round_Half_To_Even_With_Hardcoded_Refs, - ReferenceRoundHalfToEvenLayerTest, - ::testing::ValuesIn(generateCombinedParamsForRoundHalfToEven()), - ReferenceRoundHalfToEvenLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Round_2D_With_Hardcoded_Refs, - ReferenceRoundHalfToEvenLayerTest, - ::testing::ValuesIn(generateCombinedParamsForRound2D()), - ReferenceRoundHalfToEvenLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Round_Int_With_Hardcoded_Refs, - ReferenceRoundHalfToEvenLayerTest, - ::testing::ValuesIn(generateCombinedParamsForRoundInt()), - ReferenceRoundHalfToEvenLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Round_Away_From_Zero_With_Hardcoded_Refs, - ReferenceRoundHalfAwayFromZeroLayerTest, - ::testing::ValuesIn(generateCombinedParamsForRoundAwayFromZero()), - ReferenceRoundHalfAwayFromZeroLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Round_Half_To_Even_With_Hardcoded_Refs, + ReferenceRoundHalfToEvenLayerTest, + ::testing::ValuesIn(generateCombinedParamsForRoundHalfToEven()), + ReferenceRoundHalfToEvenLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Round_2D_With_Hardcoded_Refs, + ReferenceRoundHalfToEvenLayerTest, + ::testing::ValuesIn(generateCombinedParamsForRound2D()), + ReferenceRoundHalfToEvenLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Round_Int_With_Hardcoded_Refs, + ReferenceRoundHalfToEvenLayerTest, + ::testing::ValuesIn(generateCombinedParamsForRoundInt()), + ReferenceRoundHalfToEvenLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Round_Away_From_Zero_With_Hardcoded_Refs, + ReferenceRoundHalfAwayFromZeroLayerTest, + ::testing::ValuesIn(generateCombinedParamsForRoundAwayFromZero()), + ReferenceRoundHalfAwayFromZeroLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/scatter_elements_update.cpp b/src/plugins/template/tests/functional/op_reference/scatter_elements_update.cpp index 18d5103aaf420c..48db3024d0b45f 100644 --- a/src/plugins/template/tests/functional/op_reference/scatter_elements_update.cpp +++ b/src/plugins/template/tests/functional/op_reference/scatter_elements_update.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/scatter_elements_update.hpp" + #include -#include "openvino/op/scatter_elements_update.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -31,15 +32,12 @@ struct ScatterElementsUpdateParams { }; class ReferenceScatterElementsUpdateLayerTest : public testing::TestWithParam, - public CommonReferenceTest { + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.input.data, - params.indices.data, - params.updates.data, - params.axis.data}; + inputData = {params.input.data, params.indices.data, params.updates.data, params.axis.data}; refOutData = {params.expected.data}; } static std::string getTestCaseName(const testing::TestParamInfo& obj) { @@ -55,6 +53,7 @@ class ReferenceScatterElementsUpdateLayerTest : public testing::TestWithParam -#include "openvino/op/scatter_nd_update.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct ScatterNDUpdateParams { - ScatterNDUpdateParams(const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& indexTensor, const reference_tests::Tensor& updateTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), indexTensor(indexTensor), updateTensor(updateTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + ScatterNDUpdateParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& indexTensor, + const reference_tests::Tensor& updateTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + indexTensor(indexTensor), + updateTensor(updateTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor indexTensor; @@ -25,7 +32,8 @@ struct ScatterNDUpdateParams { std::string testcaseName; }; -class ReferenceScatterNDUpdateLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceScatterNDUpdateLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -75,7 +83,7 @@ template std::vector generateScatterNDUpdateParams() { using T = typename element_type_traits::value_type; using U = typename element_type_traits::value_type; - std::vector scatterParams { + std::vector scatterParams{ // scatter_nd_update_1x1 ScatterNDUpdateParams(reference_tests::Tensor({1}, IN_ET, std::vector{1}), reference_tests::Tensor({1}, IU_ET, std::vector{0}), @@ -95,46 +103,52 @@ std::vector generateScatterNDUpdateParams() { reference_tests::Tensor({2, 2}, IN_ET, std::vector{10, 2, 3, 40}), "scatter_nd_update_2x2_by_2"), // scatter_nd_update_3x3_by_1 - ScatterNDUpdateParams(reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 39}), - reference_tests::Tensor({2, 1}, IU_ET, std::vector{0, 2}), - reference_tests::Tensor({2, 3, 3}, IN_ET, std::vector{91, 92, 93, 94, 95, 96, 97, 98, 99, - 81, 82, 83, 84, 85, 86, 87, 88, 89}), - reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 92, 93, 94, 95, 96, 97, 98, 99, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 81, 82, 83, 84, 85, 86, 87, 88, 89}), - "scatter_nd_update_3x3_by_1"), + ScatterNDUpdateParams( + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 37, 38, 39}), + reference_tests::Tensor({2, 1}, IU_ET, std::vector{0, 2}), + reference_tests::Tensor( + {2, 3, 3}, + IN_ET, + std::vector{91, 92, 93, 94, 95, 96, 97, 98, 99, 81, 82, 83, 84, 85, 86, 87, 88, 89}), + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 92, 93, 94, 95, 96, 97, 98, 99, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 81, 82, 83, 84, 85, 86, 87, 88, 89}), + "scatter_nd_update_3x3_by_1"), // scatter_nd_update_3x3_by_2v2 - ScatterNDUpdateParams(reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 39}), - reference_tests::Tensor({2, 2, 3}, IU_ET, std::vector{0, 0, 0, 2, 2, 2, 1, 0, 0, 1, 2, 2}), - reference_tests::Tensor({2, 2}, IN_ET, std::vector{91, 92, 81, 82}), - reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 12, 13, 14, 15, 16, 17, 18, 19, - 81, 22, 23, 24, 25, 26, 27, 28, 82, - 31, 32, 33, 34, 35, 36, 37, 38, 92}), - "scatter_nd_update_3x3_by_2v2"), + ScatterNDUpdateParams( + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 37, 38, 39}), + reference_tests::Tensor({2, 2, 3}, IU_ET, std::vector{0, 0, 0, 2, 2, 2, 1, 0, 0, 1, 2, 2}), + reference_tests::Tensor({2, 2}, IN_ET, std::vector{91, 92, 81, 82}), + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 12, 13, 14, 15, 16, 17, 18, 19, + 81, 22, 23, 24, 25, 26, 27, 28, 82, + 31, 32, 33, 34, 35, 36, 37, 38, 92}), + "scatter_nd_update_3x3_by_2v2"), // scatter_nd_update_3x3_by_2 - ScatterNDUpdateParams(reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 39}), - reference_tests::Tensor({2, 2}, IU_ET, std::vector{0, 0, 2, 2}), - reference_tests::Tensor({2, 3}, IN_ET, std::vector{91, 92, 93, 87, 88, 89}), - reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 92, 93, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 87, 88, 89}), - "scatter_nd_update_3x3_by_2"), + ScatterNDUpdateParams( + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 37, 38, 39}), + reference_tests::Tensor({2, 2}, IU_ET, std::vector{0, 0, 2, 2}), + reference_tests::Tensor({2, 3}, IN_ET, std::vector{91, 92, 93, 87, 88, 89}), + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 92, 93, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 87, 88, 89}), + "scatter_nd_update_3x3_by_2"), // scatter_nd_update_3x3_by_3 - ScatterNDUpdateParams(reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 39}), - reference_tests::Tensor({2, 3}, IU_ET, std::vector{0, 0, 0, 2, 2, 2}), - reference_tests::Tensor({2}, IN_ET, std::vector{91, 99}), - reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 12, 13, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 99}), - "scatter_nd_update_3x3_by_3"), + ScatterNDUpdateParams( + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 37, 38, 39}), + reference_tests::Tensor({2, 3}, IU_ET, std::vector{0, 0, 0, 2, 2, 2}), + reference_tests::Tensor({2}, IN_ET, std::vector{91, 99}), + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 12, 13, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 37, 38, 99}), + "scatter_nd_update_3x3_by_3"), // scatter_nd_update_1d_from_examples ScatterNDUpdateParams(reference_tests::Tensor({8}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), reference_tests::Tensor({4, 1}, IU_ET, std::vector{4, 3, 1, 7}), @@ -142,37 +156,41 @@ std::vector generateScatterNDUpdateParams() { reference_tests::Tensor({8}, IN_ET, std::vector{1, 11, 3, 10, 9, 6, 7, 12}), "scatter_nd_update_1d_from_examples"), // scatter_nd_update_4x4_shape_from_examples - ScatterNDUpdateParams(reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), - reference_tests::Tensor({2, 1}, IU_ET, std::vector{0, 2}), - reference_tests::Tensor({2, 4, 4}, IN_ET, std::vector{5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, - 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4}), - reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, - 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), - "scatter_nd_update_4x4_shape_from_examples"), + ScatterNDUpdateParams( + reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, + 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, + 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, + 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), + reference_tests::Tensor({2, 1}, IU_ET, std::vector{0, 2}), + reference_tests::Tensor({2, 4, 4}, IN_ET, std::vector{5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, + 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4}), + reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, + 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, + 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), + "scatter_nd_update_4x4_shape_from_examples"), // scatter_nd_update_4x4_v2 - ScatterNDUpdateParams(reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), - reference_tests::Tensor({2, 2, 2}, IU_ET, std::vector{0, 0, 2, 2, 1, 1, 3, 3}), - reference_tests::Tensor({2, 2, 4}, IN_ET, std::vector{15, 16, 17, 18, 25, 26, 27, 28, - 35, 36, 37, 38, 45, 46, 47, 58}), - reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{15, 16, 17, 18, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 1, 2, 3, 4, 35, 36, 37, 38, 8, 7, 6, 5, 4, 3, 2, 1, - 8, 7, 6, 5, 4, 3, 2, 1, 25, 26, 27, 28, 5, 6, 7, 8, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 45, 46, 47, 58}), - "scatter_nd_update_4x4_v2"), + ScatterNDUpdateParams( + reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, + 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, + 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, + 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), + reference_tests::Tensor({2, 2, 2}, IU_ET, std::vector{0, 0, 2, 2, 1, 1, 3, 3}), + reference_tests::Tensor({2, 2, 4}, + IN_ET, + std::vector{15, 16, 17, 18, 25, 26, 27, 28, 35, 36, 37, 38, 45, 46, 47, 58}), + reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{15, 16, 17, 18, 5, 6, 7, 8, 8, 7, 6, 5, 4, + 3, 2, 1, 1, 2, 3, 4, 35, 36, 37, 38, 8, 7, + 6, 5, 4, 3, 2, 1, 8, 7, 6, 5, 4, 3, 2, + 1, 25, 26, 27, 28, 5, 6, 7, 8, 8, 7, 6, 5, + 4, 3, 2, 1, 1, 2, 3, 4, 45, 46, 47, 58}), + "scatter_nd_update_4x4_v2"), }; return scatterParams; } std::vector generateScatterNDUpdateCombinedParams() { - const std::vector> scatterTypeParams { + const std::vector> scatterTypeParams{ generateScatterNDUpdateParams(), generateScatterNDUpdateParams(), generateScatterNDUpdateParams(), @@ -196,11 +214,12 @@ std::vector generateScatterNDUpdateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ScatterNDUpdate_With_Hardcoded_Refs, ReferenceScatterNDUpdateLayerTest, - testing::ValuesIn(generateScatterNDUpdateCombinedParams()), ReferenceScatterNDUpdateLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ScatterNDUpdate_With_Hardcoded_Refs, + ReferenceScatterNDUpdateLayerTest, + testing::ValuesIn(generateScatterNDUpdateCombinedParams()), + ReferenceScatterNDUpdateLayerTest::getTestCaseName); -class ReferenceScatterNDUpdateLayerNegativeTest : public ReferenceScatterNDUpdateLayerTest{ -}; +class ReferenceScatterNDUpdateLayerNegativeTest : public ReferenceScatterNDUpdateLayerTest {}; TEST_P(ReferenceScatterNDUpdateLayerNegativeTest, CompareWithRefsNegative) { LoadNetwork(); @@ -219,7 +238,7 @@ template std::vector generateScatterNDUpdateNegativeParams() { using T = typename element_type_traits::value_type; using U = typename element_type_traits::value_type; - std::vector scatterParams { + std::vector scatterParams{ // scatter_nd_update_2x3_with_out_of_bounds_index ScatterNDUpdateParams(reference_tests::Tensor({2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6}), reference_tests::Tensor({1, 2}, IU_ET, std::vector{1, 3}), @@ -231,9 +250,8 @@ std::vector generateScatterNDUpdateNegativeParams() { } std::vector generateScatterNDUpdateCombinedNegativeParams() { - const std::vector> scatterTypeParams { - generateScatterNDUpdateNegativeParams() - }; + const std::vector> scatterTypeParams{ + generateScatterNDUpdateNegativeParams()}; std::vector combinedParams; for (const auto& params : scatterTypeParams) { @@ -242,9 +260,9 @@ std::vector generateScatterNDUpdateCombinedNegativeParams return combinedParams; } +INSTANTIATE_TEST_SUITE_P(smoke_ScatterNDUpdate_With_Hardcoded_Refs, + ReferenceScatterNDUpdateLayerNegativeTest, + testing::ValuesIn(generateScatterNDUpdateCombinedNegativeParams()), + ReferenceScatterNDUpdateLayerNegativeTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_ScatterNDUpdate_With_Hardcoded_Refs, ReferenceScatterNDUpdateLayerNegativeTest, - testing::ValuesIn(generateScatterNDUpdateCombinedNegativeParams()), ReferenceScatterNDUpdateLayerNegativeTest::getTestCaseName); - - -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/scatter_update.cpp b/src/plugins/template/tests/functional/op_reference/scatter_update.cpp index 47d17750c0822b..c3f210d7bfdd41 100644 --- a/src/plugins/template/tests/functional/op_reference/scatter_update.cpp +++ b/src/plugins/template/tests/functional/op_reference/scatter_update.cpp @@ -2,13 +2,13 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/scatter_update.hpp" #include #include "base_reference_test.hpp" #include "gtest/gtest.h" #include "openvino/op/parameter.hpp" -#include "openvino/op/scatter_update.hpp" using namespace reference_tests; @@ -34,7 +34,8 @@ struct Builder : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder, expected); }; -class ReferenceScatterUpdate6LayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceScatterUpdate6LayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -73,7 +74,8 @@ class ReferenceScatterUpdate6LayerTest : public testing::TestWithParam(numeric_type, updates_shape); const auto axis = std::make_shared(axis_type, axis_shape); const auto scatter_update = std::make_shared(data, indices, updates, axis); - return std::make_shared(ov::NodeVector {scatter_update}, ov::ParameterVector {data, indices, updates, axis}); + return std::make_shared(ov::NodeVector{scatter_update}, + ov::ParameterVector{data, indices, updates, axis}); } }; @@ -82,855 +84,386 @@ TEST_P(ReferenceScatterUpdate6LayerTest, ScatterUpdateWithHardcodedRefs) { } template -std::vector generateScatterUpdate3Params(const ov::element::Type& numeric_type, const ov::element::Type& integer_type) { +std::vector generateScatterUpdate3Params(const ov::element::Type& numeric_type, + const ov::element::Type& integer_type) { using N = typename ov::element_type_traits::value_type; using I = typename ov::element_type_traits::value_type; - std::vector ScatterUpdateParams { - Builder {} - .data({{3, 2, 2, 3}, numeric_type, std::vector { - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{2, 1}, integer_type, std::vector {0, 1}}) - .updates({{3, 3, 2, 2, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24, - 25, 26, - 27, 28, - 29, 30, - 31, 32, - 33, 34, - 35, 36, - 37, 38, - 39, 40, - 41, 42, - 43, 44, - 45, 46, - 47, 48, - 49, 50, - 51, 52, - 53, 54, - 55, 56, - 57, 58, - 59, 60, - 61, 62, - 63, 64, - 65, 66, - 67, 68, - 69, 70, - 71, 72}}) - .axis({{1}, integer_type, std::vector {2}}) - .expected({{3, 2, 2, 3}, numeric_type, std::vector { - 1, 2, 9, - 3, 4, 11, - 10, 17, 18, - 12, 19, 20, - 25, 26, 33, - 27, 28, 35, - 34, 41, 42, - 36, 43, 44, - 49, 50, 57, - 51, 52, 59, - 58, 65, 66, - 60, 67, 68}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{2}, integer_type, std::vector {1, 2}}) - .updates({{3, 2}, numeric_type, std::vector {1, 1, - 1, 2, - 2, 2}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {0, 1, 1, - 0, 1, 2, - 0, 2, 2}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{2}, integer_type, std::vector {1, 2}}) - .updates({{2, 3}, numeric_type, std::vector {1, 1, 1, - 2, 2, 2}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 3}, numeric_type, std::vector {0, 0, 0, - 1, 1, 1, - 2, 2, 2}}), - Builder {} - .data({{3, 4}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{2}, integer_type, std::vector {0, 2}}) - .updates({{3, 4}, numeric_type, std::vector {1, 2, 3, 7, - 4, 5, 6, 8, - 7, 8, 9, 10}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 4}, numeric_type, std::vector {1, 2, 3, 7, - 0, 0, 0, 0, - 4, 5, 6, 8}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{2}, integer_type, std::vector {0, 2}}) - .updates({{3, 5}, numeric_type, std::vector {1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {1, 0, 2, - 6, 0, 7, - 11, 0, 12}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 2}, integer_type, std::vector {1, 2}}) - .updates({{1, 2, 3}, numeric_type, std::vector {1, 2, 3, - 4, 5, 6}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 3}, numeric_type, std::vector {0, 0, 0, - 1, 2, 3, - 4, 5, 6}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 2}, integer_type, std::vector {1, 2}}) - .updates({{3, 1, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {0, 1, 2, - 0, 3, 4, - 0, 5, 6}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 2}, integer_type, std::vector {1, 2}}) - .updates({{4, 4, 4}, numeric_type, std::vector {1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {0, 1, 2, - 0, 17, 18, - 0, 33, 34}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 3}, integer_type, std::vector {0, 1, 2}}) - .updates({{4, 4, 4}, numeric_type, std::vector {1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {1, 2, 3, - 17, 18, 19, - 33, 34, 35}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 1}, integer_type, std::vector {2}}) - .updates({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {0, 0, 1, - 0, 0, 5, - 0, 0, 0}}), - Builder {} - .data({{3, 4}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{1, 4}, integer_type, std::vector {0, 1, 2, 3}}) - .updates({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 4}, numeric_type, std::vector {1, 2, 3, 4, - 5, 6, 7, 8, - 0, 0, 0, 0}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 3}, integer_type, std::vector {0, 1, 2}}) - .updates({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 3}, numeric_type, std::vector {1, 2, 0, - 3, 4, 0, - 5, 6, 0}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 3}, integer_type, std::vector {0, 1, 2}}) - .updates({{2, 2, 1}, numeric_type, std::vector {1, 2, - 3, 4}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 3}, numeric_type, std::vector {1, 0, 0, - 2, 0, 0, - 3, 0, 0}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 3}, integer_type, std::vector {0, 1, 2}}) - .updates({{1, 1, 1}, numeric_type, std::vector {1}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 3}, numeric_type, std::vector {1, 0, 0, - 0, 0, 0, - 0, 0, 0}}), - Builder {} - .data({{2, 2}, numeric_type, std::vector {0, 0, - 0, 0}}) - .indices({{2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{2, 2}, numeric_type, std::vector {1, 2, - 3, 4}}), - Builder {} - .data({{4, 4}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{4, 1}, integer_type, std::vector {0, 1, 2, 3}}) - .updates({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{4, 4}, numeric_type, std::vector {1, 2, 0, 0, - 3, 4, 0, 0, - 5, 6, 0, 0, - 7, 8, 0, 0}}), - Builder {} - .data({{2, 3, 4, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{3, 1}, integer_type, std::vector {0, 1, 2}}) - .updates({{3, 2, 3, 3, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24, - 25, 26, - 27, 28, - 29, 30, - 31, 32, - 33, 34, - 35, 36, - 37, 38, - 39, 40, - 41, 42, - 43, 44, - 45, 46, - 47, 48, - 49, 50, - 51, 52, - 53, 54, - 55, 56, - 57, 58, - 59, 60, - 61, 62, - 63, 64, - 65, 66, - 67, 68, - 69, 70, - 71, 72, - 73, 74, - 75, 76, - 77, 78, - 79, 80, - 81, 82, - 83, 84, - 85, 86, - 87, 88, - 89, 90, - 91, 92, - 93, 94, - 95, 96, - 97, 98, - 99, 100, - 101, 102, - 103, 104, - 105, 106, - 107, 108}}) - .axis({{1}, integer_type, std::vector {2}}) - .expected({{2, 3, 4, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 5, 6, - 0, 0, - 19, 20, - 21, 22, - 23, 24, - 0, 0, - 37, 38, - 39, 40, - 41, 42, - 0, 0, - 55, 56, - 57, 58, - 59, 60, - 0, 0, - 73, 74, - 75, 76, - 77, 78, - 0, 0, - 91, 92, - 93, 94, - 95, 96, - 0, 0}}), - Builder {} - .data({{1, 3, 2, 2}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 3}, integer_type, std::vector {2, 0, 1}}) - .updates({{1, 3, 2, 2, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{1, 3, 2, 2}, numeric_type, std::vector { - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 1, 2, - 3, 4}}), - Builder {} - .data({{2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{1, 2}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 13, 14, - 15, 16}}), - Builder {} - .data({{2, 2, 4}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{1, 2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 2, 1}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{2, 2, 2}, numeric_type, std::vector {1, 13, 0, 0, - 2, 14, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}), - Builder {} - .data({{2, 4, 2}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{1, 2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 2, 1}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{2, 4, 2}, numeric_type, std::vector {1, 13, - 2, 14, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}), - Builder {} - .data({{2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{2, 1}, integer_type, std::vector {1, 0}}) - .updates({{2, 2, 3, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {2}}) - .expected({{2, 2, 2}, numeric_type, std::vector { - 2, 1, - 8, 7, - // - 14, 13, - 20, 19}}), -Builder {} - .data({{2, 2, 4}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{1, 2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{2, 2, 4}, numeric_type, std::vector {1, 2, 13, 14, - 3, 4, 15, 16, - 0, 0, 0, 0, - 0, 0, 0, 0}}), + std::vector ScatterUpdateParams{ + Builder{} + .data({{3, 2, 2, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2, 1}, integer_type, std::vector{0, 1}}) + .updates({{3, 3, 2, 2, 2}, + numeric_type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72}}) + .axis({{1}, integer_type, std::vector{2}}) + .expected({{3, 2, 2, 3}, numeric_type, std::vector{1, 2, 9, 3, 4, 11, 10, 17, 18, 12, 19, 20, + 25, 26, 33, 27, 28, 35, 34, 41, 42, 36, 43, 44, + 49, 50, 57, 51, 52, 59, 58, 65, 66, 60, 67, 68}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{1, 2}}) + .updates({{3, 2}, numeric_type, std::vector{1, 1, 1, 2, 2, 2}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{0, 1, 1, 0, 1, 2, 0, 2, 2}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{1, 2}}) + .updates({{2, 3}, numeric_type, std::vector{1, 1, 1, 2, 2, 2}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 3}, numeric_type, std::vector{0, 0, 0, 1, 1, 1, 2, 2, 2}}), + Builder{} + .data({{3, 4}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{0, 2}}) + .updates({{3, 4}, numeric_type, std::vector{1, 2, 3, 7, 4, 5, 6, 8, 7, 8, 9, 10}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 4}, numeric_type, std::vector{1, 2, 3, 7, 0, 0, 0, 0, 4, 5, 6, 8}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{0, 2}}) + .updates({{3, 5}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{1, 0, 2, 6, 0, 7, 11, 0, 12}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2}, integer_type, std::vector{1, 2}}) + .updates({{1, 2, 3}, numeric_type, std::vector{1, 2, 3, 4, 5, 6}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 3}, numeric_type, std::vector{0, 0, 0, 1, 2, 3, 4, 5, 6}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2}, integer_type, std::vector{1, 2}}) + .updates({{3, 1, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{0, 1, 2, 0, 3, 4, 0, 5, 6}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2}, integer_type, std::vector{1, 2}}) + .updates({{4, 4, 4}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{0, 1, 2, 0, 17, 18, 0, 33, 34}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 3}, integer_type, std::vector{0, 1, 2}}) + .updates({{4, 4, 4}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{1, 2, 3, 17, 18, 19, 33, 34, 35}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 1}, integer_type, std::vector{2}}) + .updates({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{0, 0, 1, 0, 0, 5, 0, 0, 0}}), + Builder{} + .data({{3, 4}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 4}, integer_type, std::vector{0, 1, 2, 3}}) + .updates({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 4}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 3}, integer_type, std::vector{0, 1, 2}}) + .updates({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 3}, numeric_type, std::vector{1, 2, 0, 3, 4, 0, 5, 6, 0}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 3}, integer_type, std::vector{0, 1, 2}}) + .updates({{2, 2, 1}, numeric_type, std::vector{1, 2, 3, 4}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 3}, numeric_type, std::vector{1, 0, 0, 2, 0, 0, 3, 0, 0}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 3}, integer_type, std::vector{0, 1, 2}}) + .updates({{1, 1, 1}, numeric_type, std::vector{1}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 3}, numeric_type, std::vector{1, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .data({{2, 2}, numeric_type, std::vector{0, 0, 0, 0}}) + .indices({{2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{2, 2}, numeric_type, std::vector{1, 2, 3, 4}}), + Builder{} + .data({{4, 4}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{4, 1}, integer_type, std::vector{0, 1, 2, 3}}) + .updates({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{4, 4}, numeric_type, std::vector{1, 2, 0, 0, 3, 4, 0, 0, 5, 6, 0, 0, 7, 8, 0, 0}}), + Builder{} + .data({{2, 3, 4, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{3, 1}, integer_type, std::vector{0, 1, 2}}) + .updates({{3, 2, 3, 3, 2}, + numeric_type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108}}) + .axis({{1}, integer_type, std::vector{2}}) + .expected({{2, 3, 4, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 0, 0, 19, 20, 21, 22, + 23, 24, 0, 0, 37, 38, 39, 40, 41, 42, 0, 0, + 55, 56, 57, 58, 59, 60, 0, 0, 73, 74, 75, 76, + 77, 78, 0, 0, 91, 92, 93, 94, 95, 96, 0, 0}}), + Builder{} + .data({{1, 3, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 3}, integer_type, std::vector{2, 0, 1}}) + .updates({{1, 3, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{1, 3, 2, 2}, numeric_type, std::vector{5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4}}), + Builder{} + .data({{2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 13, 14, 15, 16}}), + Builder{} + .data({{2, 2, 4}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 2, 1}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{2, 2, 2}, numeric_type, std::vector{1, 13, 0, 0, 2, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .data({{2, 4, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 2, 1}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{2, 4, 2}, numeric_type, std::vector{1, 13, 2, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .data({{2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2, 1}, integer_type, std::vector{1, 0}}) + .updates({{2, 2, 3, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{2}}) + .expected({{2, 2, 2}, + numeric_type, + std::vector{2, + 1, + 8, + 7, + // + 14, + 13, + 20, + 19}}), + Builder{} + .data({{2, 2, 4}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{2, 2, 4}, numeric_type, std::vector{1, 2, 13, 14, 3, 4, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0}}), - Builder {} - .data({{3, 2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{2}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16}}) - .axis({{1}, integer_type, std::vector {3}}) - .expected({{3, 2, 2, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}), - Builder {} - .data({{5, 2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{2}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16}}) - .axis({{1}, integer_type, std::vector {2}}) - .expected({{5, 2, 2, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}), -Builder {} - .data({{5, 2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24, - 25, 26, - 27, 28, - 29, 30, - 31, 32}}) - .axis({{1}, integer_type, std::vector {2}}) - .expected({{5, 2, 2, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 9, 10, - 11, 12, - 17, 18, - 19, 20, - 25, 26, - 27, 28, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}})}; + Builder{} + .data({{3, 2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{0, 1}}) + .updates( + {{2, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}) + .axis({{1}, integer_type, std::vector{3}}) + .expected({{3, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .data({{5, 2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{0, 1}}) + .updates( + {{2, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}) + .axis({{1}, integer_type, std::vector{2}}) + .expected({{5, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .data({{5, 2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}}) + .axis({{1}, integer_type, std::vector{2}}) + .expected({{5, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 9, 10, 11, 12, 17, 18, 19, 20, 25, 26, + 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}})}; return ScatterUpdateParams; } template -std::vector generateScatterUpdate3ParamsNegativeAxis(const ov::element::Type& numeric_type, const ov::element::Type& integer_type) { +std::vector generateScatterUpdate3ParamsNegativeAxis(const ov::element::Type& numeric_type, + const ov::element::Type& integer_type) { using N = typename ov::element_type_traits::value_type; using I = typename ov::element_type_traits::value_type; - std::vector ScatterUpdateParams { - Builder {} - .data({{2, 2, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {-2}}) - .expected({{2, 2, 3}, numeric_type, std::vector {1, 2, 13, - 3, 4, 15, - 14, 0, 0, - 16, 0, 0}}), - Builder {} - .data({{2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{1, 2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {-1}}) - .expected({{2, 2, 2}, numeric_type, std::vector {1, 2, - 7, 8, - 13, 14, - 19, 20}}), - Builder {} - .data({{4, 2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{2}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16}}) - .axis({{1}, integer_type, std::vector {-3}}) - .expected({{4, 2, 2, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}})}; + std::vector ScatterUpdateParams{ + Builder{} + .data({{2, 2, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{-2}}) + .expected({{2, 2, 3}, numeric_type, std::vector{1, 2, 13, 3, 4, 15, 14, 0, 0, 16, 0, 0}}), + Builder{} + .data({{2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{-1}}) + .expected({{2, 2, 2}, numeric_type, std::vector{1, 2, 7, 8, 13, 14, 19, 20}}), + Builder{} + .data({{4, 2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{0, 1}}) + .updates( + {{2, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}) + .axis({{1}, integer_type, std::vector{-3}}) + .expected( + {{4, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}})}; return ScatterUpdateParams; } std::vector generateScatterUpdateCombinedParams() { - const std::vector> ScatterUpdateTypeParams { + const std::vector> ScatterUpdateTypeParams{ // f32 - generateScatterUpdate3Params(ov::element::f32, ov::element::i16), - generateScatterUpdate3Params(ov::element::f32, ov::element::i32), - generateScatterUpdate3Params(ov::element::f32, ov::element::i64), - generateScatterUpdate3Params(ov::element::f32, ov::element::u32), - generateScatterUpdate3Params(ov::element::f32, ov::element::u64), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i64), + generateScatterUpdate3Params(ov::element::f32, + ov::element::u32), + generateScatterUpdate3Params(ov::element::f32, + ov::element::u64), // f16 - generateScatterUpdate3Params(ov::element::f16, ov::element::i16), - generateScatterUpdate3Params(ov::element::f16, ov::element::i32), - generateScatterUpdate3Params(ov::element::f16, ov::element::i64), - generateScatterUpdate3Params(ov::element::f16, ov::element::u32), - generateScatterUpdate3Params(ov::element::f16, ov::element::u64), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i64), + generateScatterUpdate3Params(ov::element::f16, + ov::element::u32), + generateScatterUpdate3Params(ov::element::f16, + ov::element::u64), // i8 - generateScatterUpdate3Params(ov::element::i8, ov::element::i16), - generateScatterUpdate3Params(ov::element::i8, ov::element::i32), - generateScatterUpdate3Params(ov::element::i8, ov::element::i64), - generateScatterUpdate3Params(ov::element::i8, ov::element::u32), - generateScatterUpdate3Params(ov::element::i8, ov::element::u64), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i64), + generateScatterUpdate3Params(ov::element::i8, + ov::element::u32), + generateScatterUpdate3Params(ov::element::i8, + ov::element::u64), // i16 - generateScatterUpdate3Params(ov::element::i16, ov::element::i16), - generateScatterUpdate3Params(ov::element::i16, ov::element::i32), - generateScatterUpdate3Params(ov::element::i16, ov::element::i64), - generateScatterUpdate3Params(ov::element::i16, ov::element::u32), - generateScatterUpdate3Params(ov::element::i16, ov::element::u64), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i64), + generateScatterUpdate3Params(ov::element::i16, + ov::element::u32), + generateScatterUpdate3Params(ov::element::i16, + ov::element::u64), // i32 - generateScatterUpdate3Params(ov::element::i32, ov::element::i16), - generateScatterUpdate3Params(ov::element::i32, ov::element::i32), - generateScatterUpdate3Params(ov::element::i32, ov::element::i64), - generateScatterUpdate3Params(ov::element::i32, ov::element::u32), - generateScatterUpdate3Params(ov::element::i32, ov::element::u64), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i64), + generateScatterUpdate3Params(ov::element::i32, + ov::element::u32), + generateScatterUpdate3Params(ov::element::i32, + ov::element::u64), // i64 - generateScatterUpdate3Params(ov::element::i64, ov::element::i16), - generateScatterUpdate3Params(ov::element::i64, ov::element::i32), - generateScatterUpdate3Params(ov::element::i64, ov::element::i64), - generateScatterUpdate3Params(ov::element::i64, ov::element::u32), - generateScatterUpdate3Params(ov::element::i64, ov::element::u64), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i64), + generateScatterUpdate3Params(ov::element::i64, + ov::element::u32), + generateScatterUpdate3Params(ov::element::i64, + ov::element::u64), // u8 - generateScatterUpdate3Params(ov::element::u8, ov::element::i16), - generateScatterUpdate3Params(ov::element::u8, ov::element::i32), - generateScatterUpdate3Params(ov::element::u8, ov::element::i64), - generateScatterUpdate3Params(ov::element::u8, ov::element::u32), - generateScatterUpdate3Params(ov::element::u8, ov::element::u64), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i64), + generateScatterUpdate3Params(ov::element::u8, + ov::element::u32), + generateScatterUpdate3Params(ov::element::u8, + ov::element::u64), // u16 - generateScatterUpdate3Params(ov::element::u16, ov::element::i16), - generateScatterUpdate3Params(ov::element::u16, ov::element::i32), - generateScatterUpdate3Params(ov::element::u16, ov::element::i64), - generateScatterUpdate3Params(ov::element::u16, ov::element::u32), - generateScatterUpdate3Params(ov::element::u16, ov::element::u64), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i64), + generateScatterUpdate3Params(ov::element::u16, + ov::element::u32), + generateScatterUpdate3Params(ov::element::u16, + ov::element::u64), // u32 - generateScatterUpdate3Params(ov::element::u32, ov::element::i16), - generateScatterUpdate3Params(ov::element::u32, ov::element::i32), - generateScatterUpdate3Params(ov::element::u32, ov::element::i64), - generateScatterUpdate3Params(ov::element::u32, ov::element::u32), - generateScatterUpdate3Params(ov::element::u32, ov::element::u64), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i64), + generateScatterUpdate3Params(ov::element::u32, + ov::element::u32), + generateScatterUpdate3Params(ov::element::u32, + ov::element::u64), // u64 - generateScatterUpdate3Params(ov::element::u64, ov::element::i16), - generateScatterUpdate3Params(ov::element::u64, ov::element::i32), - generateScatterUpdate3Params(ov::element::u64, ov::element::i64), - generateScatterUpdate3Params(ov::element::u64, ov::element::u32), - generateScatterUpdate3Params(ov::element::u64, ov::element::u64), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i64), + generateScatterUpdate3Params(ov::element::u64, + ov::element::u32), + generateScatterUpdate3Params(ov::element::u64, + ov::element::u64), // bf16 - generateScatterUpdate3Params(ov::element::bf16, ov::element::i16), - generateScatterUpdate3Params(ov::element::bf16, ov::element::i32), - generateScatterUpdate3Params(ov::element::bf16, ov::element::i64), - generateScatterUpdate3Params(ov::element::bf16, ov::element::u32), - generateScatterUpdate3Params(ov::element::bf16, ov::element::u64)}; + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i64), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::u32), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::u64)}; std::vector combinedParams; for (const auto& params : ScatterUpdateTypeParams) { @@ -940,51 +473,84 @@ std::vector generateScatterUpdateCombinedParams() { } std::vector generateScatterUpdateNegativeAxisParams() { - const std::vector> ScatterUpdateTypeParams { + const std::vector> ScatterUpdateTypeParams{ // f32 - generateScatterUpdate3Params(ov::element::f32, ov::element::i16), - generateScatterUpdate3Params(ov::element::f32, ov::element::i32), - generateScatterUpdate3Params(ov::element::f32, ov::element::i64), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i64), // f16 - generateScatterUpdate3Params(ov::element::f16, ov::element::i16), - generateScatterUpdate3Params(ov::element::f16, ov::element::i32), - generateScatterUpdate3Params(ov::element::f16, ov::element::i64), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i64), // i8 - generateScatterUpdate3Params(ov::element::i8, ov::element::i16), - generateScatterUpdate3Params(ov::element::i8, ov::element::i32), - generateScatterUpdate3Params(ov::element::i8, ov::element::i64), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i64), // i16 - generateScatterUpdate3Params(ov::element::i16, ov::element::i16), - generateScatterUpdate3Params(ov::element::i16, ov::element::i32), - generateScatterUpdate3Params(ov::element::i16, ov::element::i64), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i64), // i32 - generateScatterUpdate3Params(ov::element::i32, ov::element::i16), - generateScatterUpdate3Params(ov::element::i32, ov::element::i32), - generateScatterUpdate3Params(ov::element::i32, ov::element::i64), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i64), // i64 - generateScatterUpdate3Params(ov::element::i64, ov::element::i16), - generateScatterUpdate3Params(ov::element::i64, ov::element::i32), - generateScatterUpdate3Params(ov::element::i64, ov::element::i64), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i64), // u8 - generateScatterUpdate3Params(ov::element::u8, ov::element::i16), - generateScatterUpdate3Params(ov::element::u8, ov::element::i32), - generateScatterUpdate3Params(ov::element::u8, ov::element::i64), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i64), // u16 - generateScatterUpdate3Params(ov::element::u16, ov::element::i16), - generateScatterUpdate3Params(ov::element::u16, ov::element::i32), - generateScatterUpdate3Params(ov::element::u16, ov::element::i64), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i64), // u32 - generateScatterUpdate3Params(ov::element::u32, ov::element::i16), - generateScatterUpdate3Params(ov::element::u32, ov::element::i32), - generateScatterUpdate3Params(ov::element::u32, ov::element::i64), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i64), // u64 - generateScatterUpdate3Params(ov::element::u64, ov::element::i16), - generateScatterUpdate3Params(ov::element::u64, ov::element::i32), - generateScatterUpdate3Params(ov::element::u64, ov::element::i64), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i64), // bf16 - generateScatterUpdate3Params(ov::element::bf16, ov::element::i16), - generateScatterUpdate3Params(ov::element::bf16, ov::element::i32), - generateScatterUpdate3Params(ov::element::bf16, ov::element::i64)}; + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i64)}; std::vector combinedParams; for (const auto& params : ScatterUpdateTypeParams) { @@ -992,11 +558,15 @@ std::vector generateScatterUpdateNegativeAxisParams() { } return combinedParams; } -} // namespace +} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_ScatterUpdate_With_Hardcoded_Refs, ReferenceScatterUpdate6LayerTest, - ::testing::ValuesIn(generateScatterUpdateCombinedParams()), ReferenceScatterUpdate6LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ScatterUpdate_With_Hardcoded_Refs, + ReferenceScatterUpdate6LayerTest, + ::testing::ValuesIn(generateScatterUpdateCombinedParams()), + ReferenceScatterUpdate6LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_ScatterUpdate_Negative_Axis_With_Hardcoded_Refs, ReferenceScatterUpdate6LayerTest, - ::testing::ValuesIn(generateScatterUpdateNegativeAxisParams()), ReferenceScatterUpdate6LayerTest::getTestCaseName); -} // namespace reference_tests +INSTANTIATE_TEST_SUITE_P(smoke_ScatterUpdate_Negative_Axis_With_Hardcoded_Refs, + ReferenceScatterUpdate6LayerTest, + ::testing::ValuesIn(generateScatterUpdateNegativeAxisParams()), + ReferenceScatterUpdate6LayerTest::getTestCaseName); +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/select.cpp b/src/plugins/template/tests/functional/op_reference/select.cpp index 4e8467fc839793..72971888f274ab 100644 --- a/src/plugins/template/tests/functional/op_reference/select.cpp +++ b/src/plugins/template/tests/functional/op_reference/select.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/select.hpp" + #include -#include "openvino/op/select.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,9 +13,15 @@ using namespace ov; struct SelectParams { template - SelectParams(const element::Type& data_type, const op::AutoBroadcastSpec& broadcast, const PartialShape& select_input_pshape, - const std::vector& select_input, const PartialShape& if_input_pshape, const std::vector& if_input, - const PartialShape& else_input_pshape, const std::vector& else_input, const std::vector& expected_output) + SelectParams(const element::Type& data_type, + const op::AutoBroadcastSpec& broadcast, + const PartialShape& select_input_pshape, + const std::vector& select_input, + const PartialShape& if_input_pshape, + const std::vector& if_input, + const PartialShape& else_input_pshape, + const std::vector& else_input, + const std::vector& expected_output) : data_type(data_type), broadcast(broadcast), select_input_pshape(select_input_pshape), @@ -40,7 +47,11 @@ class ReferenceSelectLayerTest : public testing::TestWithParam, pu public: void SetUp() override { auto params = GetParam(); - function = CreateFunction(params.data_type, params.broadcast, params.select_input_pshape, params.if_input_pshape, params.else_input_pshape); + function = CreateFunction(params.data_type, + params.broadcast, + params.select_input_pshape, + params.if_input_pshape, + params.else_input_pshape); inputData = {params.select_input, params.if_input, params.else_input}; refOutData = {params.expected_output}; } @@ -56,12 +67,16 @@ class ReferenceSelectLayerTest : public testing::TestWithParam, pu } private: - static std::shared_ptr CreateFunction(const element::Type& data_type, const op::AutoBroadcastSpec& broadcast, - const PartialShape& select_pshape, const PartialShape& if_pshape, const PartialShape& else_pshape) { + static std::shared_ptr CreateFunction(const element::Type& data_type, + const op::AutoBroadcastSpec& broadcast, + const PartialShape& select_pshape, + const PartialShape& if_pshape, + const PartialShape& else_pshape) { auto A = std::make_shared(element::boolean, select_pshape); auto B = std::make_shared(data_type, if_pshape); auto C = std::make_shared(data_type, else_pshape); - return std::make_shared(std::make_shared(A, B, C, broadcast), ParameterVector {A, B, C}); + return std::make_shared(std::make_shared(A, B, C, broadcast), + ParameterVector{A, B, C}); } }; @@ -69,66 +84,67 @@ TEST_P(ReferenceSelectLayerTest, CompareWithHardcodedRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_Select_With_Hardcoded_Refs, ReferenceSelectLayerTest, +INSTANTIATE_TEST_SUITE_P(smoke_Select_With_Hardcoded_Refs, + ReferenceSelectLayerTest, ::testing::Values( // fp32, no brodcasting - SelectParams(element::f32, // if/else/output data type - op::AutoBroadcastType::NONE, // broadcasting type - PartialShape {2, 2, 2}, // select shape - std::vector {0, 1, 1, 0, 0, 1, 0, 1}, // select data - PartialShape {2, 2, 2}, // if shape - std::vector {1, 2, 3, 4, 5, 6, 7, 8}, // if data - PartialShape {2, 2, 2}, // else shape - std::vector {11, 12, 13, 14, 15, 16, 17, 18}, // else data - std::vector {11, 2, 3, 14, 15, 6, 17, 8}), // expected output data + SelectParams(element::f32, // if/else/output data type + op::AutoBroadcastType::NONE, // broadcasting type + PartialShape{2, 2, 2}, // select shape + std::vector{0, 1, 1, 0, 0, 1, 0, 1}, // select data + PartialShape{2, 2, 2}, // if shape + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, // if data + PartialShape{2, 2, 2}, // else shape + std::vector{11, 12, 13, 14, 15, 16, 17, 18}, // else data + std::vector{11, 2, 3, 14, 15, 6, 17, 8}), // expected output data // i32, no brodcasting - SelectParams(element::i32, // if/else/output data type - op::AutoBroadcastType::NONE, // broadcasting type - PartialShape {2, 2, 2}, // select shape - std::vector {0, 1, 1, 0, 0, 1, 0, 1}, // select data - PartialShape {2, 2, 2}, // if shape - std::vector {1, 2, 3, 4, 5, 6, 7, 8}, // if data - PartialShape {2, 2, 2}, // else shape - std::vector {11, 12, 13, 14, 15, 16, 17, 18}, // else data - std::vector {11, 2, 3, 14, 15, 6, 17, 8}), // expected output data + SelectParams(element::i32, // if/else/output data type + op::AutoBroadcastType::NONE, // broadcasting type + PartialShape{2, 2, 2}, // select shape + std::vector{0, 1, 1, 0, 0, 1, 0, 1}, // select data + PartialShape{2, 2, 2}, // if shape + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, // if data + PartialShape{2, 2, 2}, // else shape + std::vector{11, 12, 13, 14, 15, 16, 17, 18}, // else data + std::vector{11, 2, 3, 14, 15, 6, 17, 8}), // expected output data // fp32, numpy brodcasting - SelectParams(element::f32, // if/else/output data type - op::AutoBroadcastType::NUMPY, // broadcasting type - PartialShape {4}, // select shape - std::vector {0, 1, 1, 0}, // select data - PartialShape {4}, // if shape - std::vector {1, 2, 3, 4}, // if data - PartialShape {2, 4}, // else shape - std::vector {11, 12, 13, 14, 15, 16, 17, 18}, // else data - std::vector {11, 2, 3, 14, 15, 2, 3, 18}), // expected output data + SelectParams(element::f32, // if/else/output data type + op::AutoBroadcastType::NUMPY, // broadcasting type + PartialShape{4}, // select shape + std::vector{0, 1, 1, 0}, // select data + PartialShape{4}, // if shape + std::vector{1, 2, 3, 4}, // if data + PartialShape{2, 4}, // else shape + std::vector{11, 12, 13, 14, 15, 16, 17, 18}, // else data + std::vector{11, 2, 3, 14, 15, 2, 3, 18}), // expected output data // i32, numpy brodcasting - SelectParams(element::i32, // if/else/output data type - op::AutoBroadcastType::NUMPY, // broadcasting type - PartialShape {4}, // select shape - std::vector {0, 1, 1, 0}, // select data - PartialShape {4}, // if shape - std::vector {1, 2, 3, 4}, // if data - PartialShape {2, 4}, // else shape - std::vector {11, 12, 13, 14, 15, 16, 17, 18}, // else data - std::vector {11, 2, 3, 14, 15, 2, 3, 18}), // expected output data + SelectParams(element::i32, // if/else/output data type + op::AutoBroadcastType::NUMPY, // broadcasting type + PartialShape{4}, // select shape + std::vector{0, 1, 1, 0}, // select data + PartialShape{4}, // if shape + std::vector{1, 2, 3, 4}, // if data + PartialShape{2, 4}, // else shape + std::vector{11, 12, 13, 14, 15, 16, 17, 18}, // else data + std::vector{11, 2, 3, 14, 15, 2, 3, 18}), // expected output data // fp32, pdpd brodcasting - SelectParams(element::f32, // if/else/output data type - {op::AutoBroadcastType::PDPD, -1}, // broadcasting type - PartialShape {2, 4}, // select shape - std::vector {0, 0, 0, 0, 0, 1, 1, 1}, // select data - PartialShape {2, 4}, // if shape - std::vector {1, 2, 3, 4, 5, 6, 7, 8}, // if data - PartialShape {4}, // else shape - std::vector {11, 12, 13, 14}, // else data - std::vector {11, 12, 13, 14, 11, 6, 7, 8}), // expected output data + SelectParams(element::f32, // if/else/output data type + {op::AutoBroadcastType::PDPD, -1}, // broadcasting type + PartialShape{2, 4}, // select shape + std::vector{0, 0, 0, 0, 0, 1, 1, 1}, // select data + PartialShape{2, 4}, // if shape + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, // if data + PartialShape{4}, // else shape + std::vector{11, 12, 13, 14}, // else data + std::vector{11, 12, 13, 14, 11, 6, 7, 8}), // expected output data // i32, pdpd brodcasting - SelectParams(element::i32, // if/else/output data type - {op::AutoBroadcastType::PDPD, -1}, // broadcasting type - PartialShape {2, 4}, // select shape - std::vector {0, 0, 0, 0, 0, 1, 1, 1}, // select data - PartialShape {2, 4}, // if shape - std::vector {1, 2, 3, 4, 5, 6, 7, 8}, // if data - PartialShape {4}, // else shape - std::vector {11, 12, 13, 14}, // else data - std::vector {11, 12, 13, 14, 11, 6, 7, 8})), // expected output data + SelectParams(element::i32, // if/else/output data type + {op::AutoBroadcastType::PDPD, -1}, // broadcasting type + PartialShape{2, 4}, // select shape + std::vector{0, 0, 0, 0, 0, 1, 1, 1}, // select data + PartialShape{2, 4}, // if shape + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, // if data + PartialShape{4}, // else shape + std::vector{11, 12, 13, 14}, // else data + std::vector{11, 12, 13, 14, 11, 6, 7, 8})), // expected output data ReferenceSelectLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/selu.cpp b/src/plugins/template/tests/functional/op_reference/selu.cpp index af3ced366ae525..5feecc16b82b23 100644 --- a/src/plugins/template/tests/functional/op_reference/selu.cpp +++ b/src/plugins/template/tests/functional/op_reference/selu.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/selu.hpp" + #include -#include "openvino/op/selu.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,10 +14,15 @@ using namespace ov; namespace { struct SeluParams { template - SeluParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const ov::Shape& alphaShape, const ov::Shape& lambdaShape, - const std::vector& alphaValues, const std::vector& lambdaValues, - const std::string& test_name = "") + SeluParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const ov::Shape& alphaShape, + const ov::Shape& lambdaShape, + const std::vector& alphaValues, + const std::vector& lambdaValues, + const std::string& test_name = "") : pshape(shape), inType(iType), outType(iType), @@ -71,7 +77,7 @@ class ReferenceSeluLayerTest : public testing::TestWithParam, public const auto alpha = std::make_shared(params.inType, params.alphaShape); const auto lambda = std::make_shared(params.inType, params.lambdaShape); const auto Selu = std::make_shared(in, alpha, lambda); - return std::make_shared(NodeVector {Selu}, ParameterVector {in, alpha, lambda}); + return std::make_shared(NodeVector{Selu}, ParameterVector{in, alpha, lambda}); } }; @@ -83,49 +89,45 @@ template std::vector generateSeluFloatParams() { using T = typename element_type_traits::value_type; - std::vector seluParams { - SeluParams(ov::PartialShape {2}, - IN_ET, - std::vector{-1, 3}, - std::vector{-1.1113307, 3.152103}, - ov::Shape {1}, - ov::Shape {1}, - std::vector{1.67326324}, - std::vector{1.05070098}), - SeluParams(ov::PartialShape {4}, - IN_ET, - std::vector{-1.0, 0.0, 1.0, 2.0}, - std::vector{-1.1113307, 0., 1.050701, 2.101402}, - ov::Shape {1}, - ov::Shape {1}, - std::vector{1.67326324}, - std::vector{1.05070098}), - SeluParams(ov::PartialShape {1}, - IN_ET, - std::vector{112.0}, - std::vector{117.67851}, - ov::Shape {1}, - ov::Shape {1}, - std::vector{1.67326324}, - std::vector{1.05070098}), - SeluParams(ov::PartialShape {3}, - IN_ET, - std::vector{-3.0, -12.5, -7.0}, - std::vector{-1.6705687, -1.7580928, -1.7564961}, - ov::Shape {1}, - ov::Shape {1}, - std::vector{1.67326324}, - std::vector{1.05070098}) - }; + std::vector seluParams{SeluParams(ov::PartialShape{2}, + IN_ET, + std::vector{-1, 3}, + std::vector{-1.1113307, 3.152103}, + ov::Shape{1}, + ov::Shape{1}, + std::vector{1.67326324}, + std::vector{1.05070098}), + SeluParams(ov::PartialShape{4}, + IN_ET, + std::vector{-1.0, 0.0, 1.0, 2.0}, + std::vector{-1.1113307, 0., 1.050701, 2.101402}, + ov::Shape{1}, + ov::Shape{1}, + std::vector{1.67326324}, + std::vector{1.05070098}), + SeluParams(ov::PartialShape{1}, + IN_ET, + std::vector{112.0}, + std::vector{117.67851}, + ov::Shape{1}, + ov::Shape{1}, + std::vector{1.67326324}, + std::vector{1.05070098}), + SeluParams(ov::PartialShape{3}, + IN_ET, + std::vector{-3.0, -12.5, -7.0}, + std::vector{-1.6705687, -1.7580928, -1.7564961}, + ov::Shape{1}, + ov::Shape{1}, + std::vector{1.67326324}, + std::vector{1.05070098})}; return seluParams; } std::vector generateSeluCombinedParams() { - const std::vector> seluTypeParams { - generateSeluFloatParams(), - generateSeluFloatParams(), - generateSeluFloatParams() - }; + const std::vector> seluTypeParams{generateSeluFloatParams(), + generateSeluFloatParams(), + generateSeluFloatParams()}; std::vector combinedParams; for (const auto& params : seluTypeParams) { @@ -134,7 +136,9 @@ std::vector generateSeluCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Selu_With_Hardcoded_Refs, ReferenceSeluLayerTest, - testing::ValuesIn(generateSeluCombinedParams()), ReferenceSeluLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Selu_With_Hardcoded_Refs, + ReferenceSeluLayerTest, + testing::ValuesIn(generateSeluCombinedParams()), + ReferenceSeluLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/shape_of.cpp b/src/plugins/template/tests/functional/op_reference/shape_of.cpp index 4068544f48c9a6..70069c2b9adec5 100644 --- a/src/plugins/template/tests/functional/op_reference/shape_of.cpp +++ b/src/plugins/template/tests/functional/op_reference/shape_of.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/shape_of.hpp" + #include -#include "openvino/op/shape_of.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; @@ -16,11 +17,11 @@ namespace { struct ShapeOfParamsV1 { template ShapeOfParamsV1(const Shape& input_shape, - const Shape& expected_shape, - const element::Type& input_type, - const element::Type& expected_type, - const std::vector& input_value, - const std::vector& expected_value) + const Shape& expected_shape, + const element::Type& input_type, + const element::Type& expected_type, + const std::vector& input_value, + const std::vector& expected_value) : m_input_shape(input_shape), m_expected_shape(expected_shape), m_input_type(input_type), @@ -139,19 +140,8 @@ std::vector generateParamsForShapeOfSmall_V1() { using T2 = typename element_type_traits::value_type; std::vector params{ - ShapeOfParamsV1(Shape{2}, - Shape{1}, - IT, - OT, - std::vector{2, 0}, - std::vector{2}), - ShapeOfParamsV1(Shape{2, 4}, - Shape{2}, - IT, - OT, - std::vector{2 * 4, 0}, - std::vector{2, 4}) - }; + ShapeOfParamsV1(Shape{2}, Shape{1}, IT, OT, std::vector{2, 0}, std::vector{2}), + ShapeOfParamsV1(Shape{2, 4}, Shape{2}, IT, OT, std::vector{2 * 4, 0}, std::vector{2, 4})}; return params; } @@ -162,18 +152,8 @@ std::vector generateParamsForShapeOfBig_V1() { using T2 = typename element_type_traits::value_type; std::vector params{ - ShapeOfParamsV1(Shape{2}, - Shape{1}, - IT, - OT, - std::vector{2, 0}, - std::vector{2}), - ShapeOfParamsV1(Shape{2, 4}, - Shape{2}, - IT, - OT, - std::vector{2 * 4, 0}, - std::vector{2, 4}), + ShapeOfParamsV1(Shape{2}, Shape{1}, IT, OT, std::vector{2, 0}, std::vector{2}), + ShapeOfParamsV1(Shape{2, 4}, Shape{2}, IT, OT, std::vector{2 * 4, 0}, std::vector{2, 4}), ShapeOfParamsV1(Shape{2, 4, 8, 16, 32}, Shape{5}, IT, @@ -190,24 +170,22 @@ std::vector generateParamsForShapeOfSmall_V3() { using T2 = typename element_type_traits::value_type; using T3 = typename element_type_traits::value_type; - std::vector params{ - ShapeOfParamsV3(Shape{2}, - Shape{1}, - IT, - OT1, - OT2, - std::vector{2, 0}, - std::vector{2}, - std::vector{2}), - ShapeOfParamsV3(Shape{2, 4}, - Shape{2}, - IT, - OT1, - OT2, - std::vector{2 * 4, 0}, - std::vector{2, 4}, - std::vector{2, 4}) - }; + std::vector params{ShapeOfParamsV3(Shape{2}, + Shape{1}, + IT, + OT1, + OT2, + std::vector{2, 0}, + std::vector{2}, + std::vector{2}), + ShapeOfParamsV3(Shape{2, 4}, + Shape{2}, + IT, + OT1, + OT2, + std::vector{2 * 4, 0}, + std::vector{2, 4}, + std::vector{2, 4})}; return params; } @@ -218,32 +196,30 @@ std::vector generateParamsForShapeOfBig_V3() { using T2 = typename element_type_traits::value_type; using T3 = typename element_type_traits::value_type; - std::vector params{ - ShapeOfParamsV3(Shape{2}, - Shape{1}, - IT, - OT1, - OT2, - std::vector{2, 0}, - std::vector{2}, - std::vector{2}), - ShapeOfParamsV3(Shape{2, 4}, - Shape{2}, - IT, - OT1, - OT2, - std::vector{2 * 4, 0}, - std::vector{2, 4}, - std::vector{2, 4}), - ShapeOfParamsV3(Shape{2, 4, 8, 16, 32}, - Shape{5}, - IT, - OT1, - OT2, - std::vector{2 * 4 * 8 * 16 * 32, 0}, - std::vector{2, 4, 8, 16, 32}, - std::vector{2, 4, 8, 16, 32}) - }; + std::vector params{ShapeOfParamsV3(Shape{2}, + Shape{1}, + IT, + OT1, + OT2, + std::vector{2, 0}, + std::vector{2}, + std::vector{2}), + ShapeOfParamsV3(Shape{2, 4}, + Shape{2}, + IT, + OT1, + OT2, + std::vector{2 * 4, 0}, + std::vector{2, 4}, + std::vector{2, 4}), + ShapeOfParamsV3(Shape{2, 4, 8, 16, 32}, + Shape{5}, + IT, + OT1, + OT2, + std::vector{2 * 4 * 8 * 16 * 32, 0}, + std::vector{2, 4, 8, 16, 32}, + std::vector{2, 4, 8, 16, 32})}; return params; } @@ -260,8 +236,7 @@ std::vector generateCombinedParamsForShapeOfV1() { generateParamsForShapeOfSmall_V1(), generateParamsForShapeOfSmall_V1(), generateParamsForShapeOfSmall_V1(), - generateParamsForShapeOfSmall_V1() - }; + generateParamsForShapeOfSmall_V1()}; std::vector combinedParams; @@ -284,8 +259,7 @@ std::vector generateCombinedParamsForShapeOfV3() { generateParamsForShapeOfSmall_V3(), generateParamsForShapeOfSmall_V3(), generateParamsForShapeOfSmall_V3(), - generateParamsForShapeOfSmall_V3() - }; + generateParamsForShapeOfSmall_V3()}; std::vector combinedParams; @@ -296,16 +270,14 @@ std::vector generateCombinedParamsForShapeOfV3() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_ShapeOf_With_Hardcoded_Refs, - ReferenceShapeOfV1LayerTest, - ::testing::ValuesIn(generateCombinedParamsForShapeOfV1()), - ReferenceShapeOfV1LayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_ShapeOf_With_Hardcoded_Refs, - ReferenceShapeOfV3LayerTest, - ::testing::ValuesIn(generateCombinedParamsForShapeOfV3()), - ReferenceShapeOfV3LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ShapeOf_With_Hardcoded_Refs, + ReferenceShapeOfV1LayerTest, + ::testing::ValuesIn(generateCombinedParamsForShapeOfV1()), + ReferenceShapeOfV1LayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_ShapeOf_With_Hardcoded_Refs, + ReferenceShapeOfV3LayerTest, + ::testing::ValuesIn(generateCombinedParamsForShapeOfV3()), + ReferenceShapeOfV3LayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/shuffle_channels.cpp b/src/plugins/template/tests/functional/op_reference/shuffle_channels.cpp index 26ccdbe3dcaf9f..7b605e62680c73 100644 --- a/src/plugins/template/tests/functional/op_reference/shuffle_channels.cpp +++ b/src/plugins/template/tests/functional/op_reference/shuffle_channels.cpp @@ -4,18 +4,24 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; namespace { struct ShuffleChannelsParams { - ShuffleChannelsParams(const reference_tests::Tensor& dataTensor, const int32_t axis, const int32_t group, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), axis(axis), group(group), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + ShuffleChannelsParams(const reference_tests::Tensor& dataTensor, + const int32_t axis, + const int32_t group, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + axis(axis), + group(group), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; int32_t axis; @@ -24,7 +30,8 @@ struct ShuffleChannelsParams { std::string testcaseName; }; -class ReferenceShuffleChannelsLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceShuffleChannelsLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -54,7 +61,7 @@ class ReferenceShuffleChannelsLayerTest : public testing::TestWithParam CreateFunction(const ShuffleChannelsParams& params) { const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto function = std::make_shared(data, params.axis, params.group); - return std::make_shared(NodeVector {function}, ParameterVector {data}); + return std::make_shared(NodeVector{function}, ParameterVector{data}); } }; @@ -65,42 +72,49 @@ TEST_P(ReferenceShuffleChannelsLayerTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ // shuffle_channels_simple ShuffleChannelsParams( - reference_tests::Tensor({1, 15, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59}), + reference_tests::Tensor( + {1, 15, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59}), 1, 5, - reference_tests::Tensor({1, 15, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), + reference_tests::Tensor( + {1, 15, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), "shuffle_channels_simple"), // shuffle_channels_negative_axis ShuffleChannelsParams( - reference_tests::Tensor({15, 2, 1, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59}), + reference_tests::Tensor( + {15, 2, 1, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59}), -4, 5, - reference_tests::Tensor({15, 2, 1, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), + reference_tests::Tensor( + {15, 2, 1, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), "shuffle_channels_negative_axis"), // shuffle_channels_float - ShuffleChannelsParams( - reference_tests::Tensor({6, 1, 1, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), - 0, - 2, - reference_tests::Tensor({6, 1, 1, 1}, IN_ET, std::vector{0, 3, 1, 4, 2, 5}), - "shuffle_channels_float"), + ShuffleChannelsParams(reference_tests::Tensor({6, 1, 1, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), + 0, + 2, + reference_tests::Tensor({6, 1, 1, 1}, IN_ET, std::vector{0, 3, 1, 4, 2, 5}), + "shuffle_channels_float"), // shuffle_channels_1d ShuffleChannelsParams( @@ -112,77 +126,83 @@ std::vector generateParams() { // shuffle_channels_2d ShuffleChannelsParams( - reference_tests::Tensor({15, 4}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59}), + reference_tests::Tensor({15, 4}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59}), 0, 5, - reference_tests::Tensor({15, 4}, IN_ET, std::vector{ - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, - 39, 48, 49, 50, 51, 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, - 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, 8, 9, 10, 11, 20, - 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), + reference_tests::Tensor({15, 4}, IN_ET, std::vector{0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, + 36, 37, 38, 39, 48, 49, 50, 51, 4, 5, 6, 7, + 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, + 52, 53, 54, 55, 8, 9, 10, 11, 20, 21, 22, 23, + 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), "shuffle_channels_2d"), // shuffle_channels_3d ShuffleChannelsParams( - reference_tests::Tensor({15, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59}), + reference_tests::Tensor({15, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59}), 0, 5, - reference_tests::Tensor({15, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, - 39, 48, 49, 50, 51, 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, - 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, 8, 9, 10, 11, 20, - 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), + reference_tests::Tensor({15, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, + 36, 37, 38, 39, 48, 49, 50, 51, 4, 5, 6, 7, + 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, + 52, 53, 54, 55, 8, 9, 10, 11, 20, 21, 22, 23, + 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), "shuffle_channels_3d"), // shuffle_channels_5d ShuffleChannelsParams( - reference_tests::Tensor({2, 2, 15, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59}), + reference_tests::Tensor( + {2, 2, 15, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59}), 2, 5, - reference_tests::Tensor({2, 2, 15, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, - - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, - - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, - - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), + reference_tests::Tensor( + {2, 2, 15, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, + + 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, + + 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, + + 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), "shuffle_channels_5d"), }; return params; } std::vector generateShuffleChannelsCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -204,6 +224,8 @@ std::vector generateShuffleChannelsCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ShuffleChannels_With_Hardcoded_Refs, ReferenceShuffleChannelsLayerTest, - testing::ValuesIn(generateShuffleChannelsCombinedParams()), ReferenceShuffleChannelsLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ShuffleChannels_With_Hardcoded_Refs, + ReferenceShuffleChannelsLayerTest, + testing::ValuesIn(generateShuffleChannelsCombinedParams()), + ReferenceShuffleChannelsLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/sigmoid.cpp b/src/plugins/template/tests/functional/op_reference/sigmoid.cpp index e82d8b5aa45e58..b8f29219783684 100644 --- a/src/plugins/template/tests/functional/op_reference/sigmoid.cpp +++ b/src/plugins/template/tests/functional/op_reference/sigmoid.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/sigmoid.hpp" + #include -#include "openvino/op/sigmoid.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,7 +14,10 @@ using namespace ov; namespace { struct SigmoidParams { template - SigmoidParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + SigmoidParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -45,11 +49,12 @@ class ReferenceSigmoidLayerTest : public testing::TestWithParam, } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& Sigmoidected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& Sigmoidected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto Sigmoid = std::make_shared(in); - return std::make_shared(NodeVector {Sigmoid}, ParameterVector {in}); + return std::make_shared(NodeVector{Sigmoid}, ParameterVector{in}); } }; @@ -57,7 +62,6 @@ TEST_P(ReferenceSigmoidLayerTest, CompareWithRefs) { Exec(); } - template std::vector generateSigmoidFloatParams() { using T = typename element_type_traits::value_type; @@ -67,16 +71,14 @@ std::vector generateSigmoidFloatParams() { float sigma1 = 1.0f / (1.0f + std::exp(-x1)); float sigma2 = 1.0f / (1.0f + std::exp(-x2)); - std::vector sigmoidParams { - SigmoidParams(ov::PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{x1, x2, x1, x2}, - std::vector{sigma1, sigma2, sigma1, sigma2}), - SigmoidParams(ov::PartialShape {1, 1, 4}, - IN_ET, - std::vector{x1, x2, x1, x2}, - std::vector{sigma1, sigma2, sigma1, sigma2}) - }; + std::vector sigmoidParams{SigmoidParams(ov::PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{x1, x2, x1, x2}, + std::vector{sigma1, sigma2, sigma1, sigma2}), + SigmoidParams(ov::PartialShape{1, 1, 4}, + IN_ET, + std::vector{x1, x2, x1, x2}, + std::vector{sigma1, sigma2, sigma1, sigma2})}; return sigmoidParams; } @@ -84,16 +86,9 @@ template std::vector generateSigmoidIntParams() { using T = typename element_type_traits::value_type; - std::vector sigmoidParams { - SigmoidParams(ov::PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{1, 4, -1, -4}, - std::vector{1, 1, 0, 0}), - SigmoidParams(ov::PartialShape {1, 1, 4}, - IN_ET, - std::vector{1, 4, -1, -4}, - std::vector{1, 1, 0, 0}) - }; + std::vector sigmoidParams{ + SigmoidParams(ov::PartialShape{1, 1, 2, 2}, IN_ET, std::vector{1, 4, -1, -4}, std::vector{1, 1, 0, 0}), + SigmoidParams(ov::PartialShape{1, 1, 4}, IN_ET, std::vector{1, 4, -1, -4}, std::vector{1, 1, 0, 0})}; return sigmoidParams; } @@ -101,28 +96,19 @@ template std::vector generateSigmoidUintParams() { using T = typename element_type_traits::value_type; - std::vector sigmoidParams { - SigmoidParams(ov::PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{1, 4, 1, 4}, - std::vector{1, 1, 1, 1}), - SigmoidParams(ov::PartialShape {1, 1, 4}, - IN_ET, - std::vector{1, 4, 1, 4}, - std::vector{1, 1, 1, 1}) - }; + std::vector sigmoidParams{ + SigmoidParams(ov::PartialShape{1, 1, 2, 2}, IN_ET, std::vector{1, 4, 1, 4}, std::vector{1, 1, 1, 1}), + SigmoidParams(ov::PartialShape{1, 1, 4}, IN_ET, std::vector{1, 4, 1, 4}, std::vector{1, 1, 1, 1})}; return sigmoidParams; } std::vector generateSigmoidCombinedParams() { - const std::vector> sigmoidTypeParams { - generateSigmoidFloatParams(), - generateSigmoidFloatParams(), - generateSigmoidIntParams(), - generateSigmoidIntParams(), - generateSigmoidUintParams(), - generateSigmoidUintParams() - }; + const std::vector> sigmoidTypeParams{generateSigmoidFloatParams(), + generateSigmoidFloatParams(), + generateSigmoidIntParams(), + generateSigmoidIntParams(), + generateSigmoidUintParams(), + generateSigmoidUintParams()}; std::vector combinedParams; for (const auto& params : sigmoidTypeParams) { @@ -131,7 +117,9 @@ std::vector generateSigmoidCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Sigmoid_With_Hardcoded_Refs, ReferenceSigmoidLayerTest, - testing::ValuesIn(generateSigmoidCombinedParams()), ReferenceSigmoidLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Sigmoid_With_Hardcoded_Refs, + ReferenceSigmoidLayerTest, + testing::ValuesIn(generateSigmoidCombinedParams()), + ReferenceSigmoidLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/sign.cpp b/src/plugins/template/tests/functional/op_reference/sign.cpp index 34ac622cb4325f..ae08360aa38eac 100644 --- a/src/plugins/template/tests/functional/op_reference/sign.cpp +++ b/src/plugins/template/tests/functional/op_reference/sign.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/sign.hpp" + #include -#include "openvino/op/sign.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,9 +13,16 @@ using namespace ov; struct SignParams { template - SignParams(const PartialShape& shape, const element::Type& iType, const element::Type& oType, const std::vector& iValues, - const std::vector& oValues) - : pshape(shape), inType(iType), outType(oType), inputData(CreateTensor(iType, iValues)), refData(CreateTensor(oType, oValues)) {} + SignParams(const PartialShape& shape, + const element::Type& iType, + const element::Type& oType, + const std::vector& iValues, + const std::vector& oValues) + : pshape(shape), + inType(iType), + outType(oType), + inputData(CreateTensor(iType, iValues)), + refData(CreateTensor(oType, oValues)) {} PartialShape pshape; element::Type inType; element::Type outType; @@ -43,7 +51,7 @@ class ReferenceSignLayerTest : public testing::TestWithParam, public static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type) { const auto in = std::make_shared(input_type, input_shape); const auto sign = std::make_shared(in); - return std::make_shared(NodeVector {sign}, ParameterVector {in}); + return std::make_shared(NodeVector{sign}, ParameterVector{in}); } }; @@ -51,25 +59,36 @@ TEST_P(ReferenceSignLayerTest, CompareWithHardcodedRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P( - smoke_Sign_With_Hardcoded_Refs, ReferenceSignLayerTest, - ::testing::Values( - SignParams(PartialShape {6}, element::f32, element::f32, - std::vector {1, -2, 0, -4.8f, 4.8f, -0.0f}, - std::vector {1, -1, 0, -1, 1, 0}), - SignParams(PartialShape {6}, element::f16, element::f16, - std::vector {1, -2, 0, -4.8f, 4.8f, -0.0f}, - std::vector {1, -1, 0, -1, 1, 0}), - SignParams(PartialShape {6}, element::u64, element::u64, - std::vector {1, 2, 0, 4, 4, 0}, - std::vector {1, 1, 0, 1, 1, 0}), - SignParams(PartialShape {6}, element::u32, element::u32, - std::vector {1, 2, 0, 4, 4, 0}, - std::vector {1, 1, 0, 1, 1, 0}), - SignParams(PartialShape {6}, element::i32, element::i32, - std::vector {1, -2, 0, -4, 4, -0}, - std::vector {1, -1, 0, -1, 1, 0}), - SignParams(PartialShape {6}, element::i64, element::i64, - std::vector {1, -2, 0, -4, 4, -0}, - std::vector {1, -1, 0, -1, 1, 0})), - ReferenceSignLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Sign_With_Hardcoded_Refs, + ReferenceSignLayerTest, + ::testing::Values(SignParams(PartialShape{6}, + element::f32, + element::f32, + std::vector{1, -2, 0, -4.8f, 4.8f, -0.0f}, + std::vector{1, -1, 0, -1, 1, 0}), + SignParams(PartialShape{6}, + element::f16, + element::f16, + std::vector{1, -2, 0, -4.8f, 4.8f, -0.0f}, + std::vector{1, -1, 0, -1, 1, 0}), + SignParams(PartialShape{6}, + element::u64, + element::u64, + std::vector{1, 2, 0, 4, 4, 0}, + std::vector{1, 1, 0, 1, 1, 0}), + SignParams(PartialShape{6}, + element::u32, + element::u32, + std::vector{1, 2, 0, 4, 4, 0}, + std::vector{1, 1, 0, 1, 1, 0}), + SignParams(PartialShape{6}, + element::i32, + element::i32, + std::vector{1, -2, 0, -4, 4, -0}, + std::vector{1, -1, 0, -1, 1, 0}), + SignParams(PartialShape{6}, + element::i64, + element::i64, + std::vector{1, -2, 0, -4, 4, -0}, + std::vector{1, -1, 0, -1, 1, 0})), + ReferenceSignLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/sin.cpp b/src/plugins/template/tests/functional/op_reference/sin.cpp index 0db13c355a1a2c..e3466415bc91f0 100644 --- a/src/plugins/template/tests/functional/op_reference/sin.cpp +++ b/src/plugins/template/tests/functional/op_reference/sin.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/sin.hpp" + #include -#include "openvino/op/sin.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ class ReferenceSinLayerTest : public testing::TestWithParam, public C static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Sin = std::make_shared(in); - return std::make_shared(NodeVector {Sin}, ParameterVector {in}); + return std::make_shared(NodeVector{Sin}, ParameterVector{in}); } }; @@ -53,46 +54,55 @@ TEST_P(ReferenceSinLayerTest, SinWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Sin_With_Hardcoded_Refs, ReferenceSinLayerTest, + smoke_Sin_With_Hardcoded_Refs, + ReferenceSinLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) - .expected({{11}, element::f16, std::vector {0.00000000f, - 0.24740396f, - -0.24740396f, - 0.47942554f, - -0.47942554f, - 0.84147098f, - -0.84147098f, - 0.90929743f, - -0.90929743f, - -0.75680250f, - 0.75680250f}}), - Builder {} - .input({{11}, element::f32, std::vector {0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) - .expected({{11}, element::f32, std::vector {0.00000000f, - 0.24740396f, - -0.24740396f, - 0.47942554f, - -0.47942554f, - 0.84147098f, - -0.84147098f, - 0.90929743f, - -0.90929743f, - -0.75680250f, - 0.75680250f}}), - Builder {} - .input({{7}, element::i32, std::vector {0, 1, -1, 2, -2, 4, -4}}) - .expected({{7}, element::i32, std::vector {0, 0, 0, 0, 0, 0, 0}}), - Builder {} - .input({{7}, element::i64, std::vector {0, 1, -1, 2, -2, 4, -4}}) - .expected({{7}, element::i64, std::vector {0, 0, 0, 0, 0, 0, 0}}), - Builder {} - .input({{4}, element::u32, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u32, std::vector {0, 0, 0, 0}}), - Builder {} - .input({{4}, element::u64, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u64, std::vector {0, 0, 0, 0}})), + Builder{} + .input({{11}, + element::f16, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) + .expected({{11}, + element::f16, + std::vector{0.00000000f, + 0.24740396f, + -0.24740396f, + 0.47942554f, + -0.47942554f, + 0.84147098f, + -0.84147098f, + 0.90929743f, + -0.90929743f, + -0.75680250f, + 0.75680250f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) + .expected({{11}, + element::f32, + std::vector{0.00000000f, + 0.24740396f, + -0.24740396f, + 0.47942554f, + -0.47942554f, + 0.84147098f, + -0.84147098f, + 0.90929743f, + -0.90929743f, + -0.75680250f, + 0.75680250f}}), + Builder{} + .input({{7}, element::i32, std::vector{0, 1, -1, 2, -2, 4, -4}}) + .expected({{7}, element::i32, std::vector{0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .input({{7}, element::i64, std::vector{0, 1, -1, 2, -2, 4, -4}}) + .expected({{7}, element::i64, std::vector{0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .input({{4}, element::u32, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u32, std::vector{0, 0, 0, 0}}), + Builder{} + .input({{4}, element::u64, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u64, std::vector{0, 0, 0, 0}})), ReferenceSinLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/sinh.cpp b/src/plugins/template/tests/functional/op_reference/sinh.cpp index c93c6eb5c72bff..f966d08897d3b5 100644 --- a/src/plugins/template/tests/functional/op_reference/sinh.cpp +++ b/src/plugins/template/tests/functional/op_reference/sinh.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/sinh.hpp" + #include -#include "openvino/op/sinh.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ class ReferenceSinhLayerTest : public testing::TestWithParam, public static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Sinh = std::make_shared(in); - return std::make_shared(NodeVector {Sinh}, ParameterVector {in}); + return std::make_shared(NodeVector{Sinh}, ParameterVector{in}); } }; @@ -53,46 +54,55 @@ TEST_P(ReferenceSinhLayerTest, SinhWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Sinh_With_Hardcoded_Refs, ReferenceSinhLayerTest, + smoke_Sinh_With_Hardcoded_Refs, + ReferenceSinhLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f16, std::vector {-27.28991720f, - -3.62686041f, - -1.17520120f, - -0.52109531f, - -0.25261232f, - 0.00000000f, - 0.25261232f, - 0.52109531f, - 1.17520120f, - 3.62686041f, - 27.28991720f}}), - Builder {} - .input({{11}, element::f32, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f32, std::vector {-27.28991720f, - -3.62686041f, - -1.17520120f, - -0.52109531f, - -0.25261232f, - 0.00000000f, - 0.25261232f, - 0.52109531f, - 1.17520120f, - 3.62686041f, - 27.28991720f}}), - Builder {} - .input({{7}, element::i32, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i32, std::vector {-27, -4, -1, 0, 1, 4, 27}}), - Builder {} - .input({{7}, element::i64, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i64, std::vector {-27, -4, -1, 0, 1, 4, 27}}), - Builder {} - .input({{4}, element::u32, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u32, std::vector {0, 1, 4, 27}}), - Builder {} - .input({{4}, element::u64, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u64, std::vector {0, 1, 4, 27}})), + Builder{} + .input({{11}, + element::f16, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f16, + std::vector{-27.28991720f, + -3.62686041f, + -1.17520120f, + -0.52109531f, + -0.25261232f, + 0.00000000f, + 0.25261232f, + 0.52109531f, + 1.17520120f, + 3.62686041f, + 27.28991720f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f32, + std::vector{-27.28991720f, + -3.62686041f, + -1.17520120f, + -0.52109531f, + -0.25261232f, + 0.00000000f, + 0.25261232f, + 0.52109531f, + 1.17520120f, + 3.62686041f, + 27.28991720f}}), + Builder{} + .input({{7}, element::i32, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i32, std::vector{-27, -4, -1, 0, 1, 4, 27}}), + Builder{} + .input({{7}, element::i64, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i64, std::vector{-27, -4, -1, 0, 1, 4, 27}}), + Builder{} + .input({{4}, element::u32, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u32, std::vector{0, 1, 4, 27}}), + Builder{} + .input({{4}, element::u64, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u64, std::vector{0, 1, 4, 27}})), ReferenceSinhLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/slice.cpp b/src/plugins/template/tests/functional/op_reference/slice.cpp index b709cd7f1691a9..2fa64b2dd458d6 100644 --- a/src/plugins/template/tests/functional/op_reference/slice.cpp +++ b/src/plugins/template/tests/functional/op_reference/slice.cpp @@ -98,10 +98,10 @@ class ReferenceSliceLayerTest : public testing::TestWithParam, publ private: static std::shared_ptr CreateFunction(const reference_tests::Tensor& data, - const reference_tests::Tensor& start, - const reference_tests::Tensor& stop, - const reference_tests::Tensor& step, - const reference_tests::Tensor& axes) { + const reference_tests::Tensor& start, + const reference_tests::Tensor& stop, + const reference_tests::Tensor& step, + const reference_tests::Tensor& axes) { const auto data_param = std::make_shared(data.type, data.shape); const auto start_param = std::make_shared(start.type, start.shape); const auto stop_param = std::make_shared(stop.type, stop.shape); @@ -110,14 +110,14 @@ class ReferenceSliceLayerTest : public testing::TestWithParam, publ const auto slice = std::make_shared(data_param, start_param, stop_param, step_param, axes_param); return std::make_shared(NodeVector{slice}, - ParameterVector{data_param, start_param, stop_param, step_param, axes_param}); + ParameterVector{data_param, start_param, stop_param, step_param, axes_param}); } // Default `axes` input static std::shared_ptr CreateFunction(const reference_tests::Tensor& data, - const reference_tests::Tensor& start, - const reference_tests::Tensor& stop, - const reference_tests::Tensor& step) { + const reference_tests::Tensor& start, + const reference_tests::Tensor& stop, + const reference_tests::Tensor& step) { const auto data_param = std::make_shared(data.type, data.shape); const auto start_param = std::make_shared(start.type, start.shape); const auto stop_param = std::make_shared(stop.type, stop.shape); @@ -125,7 +125,7 @@ class ReferenceSliceLayerTest : public testing::TestWithParam, publ const auto slice = std::make_shared(data_param, start_param, stop_param, step_param); return std::make_shared(NodeVector{slice}, - ParameterVector{data_param, start_param, stop_param, step_param}); + ParameterVector{data_param, start_param, stop_param, step_param}); } }; @@ -234,10 +234,12 @@ std::vector generateSliceParamsUnsigned() { reference_tests::Tensor{{4}, IND_ET, std::vector{4, 2, 3, 2}}, reference_tests::Tensor{{4}, IND_ET, std::vector{1, 1, 1, 1}}, reference_tests::Tensor{{4}, AXIS_ET, std::vector{0, 1, 2, 3}}, - reference_tests::Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}}, + reference_tests::Tensor{ + {4, 2, 3, 2}, + DATA_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}}, "4D_full_axes"), SliceParams(Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, @@ -246,10 +248,12 @@ std::vector generateSliceParamsUnsigned() { reference_tests::Tensor{{4}, IND_ET, std::vector{0, 0, 0, 0}}, reference_tests::Tensor{{4}, IND_ET, std::vector{4, 2, 3, 2}}, reference_tests::Tensor{{4}, IND_ET, std::vector{1, 1, 1, 1}}, - reference_tests::Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}}, + reference_tests::Tensor{ + {4, 2, 3, 2}, + DATA_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}}, "4D_default_axes"), SliceParams(Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, @@ -259,8 +263,9 @@ std::vector generateSliceParamsUnsigned() { reference_tests::Tensor{{1}, IND_ET, std::vector{2}}, reference_tests::Tensor{{1}, IND_ET, std::vector{1}}, reference_tests::Tensor{{1}, AXIS_ET, std::vector{0}}, - reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}}, + reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}}, "4D_half_dim"), SliceParams(Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, @@ -270,28 +275,31 @@ std::vector generateSliceParamsUnsigned() { reference_tests::Tensor{{1}, IND_ET, std::vector{4}}, reference_tests::Tensor{{1}, IND_ET, std::vector{2}}, reference_tests::Tensor{{1}, AXIS_ET, std::vector{0}}, - reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35}}, + reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35}}, "4D_half_dim_step"), SliceParams( - reference_tests::Tensor{{2, 4, 2, 2, 3}, - DATA_ET, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, + reference_tests::Tensor{ + {2, 4, 2, 2, 3}, + DATA_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, reference_tests::Tensor{{5}, IND_ET, std::vector{0, 0, 0, 0, 0}}, reference_tests::Tensor{{5}, IND_ET, std::vector{2, 4, 2, 2, 3}}, reference_tests::Tensor{{5}, IND_ET, std::vector{1, 1, 1, 1, 1}}, reference_tests::Tensor{{5}, AXIS_ET, std::vector{0, 1, 2, 3, 4}}, - reference_tests::Tensor{{2, 2, 2, 1, 2}, - DATA_ET, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, + reference_tests::Tensor{ + {2, 2, 2, 1, 2}, + DATA_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, "5D_full_axes"), }; return test_params; @@ -361,23 +369,25 @@ std::vector generateSliceParams() { 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}}, reference_tests::Tensor{{4}, - IND_ET, - std::vector{std::numeric_limits::min(), - std::numeric_limits::max(), - std::numeric_limits::max(), - std::numeric_limits::min()}}, + IND_ET, + std::vector{std::numeric_limits::min(), + std::numeric_limits::max(), + std::numeric_limits::max(), + std::numeric_limits::min()}}, reference_tests::Tensor{{4}, - IND_ET, - std::vector{std::numeric_limits::max(), - std::numeric_limits::min(), - std::numeric_limits::min(), - std::numeric_limits::max()}}, + IND_ET, + std::vector{std::numeric_limits::max(), + std::numeric_limits::min(), + std::numeric_limits::min(), + std::numeric_limits::max()}}, reference_tests::Tensor{{4}, IND_ET, std::vector{1, -1, -1, 1}}, reference_tests::Tensor{{4}, AXIS_ET, std::vector{0, 1, 2, 3}}, - reference_tests::Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, - 22, 23, 20, 21, 18, 19, 16, 17, 14, 15, 12, 13, - 34, 35, 32, 33, 30, 31, 28, 29, 26, 27, 24, 25, - 46, 47, 44, 45, 42, 43, 40, 41, 38, 39, 36, 37}}, + reference_tests::Tensor{ + {4, 2, 3, 2}, + DATA_ET, + std::vector{10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, 22, 23, 20, 21, + 18, 19, 16, 17, 14, 15, 12, 13, 34, 35, 32, 33, 30, 31, 28, 29, + 26, 27, 24, 25, 46, 47, 44, 45, 42, 43, 40, 41, 38, 39, 36, 37}}, "4D_INT_MIN_MAX_index"), SliceParams(Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, @@ -387,24 +397,27 @@ std::vector generateSliceParams() { reference_tests::Tensor{{2}, IND_ET, std::vector{-100, 100}}, reference_tests::Tensor{{2}, IND_ET, std::vector{-1, 2}}, reference_tests::Tensor{{2}, AXIS_ET, std::vector{2, 0}}, - reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{4, 5, 2, 3, 0, 1, 10, 11, 8, 9, 6, 7, - 28, 29, 26, 27, 24, 25, 34, 35, 32, 33, 30, 31}}, + reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{4, 5, 2, 3, 0, 1, 10, 11, + 8, 9, 6, 7, 28, 29, 26, 27, + 24, 25, 34, 35, 32, 33, 30, 31}}, "4D_mixed"), SliceParams( - reference_tests::Tensor{{2, 4, 2, 2, 3}, - DATA_ET, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, + reference_tests::Tensor{ + {2, 4, 2, 2, 3}, + DATA_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, reference_tests::Tensor{{5}, IND_ET, std::vector{0, 1, -5, 100, 1}}, reference_tests::Tensor{{5}, IND_ET, std::vector{2, 6, 3, -100, 2}}, reference_tests::Tensor{{5}, IND_ET, std::vector{1, 2, 2, -1, 1}}, reference_tests::Tensor{{5}, AXIS_ET, std::vector{-5, 1, 4, 2, 3}}, - reference_tests::Tensor{{2, 2, 2, 1, 2}, - DATA_ET, - std::vector{21, 23, 15, 17, 45, 47, 39, 41, 69, 71, 63, 65, 93, 95, 87, 89}}, + reference_tests::Tensor{ + {2, 2, 2, 1, 2}, + DATA_ET, + std::vector{21, 23, 15, 17, 45, 47, 39, 41, 69, 71, 63, 65, 93, 95, 87, 89}}, "5D_mixed"), }; const auto& unsigned_test_params = generateSliceParamsUnsigned(); diff --git a/src/plugins/template/tests/functional/op_reference/softmax.cpp b/src/plugins/template/tests/functional/op_reference/softmax.cpp index 3e002d50e45a6a..4bbd11915486cd 100644 --- a/src/plugins/template/tests/functional/op_reference/softmax.cpp +++ b/src/plugins/template/tests/functional/op_reference/softmax.cpp @@ -2,23 +2,28 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/softmax.hpp" + #include -#include "openvino/op/softmax.hpp" #include "base_reference_test.hpp" using namespace reference_tests; using namespace ov; #ifdef _MSC_VER -# pragma warning(disable : 4756) -#endif +# pragma warning(disable : 4756) +#endif namespace { struct SoftmaxParams { template - SoftmaxParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const int64_t axis, const std::string& test_name) + SoftmaxParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const int64_t axis, + const std::string& test_name) : axis(axis), pshape(shape), inType(iType), @@ -61,11 +66,13 @@ class ReferenceSoftmaxLayerTest : public testing::TestWithParam, } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const int64_t axis) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const int64_t axis) { const auto in = std::make_shared(input_type, input_shape); const auto Softmax = std::make_shared(in, axis); - return std::make_shared(NodeVector {Softmax}, ParameterVector {in}); + return std::make_shared(NodeVector{Softmax}, ParameterVector{in}); } }; @@ -102,85 +109,83 @@ std::vector generateSoftmaxFloatParams() { auto d1_of = expf(1) + expf(4); auto d2_of = expf(2) + expf(5); - std::vector softmaxParams { - SoftmaxParams(ov::PartialShape {2, 2, 3}, - IN_ET, - std::vector{-10, -20, -30, -40, -50, -60, -1, -2, -3, -4, -5, -6}, - std::vector{expf(-10) / d0, - expf(-20) / d1, - expf(-30) / d2, - expf(-40) / d3, - expf(-50) / d4, - expf(-60) / d5, - expf(-1) / d0, - expf(-2) / d1, - expf(-3) / d2, - expf(-4) / d3, - expf(-5) / d4, - expf(-6) / d5}, - 0, - ""), - SoftmaxParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{-10, -20, -30, -40, -50, -60}, - std::vector{expf(-10) / d0_a1, - expf(-20) / d0_a1, - expf(-30) / d0_a1, - expf(-40) / d1_a1, - expf(-50) / d1_a1, - expf(-60) / d1_a1}, - 1, - ""), - SoftmaxParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{-10, -20, -30, -40, -50, -60}, - std::vector{expf(-10) / d0_a0, - expf(-20) / d1_a0, - expf(-30) / d2_a0, - expf(-40) / d0_a0, - expf(-50) / d1_a0, - expf(-60) / d2_a0}, - 0, - "test"), - SoftmaxParams(ov::PartialShape {1, 2, 3}, - IN_ET, - std::vector{-10, -20, -30, -40, -50, -60}, - std::vector{1, 1, 1, 1, 1, 1}, - 0, - "trivial"), - SoftmaxParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{low, 1, 2, 3, 4, 5}, - std::vector{expf(low) / d0_uf, - expf(1) / d1_uf, - expf(2) / d2_uf, - expf(3) / d0_uf, - expf(4) / d1_uf, - expf(5) / d2_uf}, - 0, - "underflow"), - SoftmaxParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{high, 1, 2, 3, 4, 5}, - std::vector{expf(high - high) / d0_of, - expf(1) / d1_of, - expf(2) / d2_of, - expf(3 - high) / d0_of, - expf(4) / d1_of, - expf(5) / d2_of}, - 0, - "overflow") - }; + std::vector softmaxParams{ + SoftmaxParams(ov::PartialShape{2, 2, 3}, + IN_ET, + std::vector{-10, -20, -30, -40, -50, -60, -1, -2, -3, -4, -5, -6}, + std::vector{expf(-10) / d0, + expf(-20) / d1, + expf(-30) / d2, + expf(-40) / d3, + expf(-50) / d4, + expf(-60) / d5, + expf(-1) / d0, + expf(-2) / d1, + expf(-3) / d2, + expf(-4) / d3, + expf(-5) / d4, + expf(-6) / d5}, + 0, + ""), + SoftmaxParams(ov::PartialShape{2, 3}, + IN_ET, + std::vector{-10, -20, -30, -40, -50, -60}, + std::vector{expf(-10) / d0_a1, + expf(-20) / d0_a1, + expf(-30) / d0_a1, + expf(-40) / d1_a1, + expf(-50) / d1_a1, + expf(-60) / d1_a1}, + 1, + ""), + SoftmaxParams(ov::PartialShape{2, 3}, + IN_ET, + std::vector{-10, -20, -30, -40, -50, -60}, + std::vector{expf(-10) / d0_a0, + expf(-20) / d1_a0, + expf(-30) / d2_a0, + expf(-40) / d0_a0, + expf(-50) / d1_a0, + expf(-60) / d2_a0}, + 0, + "test"), + SoftmaxParams(ov::PartialShape{1, 2, 3}, + IN_ET, + std::vector{-10, -20, -30, -40, -50, -60}, + std::vector{1, 1, 1, 1, 1, 1}, + 0, + "trivial"), + SoftmaxParams(ov::PartialShape{2, 3}, + IN_ET, + std::vector{low, 1, 2, 3, 4, 5}, + std::vector{expf(low) / d0_uf, + expf(1) / d1_uf, + expf(2) / d2_uf, + expf(3) / d0_uf, + expf(4) / d1_uf, + expf(5) / d2_uf}, + 0, + "underflow"), + SoftmaxParams(ov::PartialShape{2, 3}, + IN_ET, + std::vector{high, 1, 2, 3, 4, 5}, + std::vector{expf(high - high) / d0_of, + expf(1) / d1_of, + expf(2) / d2_of, + expf(3 - high) / d0_of, + expf(4) / d1_of, + expf(5) / d2_of}, + 0, + "overflow")}; return softmaxParams; } std::vector generateSoftmaxCombinedParams() { - const std::vector> softmaxTypeParams { + const std::vector> softmaxTypeParams{ generateSoftmaxFloatParams(), generateSoftmaxFloatParams(), generateSoftmaxFloatParams(), - generateSoftmaxFloatParams() - }; + generateSoftmaxFloatParams()}; std::vector combinedParams; for (const auto& params : softmaxTypeParams) { @@ -189,7 +194,9 @@ std::vector generateSoftmaxCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Softmax_With_Hardcoded_Refs, ReferenceSoftmaxLayerTest, - testing::ValuesIn(generateSoftmaxCombinedParams()), ReferenceSoftmaxLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Softmax_With_Hardcoded_Refs, + ReferenceSoftmaxLayerTest, + testing::ValuesIn(generateSoftmaxCombinedParams()), + ReferenceSoftmaxLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/softplus.cpp b/src/plugins/template/tests/functional/op_reference/softplus.cpp index 3530ed71ff8172..1d0e18accb985e 100644 --- a/src/plugins/template/tests/functional/op_reference/softplus.cpp +++ b/src/plugins/template/tests/functional/op_reference/softplus.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/softplus.hpp" + #include -#include "openvino/op/softplus.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,7 +14,10 @@ using namespace ov; namespace { struct SoftPlusParams { template - SoftPlusParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + SoftPlusParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -45,11 +49,12 @@ class ReferenceSoftPlusLayerTest : public testing::TestWithParam } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& SoftPlusected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& SoftPlusected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto SoftPlus = std::make_shared(in); - return std::make_shared(NodeVector {SoftPlus}, ParameterVector {in}); + return std::make_shared(NodeVector{SoftPlus}, ParameterVector{in}); } }; @@ -61,21 +66,18 @@ template std::vector generateSoftPlusFloatParams() { using T = typename element_type_traits::value_type; - std::vector softPlusParams { - SoftPlusParams(ov::PartialShape {4}, - IN_ET, - std::vector{-1.0, 0.0, 1.0, 20.0}, - std::vector{0.31326166, 0.69314718, 1.3132616, 20.0}) - }; + std::vector softPlusParams{SoftPlusParams(ov::PartialShape{4}, + IN_ET, + std::vector{-1.0, 0.0, 1.0, 20.0}, + std::vector{0.31326166, 0.69314718, 1.3132616, 20.0})}; return softPlusParams; } std::vector generateSoftPlusCombinedParams() { - const std::vector> softPlusTypeParams { + const std::vector> softPlusTypeParams{ generateSoftPlusFloatParams(), generateSoftPlusFloatParams(), - generateSoftPlusFloatParams() - }; + generateSoftPlusFloatParams()}; std::vector combinedParams; for (const auto& params : softPlusTypeParams) { @@ -84,7 +86,9 @@ std::vector generateSoftPlusCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_SoftPlus_With_Hardcoded_Refs, ReferenceSoftPlusLayerTest, - testing::ValuesIn(generateSoftPlusCombinedParams()), ReferenceSoftPlusLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_SoftPlus_With_Hardcoded_Refs, + ReferenceSoftPlusLayerTest, + testing::ValuesIn(generateSoftPlusCombinedParams()), + ReferenceSoftPlusLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/softsign.cpp b/src/plugins/template/tests/functional/op_reference/softsign.cpp index 6664bcf19d613c..299c108956c3fb 100644 --- a/src/plugins/template/tests/functional/op_reference/softsign.cpp +++ b/src/plugins/template/tests/functional/op_reference/softsign.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/softsign.hpp" + #include -#include "openvino/op/softsign.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,7 +14,10 @@ using namespace ov; namespace { struct SoftSignParams { template - SoftSignParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + SoftSignParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -45,11 +49,12 @@ class ReferenceSoftSignLayerTest : public testing::TestWithParam } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& SoftSign_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& SoftSign_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto SoftSign = std::make_shared(in); - return std::make_shared(NodeVector {SoftSign}, ParameterVector {in}); + return std::make_shared(NodeVector{SoftSign}, ParameterVector{in}); } }; @@ -61,21 +66,18 @@ template std::vector generateSoftSignFloatParams() { using T = typename element_type_traits::value_type; - std::vector ParamsVector { - SoftSignParams(ov::PartialShape {4}, - IN_ET, - std::vector{-1.0, 0.0, 1.0, 15.0}, - std::vector{-0.5, 0.0, 0.5, 0.9375}) - }; + std::vector ParamsVector{SoftSignParams(ov::PartialShape{4}, + IN_ET, + std::vector{-1.0, 0.0, 1.0, 15.0}, + std::vector{-0.5, 0.0, 0.5, 0.9375})}; return ParamsVector; } std::vector generateSoftSignCombinedParams() { - const std::vector> SoftSignTypeParams { + const std::vector> SoftSignTypeParams{ generateSoftSignFloatParams(), generateSoftSignFloatParams(), - generateSoftSignFloatParams() - }; + generateSoftSignFloatParams()}; std::vector combinedParams; for (const auto& params : SoftSignTypeParams) { @@ -84,7 +86,9 @@ std::vector generateSoftSignCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_SoftSign_With_Hardcoded_Refs, ReferenceSoftSignLayerTest, - testing::ValuesIn(generateSoftSignCombinedParams()), ReferenceSoftSignLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_SoftSign_With_Hardcoded_Refs, + ReferenceSoftSignLayerTest, + testing::ValuesIn(generateSoftSignCombinedParams()), + ReferenceSoftSignLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/space_to_batch.cpp b/src/plugins/template/tests/functional/op_reference/space_to_batch.cpp index cbfe36d6963f30..39cadfe89560df 100644 --- a/src/plugins/template/tests/functional/op_reference/space_to_batch.cpp +++ b/src/plugins/template/tests/functional/op_reference/space_to_batch.cpp @@ -4,22 +4,28 @@ #include +#include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" #include "openvino/opsets/opset1.hpp" #include "openvino/opsets/opset2.hpp" -#include "openvino/op/constant.hpp" -#include "base_reference_test.hpp" using namespace reference_tests; using namespace ov; namespace { struct SpaceToBatchParams { - SpaceToBatchParams(const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& blockShapeTensor, - const reference_tests::Tensor& padsBeginTensor, const reference_tests::Tensor& padsEndTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), blockShapeTensor(blockShapeTensor), - padsBeginTensor(padsBeginTensor), padsEndTensor(padsEndTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + SpaceToBatchParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& blockShapeTensor, + const reference_tests::Tensor& padsBeginTensor, + const reference_tests::Tensor& padsEndTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + blockShapeTensor(blockShapeTensor), + padsBeginTensor(padsBeginTensor), + padsEndTensor(padsEndTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor blockShapeTensor; @@ -81,55 +87,51 @@ TEST_P(ReferenceSpaceToBatchLayerTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector batchToSpaceParams { + std::vector batchToSpaceParams{ // space_to_batch_3D - SpaceToBatchParams( - reference_tests::Tensor({1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), - reference_tests::Tensor({3}, element::i64, std::vector{1, 1, 1}), - reference_tests::Tensor({3}, element::i64, std::vector{0, 0, 0}), - reference_tests::Tensor({3}, element::i64, std::vector{0, 0, 0}), - reference_tests::Tensor({1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), - "space_to_batch_4D"), + SpaceToBatchParams(reference_tests::Tensor({1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), + reference_tests::Tensor({3}, element::i64, std::vector{1, 1, 1}), + reference_tests::Tensor({3}, element::i64, std::vector{0, 0, 0}), + reference_tests::Tensor({3}, element::i64, std::vector{0, 0, 0}), + reference_tests::Tensor({1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), + "space_to_batch_4D"), // space_to_batch_4D - SpaceToBatchParams( - reference_tests::Tensor({1, 1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), - reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 1, 1}), - reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({1, 1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), - "space_to_batch_4D"), + SpaceToBatchParams(reference_tests::Tensor({1, 1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), + reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 1, 1}), + reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), + reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), + reference_tests::Tensor({1, 1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), + "space_to_batch_4D"), // space_to_batch_5D - SpaceToBatchParams( - reference_tests::Tensor({1, 1, 3, 2, 1}, IN_ET, std::vector{1, 1, 1, 1, 1, 1}), - reference_tests::Tensor({5}, element::i64, std::vector{1, 1, 3, 2, 2}), - reference_tests::Tensor({5}, element::i64, std::vector{0, 0, 1, 0, 3}), - reference_tests::Tensor({5}, element::i64, std::vector{0, 0, 2, 0, 0}), - reference_tests::Tensor({12, 1, 2, 1, 2}, IN_ET, std::vector{ - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}), - "space_to_batch_5D"), + SpaceToBatchParams(reference_tests::Tensor({1, 1, 3, 2, 1}, IN_ET, std::vector{1, 1, 1, 1, 1, 1}), + reference_tests::Tensor({5}, element::i64, std::vector{1, 1, 3, 2, 2}), + reference_tests::Tensor({5}, element::i64, std::vector{0, 0, 1, 0, 3}), + reference_tests::Tensor({5}, element::i64, std::vector{0, 0, 2, 0, 0}), + reference_tests::Tensor( + {12, 1, 2, 1, 2}, + IN_ET, + std::vector{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}), + "space_to_batch_5D"), // space_to_batch_4x4 - SpaceToBatchParams( - reference_tests::Tensor({1, 1, 4, 4}, IN_ET, std::vector{ - 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}), - reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 1, 1}), - reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 1, 0}), - reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({1, 1, 5, 4}, IN_ET, std::vector{ - 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}), - "space_to_batch_4x4"), + SpaceToBatchParams(reference_tests::Tensor({1, 1, 4, 4}, + IN_ET, + std::vector{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}), + reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 1, 1}), + reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 1, 0}), + reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), + reference_tests::Tensor({1, 1, 5, 4}, IN_ET, std::vector{0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}), + "space_to_batch_4x4"), }; return batchToSpaceParams; } std::vector generateCombinedParams() { - const std::vector> batchToSpaceTypeParams { + const std::vector> batchToSpaceTypeParams{ generateParams(), generateParams(), generateParams(), @@ -151,6 +153,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_SpaceToBatch_With_Hardcoded_Refs, ReferenceSpaceToBatchLayerTest, - testing::ValuesIn(generateCombinedParams()), ReferenceSpaceToBatchLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_SpaceToBatch_With_Hardcoded_Refs, + ReferenceSpaceToBatchLayerTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceSpaceToBatchLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/space_to_depth.cpp b/src/plugins/template/tests/functional/op_reference/space_to_depth.cpp index ef325b7dd9367a..7420376f802af7 100644 --- a/src/plugins/template/tests/functional/op_reference/space_to_depth.cpp +++ b/src/plugins/template/tests/functional/op_reference/space_to_depth.cpp @@ -4,18 +4,24 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; namespace { struct SpaceToDepthParams { - SpaceToDepthParams(const reference_tests::Tensor& dataTensor, const std::string mode, const int32_t blockSize, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), mode(mode), blockSize(blockSize), expectedTensor(expectedTensor), - testcaseName(testcaseName) {} + SpaceToDepthParams(const reference_tests::Tensor& dataTensor, + const std::string mode, + const int32_t blockSize, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + mode(mode), + blockSize(blockSize), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; std::string mode; @@ -50,11 +56,12 @@ class ReferenceSpaceToDepthLayerTest : public testing::TestWithParam CreateFunction(const SpaceToDepthParams& params) { - opset1::SpaceToDepth::SpaceToDepthMode mode = params.mode == "DEPTH_FIRST" ? - opset1::SpaceToDepth::SpaceToDepthMode::DEPTH_FIRST : opset1::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST; + opset1::SpaceToDepth::SpaceToDepthMode mode = params.mode == "DEPTH_FIRST" + ? opset1::SpaceToDepth::SpaceToDepthMode::DEPTH_FIRST + : opset1::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST; const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto SpaceToDepth = std::make_shared(data, mode, params.blockSize); - return std::make_shared(NodeVector {SpaceToDepth}, ParameterVector {data}); + return std::make_shared(NodeVector{SpaceToDepth}, ParameterVector{data}); } }; @@ -65,84 +72,80 @@ TEST_P(ReferenceSpaceToDepthLayerTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ // space_to_depth_block_first_K2_BS2 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), + reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), "BLOCKS_FIRST", 2, - reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{ - 0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, 11, 17, 19, 25, 27, - 4, 6, 12, 14, 20, 22, 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), + reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, + 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, + 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), "space_to_depth_block_first_K2_BS2"), // space_to_depth_block_first_K2_BS3 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 6, 3}, IN_ET, std::vector{ - 0, 4, 8, 12, 16, 20, 24, 28, 32, 1, 5, 9, - 13, 17, 21, 25, 29, 33, 2, 6, 10, 14, 18, 22, - 26, 30, 34, 3, 7, 11, 15, 19, 23, 27, 31, 35}), + reference_tests::Tensor({1, 2, 6, 3}, + IN_ET, + std::vector{0, 4, 8, 12, 16, 20, 24, 28, 32, 1, 5, 9, 13, 17, 21, 25, 29, 33, + 2, 6, 10, 14, 18, 22, 26, 30, 34, 3, 7, 11, 15, 19, 23, 27, 31, 35}), "BLOCKS_FIRST", 3, - reference_tests::Tensor({1, 18, 2, 1}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35}), + reference_tests::Tensor({1, 18, 2, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35}), "space_to_depth_block_first_K2_BS3"), // space_to_depth_block_first_K1_BS3 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 6}, IN_ET, std::vector{ - 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11}), + reference_tests::Tensor({1, 2, 6}, IN_ET, std::vector{0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11}), "BLOCKS_FIRST", 3, - reference_tests::Tensor({1, 6, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), + reference_tests::Tensor({1, 6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), "space_to_depth_block_first_K1_BS3"), // space_to_depth_depth_first_K2_BS2 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{ - 0, 16, 2, 18, 1, 17, 3, 19, 8, 24, 10, - 26, 9, 25, 11, 27, 4, 20, 6, 22, 5, 21, - 7, 23, 12, 28, 14, 30, 13, 29, 15, 31}), + reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 16, 2, 18, 1, 17, 3, 19, 8, 24, 10, + 26, 9, 25, 11, 27, 4, 20, 6, 22, 5, 21, + 7, 23, 12, 28, 14, 30, 13, 29, 15, 31}), "DEPTH_FIRST", 2, - reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{ - 0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, 11, 17, 19, 25, 27, - 4, 6, 12, 14, 20, 22, 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), + reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, + 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, + 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), "space_to_depth_depth_first_K2_BS2"), // space_to_depth_depth_first_K2_BS3 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 6, 3}, IN_ET, std::vector{ - 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, - 7, 9, 11, 13, 15, 17, 18, 20, 22, 24, 26, 28, - 30, 32, 34, 19, 21, 23, 25, 27, 29, 31, 33, 35}), + reference_tests::Tensor({1, 2, 6, 3}, IN_ET, std::vector{0, 2, 4, 6, 8, 10, 12, 14, 16, + 1, 3, 5, 7, 9, 11, 13, 15, 17, + 18, 20, 22, 24, 26, 28, 30, 32, 34, + 19, 21, 23, 25, 27, 29, 31, 33, 35}), "DEPTH_FIRST", 3, - reference_tests::Tensor({1, 18, 2, 1}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35}), + reference_tests::Tensor({1, 18, 2, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35}), "space_to_depth_depth_first_K2_BS3"), // space_to_depth_depth_first_K1_BS3 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 6}, IN_ET, std::vector{ - 0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11}), + reference_tests::Tensor({1, 2, 6}, IN_ET, std::vector{0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11}), "DEPTH_FIRST", 3, - reference_tests::Tensor({1, 6, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), + reference_tests::Tensor({1, 6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), "space_to_depth_depth_first_K1_BS3"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -164,6 +167,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_SpaceToDepth_With_Hardcoded_Refs, ReferenceSpaceToDepthLayerTest, - testing::ValuesIn(generateCombinedParams()), ReferenceSpaceToDepthLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_SpaceToDepth_With_Hardcoded_Refs, + ReferenceSpaceToDepthLayerTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceSpaceToDepthLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/split.cpp b/src/plugins/template/tests/functional/op_reference/split.cpp index f360159b643c85..cba426f33a2a22 100644 --- a/src/plugins/template/tests/functional/op_reference/split.cpp +++ b/src/plugins/template/tests/functional/op_reference/split.cpp @@ -2,21 +2,28 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/split.hpp" + #include -#include "openvino/op/split.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct SplitParams { - SplitParams(const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& axisTensor, const size_t numSplits, - const std::vector& expectedTensors, const std::string& testcaseName = "") : - dataTensor(dataTensor), axisTensor(axisTensor), numSplits(numSplits), - expectedTensors(expectedTensors), testcaseName(testcaseName) {} + SplitParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& axisTensor, + const size_t numSplits, + const std::vector& expectedTensors, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + axisTensor(axisTensor), + numSplits(numSplits), + expectedTensors(expectedTensors), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor axisTensor; @@ -55,10 +62,10 @@ class ReferenceSplitTest : public testing::TestWithParam, public Co static std::shared_ptr CreateFunction(const SplitParams& params) { const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto axis = std::make_shared(params.axisTensor.type, - params.axisTensor.shape, - params.axisTensor.data.data()); + params.axisTensor.shape, + params.axisTensor.data.data()); const auto split = std::make_shared(data, axis, params.numSplits); - return std::make_shared(split->outputs(), ParameterVector {data}); + return std::make_shared(split->outputs(), ParameterVector{data}); } }; @@ -69,91 +76,117 @@ TEST_P(ReferenceSplitTest, CompareWithRefs) { template std::vector generateSplitParams() { using T = typename element_type_traits::value_type; - std::vector splitParams { + std::vector splitParams{ // split_1d SplitParams(reference_tests::Tensor({6}, IN_ET, std::vector{1, 2, 3, 4, 5, 6}), reference_tests::Tensor({}, element::i64, std::vector{0}), 3, std::vector{reference_tests::Tensor({2}, IN_ET, std::vector{1, 2}), - reference_tests::Tensor({2}, IN_ET, std::vector{3, 4}), - reference_tests::Tensor({2}, IN_ET, std::vector{5, 6})}, + reference_tests::Tensor({2}, IN_ET, std::vector{3, 4}), + reference_tests::Tensor({2}, IN_ET, std::vector{5, 6})}, "split_1d"), // split_2d_axis_0 SplitParams(reference_tests::Tensor({6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), reference_tests::Tensor({}, element::i64, std::vector{0}), 2, - std::vector{reference_tests::Tensor({3, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), - reference_tests::Tensor({3, 2}, IN_ET, std::vector{6, 7, 8, 9, 10, 11})}, + std::vector{ + reference_tests::Tensor({3, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), + reference_tests::Tensor({3, 2}, IN_ET, std::vector{6, 7, 8, 9, 10, 11})}, "split_2d_axis_0"), // split_2d_axis_1 SplitParams(reference_tests::Tensor({6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), reference_tests::Tensor({}, element::i64, std::vector{1}), 2, - std::vector{reference_tests::Tensor({6, 1}, IN_ET, std::vector{0, 2, 4, 6, 8, 10}), - reference_tests::Tensor({6, 1}, IN_ET, std::vector{1, 3, 5, 7, 9, 11})}, + std::vector{ + reference_tests::Tensor({6, 1}, IN_ET, std::vector{0, 2, 4, 6, 8, 10}), + reference_tests::Tensor({6, 1}, IN_ET, std::vector{1, 3, 5, 7, 9, 11})}, "split_2d_axis_1"), // split_3d_axis_0 SplitParams(reference_tests::Tensor({2, 2, 3}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), reference_tests::Tensor({}, element::i64, std::vector{0}), 2, - std::vector{reference_tests::Tensor({1, 2, 3}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), - reference_tests::Tensor({1, 2, 3}, IN_ET, std::vector{6, 7, 8, 9, 10, 11})}, + std::vector{ + reference_tests::Tensor({1, 2, 3}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), + reference_tests::Tensor({1, 2, 3}, IN_ET, std::vector{6, 7, 8, 9, 10, 11})}, "split_3d_axis_0"), // split_3d_axis_1 - SplitParams(reference_tests::Tensor({2, 8, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), + SplitParams(reference_tests::Tensor({2, 8, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), reference_tests::Tensor({}, element::i64, std::vector{1}), 4, - std::vector{reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 16, 17, 18, 19}), - reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{4, 5, 6, 7, 20, 21, 22, 23}), - reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{8, 9, 10, 11, 24, 25, 26, 27}), - reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{12, 13, 14, 15, 28, 29, 30, 31})}, + std::vector{ + reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 16, 17, 18, 19}), + reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{4, 5, 6, 7, 20, 21, 22, 23}), + reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{8, 9, 10, 11, 24, 25, 26, 27}), + reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{12, 13, 14, 15, 28, 29, 30, 31})}, "split_3d_axis_1"), // split_3d_axis_2 SplitParams(reference_tests::Tensor({2, 1, 6}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), reference_tests::Tensor({}, element::i64, std::vector{2}), 2, - std::vector{reference_tests::Tensor({2, 1, 3}, IN_ET, std::vector{0, 1, 2, 6, 7, 8}), - reference_tests::Tensor({2, 1, 3}, IN_ET, std::vector{3, 4, 5, 9, 10, 11})}, + std::vector{ + reference_tests::Tensor({2, 1, 3}, IN_ET, std::vector{0, 1, 2, 6, 7, 8}), + reference_tests::Tensor({2, 1, 3}, IN_ET, std::vector{3, 4, 5, 9, 10, 11})}, "split_3d_axis_2"), // split_4d_axis_0 - SplitParams(reference_tests::Tensor({3, 2, 3, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}), - reference_tests::Tensor({}, element::i64, std::vector{0}), - 3, - std::vector{reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), - reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{6, 7, 8, 9, 10, 11}), - reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{12, 13, 14, 15, 16, 17})}, - "split_4d_axis_0"), + SplitParams( + reference_tests::Tensor({3, 2, 3, 1}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}), + reference_tests::Tensor({}, element::i64, std::vector{0}), + 3, + std::vector{ + reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), + reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{6, 7, 8, 9, 10, 11}), + reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{12, 13, 14, 15, 16, 17})}, + "split_4d_axis_0"), // split_4d_axis_1 - SplitParams(reference_tests::Tensor({2, 8, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}), - reference_tests::Tensor({}, element::i64, std::vector{1}), - 4, - std::vector{ - reference_tests::Tensor({2, 2, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35, 36, 37, 38, 39}), - reference_tests::Tensor({2, 2, 2, 2}, IN_ET, std::vector{8, 9, 10, 11, 12, 13, 14, 15, 40, 41, 42, 43, 44, 45, 46, 47}), - reference_tests::Tensor({2, 2, 2, 2}, IN_ET, std::vector{16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55}), - reference_tests::Tensor({2, 2, 2, 2}, IN_ET, std::vector{24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63})}, - "split_4d_axis_1"), + SplitParams( + reference_tests::Tensor( + {2, 8, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}), + reference_tests::Tensor({}, element::i64, std::vector{1}), + 4, + std::vector{ + reference_tests::Tensor({2, 2, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35, 36, 37, 38, 39}), + reference_tests::Tensor({2, 2, 2, 2}, + IN_ET, + std::vector{8, 9, 10, 11, 12, 13, 14, 15, 40, 41, 42, 43, 44, 45, 46, 47}), + reference_tests::Tensor({2, 2, 2, 2}, + IN_ET, + std::vector{16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55}), + reference_tests::Tensor( + {2, 2, 2, 2}, + IN_ET, + std::vector{24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63})}, + "split_4d_axis_1"), // split_4d_axis_2 - SplitParams(reference_tests::Tensor({2, 1, 6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + SplitParams(reference_tests::Tensor({2, 1, 6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor({}, element::i64, std::vector{2}), 3, - std::vector{reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 12, 13, 14, 15}), - reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{4, 5, 6, 7, 16, 17, 18, 19}), - reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, + std::vector{ + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 12, 13, 14, 15}), + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{4, 5, 6, 7, 16, 17, 18, 19}), + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, "split_4d_axis_2"), // split_4d_axis_3 - SplitParams(reference_tests::Tensor({2, 1, 2, 6}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + SplitParams(reference_tests::Tensor({2, 1, 2, 6}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor({}, element::i64, std::vector{3}), 3, - std::vector{reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{0, 1, 6, 7, 12, 13, 18, 19}), - reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{2, 3, 8, 9, 14, 15, 20, 21}), - reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{4, 5, 10, 11, 16, 17, 22, 23})}, + std::vector{ + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{0, 1, 6, 7, 12, 13, 18, 19}), + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{2, 3, 8, 9, 14, 15, 20, 21}), + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{4, 5, 10, 11, 16, 17, 22, 23})}, "split_4d_axis_3"), // split_4d_axis_negative_2 SplitParams(reference_tests::Tensor({2, 1, 4, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7}), @@ -168,7 +201,7 @@ std::vector generateSplitParams() { } std::vector generateSplitCombinedParams() { - const std::vector> splitTypeParams { + const std::vector> splitTypeParams{ generateSplitParams(), generateSplitParams(), generateSplitParams(), @@ -189,6 +222,8 @@ std::vector generateSplitCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Split_With_Hardcoded_Refs, ReferenceSplitTest, - testing::ValuesIn(generateSplitCombinedParams()), ReferenceSplitTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Split_With_Hardcoded_Refs, + ReferenceSplitTest, + testing::ValuesIn(generateSplitCombinedParams()), + ReferenceSplitTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/squared_difference.cpp b/src/plugins/template/tests/functional/op_reference/squared_difference.cpp index 747f52e5bd75ad..230798b927fcd8 100644 --- a/src/plugins/template/tests/functional/op_reference/squared_difference.cpp +++ b/src/plugins/template/tests/functional/op_reference/squared_difference.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/squared_difference.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/squared_difference.hpp" using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct SquaredDifferenceParams { template SquaredDifferenceParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -36,7 +38,8 @@ struct SquaredDifferenceParams { ov::Tensor refData; }; -class ReferenceSquaredDifferenceLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceSquaredDifferenceLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -57,9 +60,9 @@ class ReferenceSquaredDifferenceLayerTest : public testing::TestWithParam CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto squared_difference = std::make_shared(in1, in2); @@ -69,7 +72,7 @@ class ReferenceSquaredDifferenceLayerTest : public testing::TestWithParam, - public CommonReferenceTest { + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -90,9 +93,9 @@ class ReferenceSquaredDifferenceInPlaceLayerTest : public testing::TestWithParam private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); auto squared_difference = std::make_shared(in1, in2); @@ -116,36 +119,35 @@ std::vector generateParamsForSquaredDifference() { std::vector params{ SquaredDifferenceParams(ov::PartialShape{1, 2}, - ov::PartialShape{1, 2}, - IN_ET, - std::vector{256, 56}, - std::vector{256, 56}, - std::vector{0, 0}), + ov::PartialShape{1, 2}, + IN_ET, + std::vector{256, 56}, + std::vector{256, 56}, + std::vector{0, 0}), SquaredDifferenceParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{256, 56, -21, -14}, - std::vector{-112, 56, 6, -8}, - std::vector{135424, 0, 729, 36}), + ov::PartialShape{2, 2}, + IN_ET, + std::vector{256, 56, -21, -14}, + std::vector{-112, 56, 6, -8}, + std::vector{135424, 0, 729, 36}), SquaredDifferenceParams(ov::PartialShape{1, 2}, - ov::PartialShape{3, 2, 2}, - IN_ET, - std::vector{1, 2}, - std::vector{5, 6, 7, 8, 2, 3, 1, 5, 6, 7, 1, 3}, - std::vector{16, 16, 36, 36, 1, 1, 0, 9, 25, 25, 0, 1}), + ov::PartialShape{3, 2, 2}, + IN_ET, + std::vector{1, 2}, + std::vector{5, 6, 7, 8, 2, 3, 1, 5, 6, 7, 1, 3}, + std::vector{16, 16, 36, 36, 1, 1, 0, 9, 25, 25, 0, 1}), SquaredDifferenceParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{57}, - std::vector{13}, - std::vector{1936}), + ov::PartialShape{1}, + IN_ET, + std::vector{57}, + std::vector{13}, + std::vector{1936}), SquaredDifferenceParams(ov::PartialShape{2, 2}, ov::PartialShape{1}, IN_ET, std::vector{2, 4, 7, 8}, std::vector{8}, - std::vector{36, 16, 1, 0}) - }; + std::vector{36, 16, 1, 0})}; return params; } @@ -153,14 +155,12 @@ template std::vector generateParamsForSquaredDifferenceInPlace() { using T = typename element_type_traits::value_type; - std::vector params{ - SquaredDifferenceParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{1, 2, 3, 4}, - std::vector{5, 6, 7, 8}, - std::vector{0, 0, 0, 0}) - }; + std::vector params{SquaredDifferenceParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{1, 2, 3, 4}, + std::vector{5, 6, 7, 8}, + std::vector{0, 0, 0, 0})}; return params; } @@ -169,8 +169,7 @@ std::vector generateCombinedParamsForSquaredDifference( generateParamsForSquaredDifference(), generateParamsForSquaredDifference(), generateParamsForSquaredDifference(), - generateParamsForSquaredDifference() - }; + generateParamsForSquaredDifference()}; std::vector combinedParams; @@ -197,16 +196,14 @@ std::vector generateCombinedParamsForSquaredDifferenceI return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_SquaredDifference_With_Hardcoded_Refs, - ReferenceSquaredDifferenceLayerTest, - ::testing::ValuesIn(generateCombinedParamsForSquaredDifference()), - ReferenceSquaredDifferenceLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_SquaredDifferenceInPlace_With_Hardcoded_Refs, - ReferenceSquaredDifferenceInPlaceLayerTest, - ::testing::ValuesIn(generateCombinedParamsForSquaredDifferenceInPlace()), - ReferenceSquaredDifferenceInPlaceLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_SquaredDifference_With_Hardcoded_Refs, + ReferenceSquaredDifferenceLayerTest, + ::testing::ValuesIn(generateCombinedParamsForSquaredDifference()), + ReferenceSquaredDifferenceLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_SquaredDifferenceInPlace_With_Hardcoded_Refs, + ReferenceSquaredDifferenceInPlaceLayerTest, + ::testing::ValuesIn(generateCombinedParamsForSquaredDifferenceInPlace()), + ReferenceSquaredDifferenceInPlaceLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/squeeze.cpp b/src/plugins/template/tests/functional/op_reference/squeeze.cpp index 60639bfc54d4f8..0a1504de880d6d 100644 --- a/src/plugins/template/tests/functional/op_reference/squeeze.cpp +++ b/src/plugins/template/tests/functional/op_reference/squeeze.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/squeeze.hpp" + #include -#include "openvino/op/squeeze.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; @@ -94,7 +95,8 @@ class ReferenceSqueezeLayerTest : public testing::TestWithParam, std::shared_ptr axes_node = NULL; std::shared_ptr squeeze = NULL; if (params.m_axes_node) { - axes_node = std::make_shared(params.m_axes_type, params.m_axes_shape, params.m_axes_value.data()); + axes_node = + std::make_shared(params.m_axes_type, params.m_axes_shape, params.m_axes_value.data()); squeeze = std::make_shared(in, axes_node); } else { squeeze = std::make_shared(in); @@ -120,7 +122,7 @@ std::vector generateParamsForSqueeze() { IO_T, std::vector{1, 2, 3, 4, 5, 6, 7, 8}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}, - Shape {2}, + Shape{2}, Axes_T, std::vector{0, 2}), SqueezeParams(Shape{1, 4, 1, 1, 2}, @@ -153,8 +155,7 @@ std::vector generateCombinedParamsForSqueeze() { generateParamsForSqueeze(), generateParamsForSqueeze(), generateParamsForSqueeze(), - generateParamsForSqueeze() - }; + generateParamsForSqueeze()}; std::vector combinedParams; @@ -165,10 +166,9 @@ std::vector generateCombinedParamsForSqueeze() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Squeeze_With_Hardcoded_Refs, - ReferenceSqueezeLayerTest, - ::testing::ValuesIn(generateCombinedParamsForSqueeze()), - ReferenceSqueezeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Squeeze_With_Hardcoded_Refs, + ReferenceSqueezeLayerTest, + ::testing::ValuesIn(generateCombinedParamsForSqueeze()), + ReferenceSqueezeLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/strided_slice.cpp b/src/plugins/template/tests/functional/op_reference/strided_slice.cpp index 423397a85a983a..54ae9bb8ed35bf 100644 --- a/src/plugins/template/tests/functional/op_reference/strided_slice.cpp +++ b/src/plugins/template/tests/functional/op_reference/strided_slice.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/strided_slice.hpp" + #include -#include "openvino/op/strided_slice.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; @@ -24,12 +25,19 @@ struct StridedSliceParams { const std::vector& shrinkAxisMask, const std::vector& ellipsisMask, const reference_tests::Tensor& expectedTensor, - const std::string& testcaseName = "") : - dynamicDataShape(dynamicDataShape), dataTensor(dataTensor), - beginTensor(beginTensor), endTensor(endTensor), - stridesTensor(stridesTensor), beginMask(beginMask), endMask(endMask), - newAxisMask(newAxisMask), shrinkAxisMask(shrinkAxisMask), ellipsisMask(ellipsisMask), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + const std::string& testcaseName = "") + : dynamicDataShape(dynamicDataShape), + dataTensor(dataTensor), + beginTensor(beginTensor), + endTensor(endTensor), + stridesTensor(stridesTensor), + beginMask(beginMask), + endMask(endMask), + newAxisMask(newAxisMask), + shrinkAxisMask(shrinkAxisMask), + ellipsisMask(ellipsisMask), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} PartialShape dynamicDataShape; reference_tests::Tensor dataTensor; @@ -47,21 +55,27 @@ struct StridedSliceParams { struct StridedSliceStrideOptionalParams { StridedSliceStrideOptionalParams(const PartialShape& dynamicDataShape, - const reference_tests::Tensor& dataTensor, - const reference_tests::Tensor& beginTensor, - const reference_tests::Tensor& endTensor, - const std::vector& beginMask, - const std::vector& endMask, - const std::vector& newAxisMask, - const std::vector& shrinkAxisMask, - const std::vector& ellipsisMask, - const reference_tests::Tensor& expectedTensor, - const std::string& testcaseName = "") : - dynamicDataShape(dynamicDataShape), dataTensor(dataTensor), - beginTensor(beginTensor), endTensor(endTensor), - beginMask(beginMask), endMask(endMask), - newAxisMask(newAxisMask), shrinkAxisMask(shrinkAxisMask), ellipsisMask(ellipsisMask), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& beginTensor, + const reference_tests::Tensor& endTensor, + const std::vector& beginMask, + const std::vector& endMask, + const std::vector& newAxisMask, + const std::vector& shrinkAxisMask, + const std::vector& ellipsisMask, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dynamicDataShape(dynamicDataShape), + dataTensor(dataTensor), + beginTensor(beginTensor), + endTensor(endTensor), + beginMask(beginMask), + endMask(endMask), + newAxisMask(newAxisMask), + shrinkAxisMask(shrinkAxisMask), + ellipsisMask(ellipsisMask), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} PartialShape dynamicDataShape; reference_tests::Tensor dataTensor; @@ -84,7 +98,10 @@ class ReferenceStridedSliceLayerTest : public testing::TestWithParam function; if (params.dynamicDataShape.is_static()) { const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); - const auto beginOp = std::make_shared(params.beginTensor.type, params.beginTensor.shape, + const auto beginOp = std::make_shared(params.beginTensor.type, + params.beginTensor.shape, params.beginTensor.data.data()); - const auto endOp = std::make_shared(params.endTensor.type, params.endTensor.shape, + const auto endOp = std::make_shared(params.endTensor.type, + params.endTensor.shape, params.endTensor.data.data()); - const auto stridesOp = std::make_shared(params.stridesTensor.type, params.stridesTensor.shape, + const auto stridesOp = std::make_shared(params.stridesTensor.type, + params.stridesTensor.shape, params.stridesTensor.data.data()); - const auto StridedSlice = std::make_shared(data, beginOp, endOp, stridesOp, - params.beginMask, params.endMask, params.newAxisMask, - params.shrinkAxisMask, params.ellipsisMask); + const auto StridedSlice = std::make_shared(data, + beginOp, + endOp, + stridesOp, + params.beginMask, + params.endMask, + params.newAxisMask, + params.shrinkAxisMask, + params.ellipsisMask); function = std::make_shared(NodeVector{StridedSlice}, ParameterVector{data}); } else { const auto data = std::make_shared(params.dataTensor.type, PartialShape::dynamic()); const auto beginOp = std::make_shared(params.beginTensor.type, params.beginTensor.shape); const auto endOp = std::make_shared(params.endTensor.type, params.endTensor.shape); - const auto stridesOp = std::make_shared(params.stridesTensor.type, params.stridesTensor.shape); - const auto StridedSlice = std::make_shared(data, beginOp, endOp, stridesOp, - params.beginMask, params.endMask, params.newAxisMask, - params.shrinkAxisMask, params.ellipsisMask); - function = std::make_shared(NodeVector{StridedSlice}, ParameterVector{data, beginOp, endOp, stridesOp}); + const auto stridesOp = + std::make_shared(params.stridesTensor.type, params.stridesTensor.shape); + const auto StridedSlice = std::make_shared(data, + beginOp, + endOp, + stridesOp, + params.beginMask, + params.endMask, + params.newAxisMask, + params.shrinkAxisMask, + params.ellipsisMask); + function = + std::make_shared(NodeVector{StridedSlice}, ParameterVector{data, beginOp, endOp, stridesOp}); } return function; } }; -class ReferenceStridedSliceLayerTestStrideOptional : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceStridedSliceLayerTestStrideOptional : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -178,21 +213,33 @@ class ReferenceStridedSliceLayerTestStrideOptional : public testing::TestWithPar std::shared_ptr function; if (params.dynamicDataShape.is_static()) { const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); - const auto beginOp = std::make_shared(params.beginTensor.type, params.beginTensor.shape, + const auto beginOp = std::make_shared(params.beginTensor.type, + params.beginTensor.shape, params.beginTensor.data.data()); - const auto endOp = std::make_shared(params.endTensor.type, params.endTensor.shape, + const auto endOp = std::make_shared(params.endTensor.type, + params.endTensor.shape, params.endTensor.data.data()); - const auto StridedSlice = std::make_shared(data, beginOp, endOp, - params.beginMask, params.endMask, params.newAxisMask, - params.shrinkAxisMask, params.ellipsisMask); + const auto StridedSlice = std::make_shared(data, + beginOp, + endOp, + params.beginMask, + params.endMask, + params.newAxisMask, + params.shrinkAxisMask, + params.ellipsisMask); function = std::make_shared(NodeVector{StridedSlice}, ParameterVector{data}); } else { const auto data = std::make_shared(params.dataTensor.type, PartialShape::dynamic()); const auto beginOp = std::make_shared(params.beginTensor.type, params.beginTensor.shape); const auto endOp = std::make_shared(params.endTensor.type, params.endTensor.shape); - const auto StridedSlice = std::make_shared(data, beginOp, endOp, - params.beginMask, params.endMask, params.newAxisMask, - params.shrinkAxisMask, params.ellipsisMask); + const auto StridedSlice = std::make_shared(data, + beginOp, + endOp, + params.beginMask, + params.endMask, + params.newAxisMask, + params.shrinkAxisMask, + params.ellipsisMask); function = std::make_shared(NodeVector{StridedSlice}, ParameterVector{data, beginOp, endOp}); } return function; @@ -207,7 +254,7 @@ TEST_P(ReferenceStridedSliceLayerTestStrideOptional, CompareWithRefs) { Exec(); } -template +template std::vector generateInputValues(const Shape& input_shape, T initial) { std::vector input_values(shape_size(input_shape)); std::iota(input_values.begin(), input_values.end(), static_cast(initial)); @@ -217,12 +264,12 @@ std::vector generateInputValues(const Shape& input_shape, T initial) { template std::vector generateSmallParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ // strided_slice_0 StridedSliceParams( {}, reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{0, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 1}), @@ -237,7 +284,7 @@ std::vector generateSmallParams() { StridedSliceParams( PartialShape::dynamic(), reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{0, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 1}), @@ -255,12 +302,12 @@ std::vector generateSmallParams() { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ // strided_slice_0 StridedSliceParams( {}, reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{0, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 1}), @@ -275,7 +322,7 @@ std::vector generateParams() { StridedSliceParams( PartialShape::dynamic(), reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{0, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 1}), @@ -298,16 +345,18 @@ std::vector generateParams() { std::vector{0, 0, 0, 0, 1, 0, 0}, std::vector{0, 0, 0, 0, 0, 0, 1}, std::vector{0, 0, 0, 0, 0, 1, 0}, - reference_tests::Tensor(IN_ET, {2, 4, 2, 2, 1, 2, 2}, std::vector{ - 185, 187, 189, 191, 169, 171, 173, 175, 313, 315, 317, 319, 297, 299, 301, - 303, 569, 571, 573, 575, 553, 555, 557, 559, 697, 699, 701, 703, 681, 683, - 685, 687, 953, 955, 957, 959, 937, 939, 941, 943, 1081, 1083, 1085, 1087, 1065, - 1067, 1069, 1071, 1337, 1339, 1341, 1343, 1321, 1323, 1325, 1327, 1465, 1467, 1469, 1471, - 1449, 1451, 1453, 1455, 1721, 1723, 1725, 1727, 1705, 1707, 1709, 1711, 1849, 1851, 1853, - 1855, 1833, 1835, 1837, 1839, 2105, 2107, 2109, 2111, 2089, 2091, 2093, 2095, 2233, 2235, - 2237, 2239, 2217, 2219, 2221, 2223, 2489, 2491, 2493, 2495, 2473, 2475, 2477, 2479, 2617, - 2619, 2621, 2623, 2601, 2603, 2605, 2607, 2873, 2875, 2877, 2879, 2857, 2859, 2861, 2863, - 3001, 3003, 3005, 3007, 2985, 2987, 2989, 2991}), + reference_tests::Tensor( + IN_ET, + {2, 4, 2, 2, 1, 2, 2}, + std::vector{185, 187, 189, 191, 169, 171, 173, 175, 313, 315, 317, 319, 297, 299, 301, + 303, 569, 571, 573, 575, 553, 555, 557, 559, 697, 699, 701, 703, 681, 683, + 685, 687, 953, 955, 957, 959, 937, 939, 941, 943, 1081, 1083, 1085, 1087, 1065, + 1067, 1069, 1071, 1337, 1339, 1341, 1343, 1321, 1323, 1325, 1327, 1465, 1467, 1469, 1471, + 1449, 1451, 1453, 1455, 1721, 1723, 1725, 1727, 1705, 1707, 1709, 1711, 1849, 1851, 1853, + 1855, 1833, 1835, 1837, 1839, 2105, 2107, 2109, 2111, 2089, 2091, 2093, 2095, 2233, 2235, + 2237, 2239, 2217, 2219, 2221, 2223, 2489, 2491, 2493, 2495, 2473, 2475, 2477, 2479, 2617, + 2619, 2621, 2623, 2601, 2603, 2605, 2607, 2873, 2875, 2877, 2879, 2857, 2859, 2861, 2863, + 3001, 3003, 3005, 3007, 2985, 2987, 2989, 2991}), "strided_slice_1"), // strided_slice_1_dynamic StridedSliceParams( @@ -321,16 +370,18 @@ std::vector generateParams() { std::vector{0, 0, 0, 0, 1, 0, 0}, std::vector{0, 0, 0, 0, 0, 0, 1}, std::vector{0, 0, 0, 0, 0, 1, 0}, - reference_tests::Tensor(IN_ET, {2, 4, 2, 2, 1, 2, 2}, std::vector{ - 185, 187, 189, 191, 169, 171, 173, 175, 313, 315, 317, 319, 297, 299, 301, - 303, 569, 571, 573, 575, 553, 555, 557, 559, 697, 699, 701, 703, 681, 683, - 685, 687, 953, 955, 957, 959, 937, 939, 941, 943, 1081, 1083, 1085, 1087, 1065, - 1067, 1069, 1071, 1337, 1339, 1341, 1343, 1321, 1323, 1325, 1327, 1465, 1467, 1469, 1471, - 1449, 1451, 1453, 1455, 1721, 1723, 1725, 1727, 1705, 1707, 1709, 1711, 1849, 1851, 1853, - 1855, 1833, 1835, 1837, 1839, 2105, 2107, 2109, 2111, 2089, 2091, 2093, 2095, 2233, 2235, - 2237, 2239, 2217, 2219, 2221, 2223, 2489, 2491, 2493, 2495, 2473, 2475, 2477, 2479, 2617, - 2619, 2621, 2623, 2601, 2603, 2605, 2607, 2873, 2875, 2877, 2879, 2857, 2859, 2861, 2863, - 3001, 3003, 3005, 3007, 2985, 2987, 2989, 2991}), + reference_tests::Tensor( + IN_ET, + {2, 4, 2, 2, 1, 2, 2}, + std::vector{185, 187, 189, 191, 169, 171, 173, 175, 313, 315, 317, 319, 297, 299, 301, + 303, 569, 571, 573, 575, 553, 555, 557, 559, 697, 699, 701, 703, 681, 683, + 685, 687, 953, 955, 957, 959, 937, 939, 941, 943, 1081, 1083, 1085, 1087, 1065, + 1067, 1069, 1071, 1337, 1339, 1341, 1343, 1321, 1323, 1325, 1327, 1465, 1467, 1469, 1471, + 1449, 1451, 1453, 1455, 1721, 1723, 1725, 1727, 1705, 1707, 1709, 1711, 1849, 1851, 1853, + 1855, 1833, 1835, 1837, 1839, 2105, 2107, 2109, 2111, 2089, 2091, 2093, 2095, 2233, 2235, + 2237, 2239, 2217, 2219, 2221, 2223, 2489, 2491, 2493, 2495, 2473, 2475, 2477, 2479, 2617, + 2619, 2621, 2623, 2601, 2603, 2605, 2607, 2873, 2875, 2877, 2879, 2857, 2859, 2861, 2863, + 3001, 3003, 3005, 3007, 2985, 2987, 2989, 2991}), "strided_slice_1_dynamic"), }; return params; @@ -339,12 +390,12 @@ std::vector generateParams() { template std::vector generateStrideOptionalParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ // strided_slice_stride_optional StridedSliceStrideOptionalParams( {}, reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {3}, std::vector{-1, -1, 0}), reference_tests::Tensor(element::i64, {3}, std::vector{0, 0, 0}), std::vector{0, 0, 0}, @@ -358,7 +409,7 @@ std::vector generateStrideOptionalParams() { StridedSliceStrideOptionalParams( PartialShape::dynamic(), reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {3}, std::vector{-1, -1, 0}), reference_tests::Tensor(element::i64, {3}, std::vector{0, 0, 0}), std::vector{0, 0, 0}, @@ -372,7 +423,7 @@ std::vector generateStrideOptionalParams() { StridedSliceStrideOptionalParams( PartialShape::dynamic(), reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {2}, std::vector{0, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{-1, 0}), std::vector{1, 0}, @@ -387,7 +438,7 @@ std::vector generateStrideOptionalParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateSmallParams(), generateParams(), generateParams(), @@ -410,7 +461,7 @@ std::vector generateCombinedParams() { } std::vector generateCombinedStrideOptionalParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateStrideOptionalParams(), generateStrideOptionalParams(), generateStrideOptionalParams(), @@ -430,9 +481,13 @@ std::vector generateCombinedStrideOptionalPara return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_StridedSlice_With_Hardcoded_Refs, ReferenceStridedSliceLayerTest, - testing::ValuesIn(generateCombinedParams()), ReferenceStridedSliceLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_StridedSlice_With_Hardcoded_Refs, + ReferenceStridedSliceLayerTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceStridedSliceLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_StridedSlice_With_Hardcoded_Refs, ReferenceStridedSliceLayerTestStrideOptional, - testing::ValuesIn(generateCombinedStrideOptionalParams()), ReferenceStridedSliceLayerTestStrideOptional::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_StridedSlice_With_Hardcoded_Refs, + ReferenceStridedSliceLayerTestStrideOptional, + testing::ValuesIn(generateCombinedStrideOptionalParams()), + ReferenceStridedSliceLayerTestStrideOptional::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/subtract.cpp b/src/plugins/template/tests/functional/op_reference/subtract.cpp index 5eb145d12d6dfe..12bc8c888cbed5 100644 --- a/src/plugins/template/tests/functional/op_reference/subtract.cpp +++ b/src/plugins/template/tests/functional/op_reference/subtract.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/subtract.hpp" + #include + #include "base_reference_test.hpp" -#include "openvino/op/subtract.hpp" using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct SubtractParams { template SubtractParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -57,9 +59,9 @@ class ReferenceSubtractLayerTest : public testing::TestWithParam private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto subtract = std::make_shared(in1, in2); @@ -88,19 +90,14 @@ std::vector generateParamsForSubtract() { IN_ET, std::vector{12, 24, 36, 48, 60, 72}, std::vector{1, 2, 3, 4, 6, 1}, - std::vector{11, 10, 9, 8, 6, 11, - 23, 22, 21, 20, 18, 23, - 35, 34, 33, 32, 30, 35, - 47, 46, 45, 44, 42, 47, - 59, 58, 57, 56, 54, 59, - 71, 70, 69, 68, 66, 71}), + std::vector{11, 10, 9, 8, 6, 11, 23, 22, 21, 20, 18, 23, 35, 34, 33, 32, 30, 35, + 47, 46, 45, 44, 42, 47, 59, 58, 57, 56, 54, 59, 71, 70, 69, 68, 66, 71}), SubtractParams(ov::PartialShape{1}, ov::PartialShape{1}, IN_ET, std::vector{8}, std::vector{2}, - std::vector{6}) - }; + std::vector{6})}; return params; } @@ -108,27 +105,23 @@ template std::vector generateParamsForSubtractFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - SubtractParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{3.1}, - std::vector{8}, - std::vector{-4.9}) - }; + std::vector params{SubtractParams(ov::PartialShape{1}, + ov::PartialShape{1}, + IN_ET, + std::vector{3.1}, + std::vector{8}, + std::vector{-4.9})}; return params; } std::vector generateCombinedParamsForSubtract() { - const std::vector> allTypeParams{ - generateParamsForSubtract(), - generateParamsForSubtract(), - generateParamsForSubtract(), - generateParamsForSubtract(), - generateParamsForSubtract(), - generateParamsForSubtract(), - generateParamsForSubtract() - }; + const std::vector> allTypeParams{generateParamsForSubtract(), + generateParamsForSubtract(), + generateParamsForSubtract(), + generateParamsForSubtract(), + generateParamsForSubtract(), + generateParamsForSubtract(), + generateParamsForSubtract()}; std::vector combinedParams; @@ -142,8 +135,7 @@ std::vector generateCombinedParamsForSubtract() { std::vector generateCombinedParamsForSubtractFloat() { const std::vector> allTypeParams{ generateParamsForSubtractFloat(), - generateParamsForSubtractFloat() - }; + generateParamsForSubtractFloat()}; std::vector combinedParams; @@ -154,16 +146,14 @@ std::vector generateCombinedParamsForSubtractFloat() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Subtract_With_Hardcoded_Refs, - ReferenceSubtractLayerTest, - ::testing::ValuesIn(generateCombinedParamsForSubtract()), - ReferenceSubtractLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_Subtract_Float_With_Hardcoded_Refs, - ReferenceSubtractLayerTest, - ::testing::ValuesIn(generateCombinedParamsForSubtractFloat()), - ReferenceSubtractLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Subtract_With_Hardcoded_Refs, + ReferenceSubtractLayerTest, + ::testing::ValuesIn(generateCombinedParamsForSubtract()), + ReferenceSubtractLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Subtract_Float_With_Hardcoded_Refs, + ReferenceSubtractLayerTest, + ::testing::ValuesIn(generateCombinedParamsForSubtractFloat()), + ReferenceSubtractLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/swish.cpp b/src/plugins/template/tests/functional/op_reference/swish.cpp index d609e2b1a84e8b..5c551902f7c9a4 100644 --- a/src/plugins/template/tests/functional/op_reference/swish.cpp +++ b/src/plugins/template/tests/functional/op_reference/swish.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/swish.hpp" + #include -#include "openvino/op/swish.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,31 +14,33 @@ using namespace ov; namespace { struct SwishParams { template - SwishParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, + SwishParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, const float beta = 1) : pshape(shape), inType(iType), outType(iType), inputData(CreateTensor(iType, iValues)), beta(beta) { - std::vector oValues; - std::vector output; - std::vector betaVector; + std::vector oValues; + std::vector output; + std::vector betaVector; - for (auto element : iValues) - output.push_back(static_cast(element)); + for (auto element : iValues) + output.push_back(static_cast(element)); - std::transform(output.begin(), output.end(), output.begin(), [&beta](float x) -> float { - return (x / (1.0f + std::exp(x * beta * -1.0f))); - }); + std::transform(output.begin(), output.end(), output.begin(), [&beta](float x) -> float { + return (x / (1.0f + std::exp(x * beta * -1.0f))); + }); - for (auto element : output) - oValues.push_back(static_cast(element)); - refData = CreateTensor(outType, oValues); + for (auto element : output) + oValues.push_back(static_cast(element)); + refData = CreateTensor(outType, oValues); - betaVector.push_back(static_cast(beta)); - betaBlob = CreateTensor(inType, betaVector); - } + betaVector.push_back(static_cast(beta)); + betaBlob = CreateTensor(inType, betaVector); + } ov::PartialShape pshape; ov::element::Type inType; @@ -52,7 +55,7 @@ struct SwishParams { class ReferenceSwishLayerTest : public testing::TestWithParam, public CommonReferenceTest { public: void SetUp() override { - threshold = 0.06; // 0.01 failed in fp32 test + threshold = 0.06; // 0.01 failed in fp32 test auto params = GetParam(); function = CreateFunction(params.pshape, params.inType, params.outType, params.beta); @@ -76,16 +79,18 @@ class ReferenceSwishLayerTest : public testing::TestWithParam, publ } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& Swishected_output_type, const float beta) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& Swishected_output_type, + const float beta) { const auto in = std::make_shared(input_type, input_shape); if (beta != 1) { - const auto BETA = std::make_shared(input_type, Shape {}); + const auto BETA = std::make_shared(input_type, Shape{}); const auto Swish = std::make_shared(in, BETA); - return std::make_shared(NodeVector {Swish}, ParameterVector {in, BETA}); + return std::make_shared(NodeVector{Swish}, ParameterVector{in, BETA}); } else { const auto Swish = std::make_shared(in); - return std::make_shared(NodeVector {Swish}, ParameterVector {in}); + return std::make_shared(NodeVector{Swish}, ParameterVector{in}); } } }; @@ -98,27 +103,16 @@ template std::vector generateSwishFloatParams() { using T = typename element_type_traits::value_type; - std::vector swishParams { - SwishParams(ov::PartialShape {2, 4}, - IN_ET, - std::vector{0.4, -5.7, -6, 3, -0.9, 23, 5, 3.3}, - 0.6f), - SwishParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{1, 8, -8, 17, -0.5, -1}), - SwishParams(ov::PartialShape {2, 2, 1, 2}, - IN_ET, - std::vector{0.1, 0.6, 20, -7, -5.3, 3.5, -9, 11}, - 0.33f) - }; + std::vector swishParams{ + SwishParams(ov::PartialShape{2, 4}, IN_ET, std::vector{0.4, -5.7, -6, 3, -0.9, 23, 5, 3.3}, 0.6f), + SwishParams(ov::PartialShape{2, 3}, IN_ET, std::vector{1, 8, -8, 17, -0.5, -1}), + SwishParams(ov::PartialShape{2, 2, 1, 2}, IN_ET, std::vector{0.1, 0.6, 20, -7, -5.3, 3.5, -9, 11}, 0.33f)}; return swishParams; } std::vector generateSwishCombinedParams() { - const std::vector> swishTypeParams { - generateSwishFloatParams(), - generateSwishFloatParams() - }; + const std::vector> swishTypeParams{generateSwishFloatParams(), + generateSwishFloatParams()}; std::vector combinedParams; for (const auto& params : swishTypeParams) { @@ -127,7 +121,9 @@ std::vector generateSwishCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Swish_With_Hardcoded_Refs, ReferenceSwishLayerTest, - testing::ValuesIn(generateSwishCombinedParams()), ReferenceSwishLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Swish_With_Hardcoded_Refs, + ReferenceSwishLayerTest, + testing::ValuesIn(generateSwishCombinedParams()), + ReferenceSwishLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/tan.cpp b/src/plugins/template/tests/functional/op_reference/tan.cpp index 705c53e78cc415..6bb9983461778a 100644 --- a/src/plugins/template/tests/functional/op_reference/tan.cpp +++ b/src/plugins/template/tests/functional/op_reference/tan.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/tan.hpp" + #include -#include "openvino/op/tan.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -13,9 +14,15 @@ using namespace reference_tests; namespace { struct TanParams { template - TanParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, + TanParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, const std::vector& oValues) - :pshape(shape), inType(iType), outType(iType), inputData(CreateTensor(iType, iValues)), refData(CreateTensor(iType, oValues)) {} + : pshape(shape), + inType(iType), + outType(iType), + inputData(CreateTensor(iType, iValues)), + refData(CreateTensor(iType, oValues)) {} ov::PartialShape pshape; ov::element::Type inType; ov::element::Type outType; @@ -44,7 +51,7 @@ class ReferenceTanLayerTest : public testing::TestWithParam, public C static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type) { const auto in = std::make_shared(input_type, input_shape); const auto tan = std::make_shared(in); - return std::make_shared(tan, ParameterVector {in}); + return std::make_shared(tan, ParameterVector{in}); } }; @@ -53,27 +60,56 @@ TEST_P(ReferenceTanLayerTest, CompareWithHardcodedRefs) { } std::vector generateTanCombinedParams() { - std::vector combinedParams { - TanParams(ov::PartialShape {5}, ov::element::i32, std::vector {-2, -1, 0, 1, 2}, - std::vector {2, -2, 0, 2, -2}), - TanParams(ov::PartialShape {5}, ov::element::i64, std::vector {-2, -1, 0, 1, 2}, - std::vector {2, -2, 0, 2, -2}), - TanParams(ov::PartialShape {5}, ov::element::u32, std::vector {1, 2, 3, 4, 5}, - std::vector {2, 0xFFFFFFFF - 1, 0, 1, 0xFFFFFFFF - 2}), - TanParams(ov::PartialShape {5}, ov::element::u64, std::vector {1, 2, 3, 4, 5}, - std::vector {2, 0xFFFFFFFFFFFFFFFF - 1, 0, 1, 0xFFFFFFFFFFFFFFFF - 2}), - TanParams(ov::PartialShape {11}, ov::element::f32, std::vector {0.f, 0.25f, - -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}, - std::vector {0.00000000f, 0.25534192f, -0.25534192f, 0.54630249f, -0.54630249f, - 1.55740772f, -1.55740772f, -2.18503986f, 2.18503986f, 1.15782128f, -1.15782128f}), - TanParams(ov::PartialShape {11}, ov::element::f16, std::vector {0.f, 0.25f, - -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}, - std::vector {0.00000000f, 0.25534192f, -0.25534192f, 0.54630249f, -0.54630249f, - 1.55740772f, -1.55740772f, -2.18503986f, 2.18503986f, 1.15782128f, -1.15782128f}) - }; + std::vector combinedParams{ + TanParams(ov::PartialShape{5}, + ov::element::i32, + std::vector{-2, -1, 0, 1, 2}, + std::vector{2, -2, 0, 2, -2}), + TanParams(ov::PartialShape{5}, + ov::element::i64, + std::vector{-2, -1, 0, 1, 2}, + std::vector{2, -2, 0, 2, -2}), + TanParams(ov::PartialShape{5}, + ov::element::u32, + std::vector{1, 2, 3, 4, 5}, + std::vector{2, 0xFFFFFFFF - 1, 0, 1, 0xFFFFFFFF - 2}), + TanParams(ov::PartialShape{5}, + ov::element::u64, + std::vector{1, 2, 3, 4, 5}, + std::vector{2, 0xFFFFFFFFFFFFFFFF - 1, 0, 1, 0xFFFFFFFFFFFFFFFF - 2}), + TanParams(ov::PartialShape{11}, + ov::element::f32, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}, + std::vector{0.00000000f, + 0.25534192f, + -0.25534192f, + 0.54630249f, + -0.54630249f, + 1.55740772f, + -1.55740772f, + -2.18503986f, + 2.18503986f, + 1.15782128f, + -1.15782128f}), + TanParams(ov::PartialShape{11}, + ov::element::f16, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}, + std::vector{0.00000000f, + 0.25534192f, + -0.25534192f, + 0.54630249f, + -0.54630249f, + 1.55740772f, + -1.55740772f, + -2.18503986f, + 2.18503986f, + 1.15782128f, + -1.15782128f})}; return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TAN_With_Hardcoded_Refs, ReferenceTanLayerTest, ::testing::ValuesIn(generateTanCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_TAN_With_Hardcoded_Refs, + ReferenceTanLayerTest, + ::testing::ValuesIn(generateTanCombinedParams()), ReferenceTanLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/tanh.cpp b/src/plugins/template/tests/functional/op_reference/tanh.cpp index da0f8303d4c77e..43765f9145afb2 100644 --- a/src/plugins/template/tests/functional/op_reference/tanh.cpp +++ b/src/plugins/template/tests/functional/op_reference/tanh.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/tanh.hpp" + #include -#include "openvino/op/tanh.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ class ReferenceTanhLayerTest : public testing::TestWithParam, public static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Tanh = std::make_shared(in); - return std::make_shared(NodeVector {Tanh}, ParameterVector {in}); + return std::make_shared(NodeVector{Tanh}, ParameterVector{in}); } }; @@ -53,46 +54,55 @@ TEST_P(ReferenceTanhLayerTest, TanhWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Tanh_With_Hardcoded_Refs, ReferenceTanhLayerTest, + smoke_Tanh_With_Hardcoded_Refs, + ReferenceTanhLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f16, std::vector {-0.99932930f, - -0.96402758f, - -0.76159416f, - -0.46211716f, - -0.24491866f, - 0.00000000f, - 0.24491866f, - 0.46211716f, - 0.76159416f, - 0.96402758f, - 0.99932930f}}), - Builder {} - .input({{11}, element::f32, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f32, std::vector {-0.99932930f, - -0.96402758f, - -0.76159416f, - -0.46211716f, - -0.24491866f, - 0.00000000f, - 0.24491866f, - 0.46211716f, - 0.76159416f, - 0.96402758f, - 0.99932930f}}), - Builder {} - .input({{7}, element::i32, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i32, std::vector {-1, -1, -1, 0, 1, 1, 1}}), - Builder {} - .input({{7}, element::i64, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i64, std::vector {-1, -1, -1, 0, 1, 1, 1}}), - Builder {} - .input({{4}, element::u32, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u32, std::vector {0, 1, 1, 1}}), - Builder {} - .input({{4}, element::u64, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u64, std::vector {0, 1, 1, 1}})), + Builder{} + .input({{11}, + element::f16, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f16, + std::vector{-0.99932930f, + -0.96402758f, + -0.76159416f, + -0.46211716f, + -0.24491866f, + 0.00000000f, + 0.24491866f, + 0.46211716f, + 0.76159416f, + 0.96402758f, + 0.99932930f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f32, + std::vector{-0.99932930f, + -0.96402758f, + -0.76159416f, + -0.46211716f, + -0.24491866f, + 0.00000000f, + 0.24491866f, + 0.46211716f, + 0.76159416f, + 0.96402758f, + 0.99932930f}}), + Builder{} + .input({{7}, element::i32, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i32, std::vector{-1, -1, -1, 0, 1, 1, 1}}), + Builder{} + .input({{7}, element::i64, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i64, std::vector{-1, -1, -1, 0, 1, 1, 1}}), + Builder{} + .input({{4}, element::u32, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u32, std::vector{0, 1, 1, 1}}), + Builder{} + .input({{4}, element::u64, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u64, std::vector{0, 1, 1, 1}})), ReferenceTanhLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/tensor_iterator.cpp b/src/plugins/template/tests/functional/op_reference/tensor_iterator.cpp index 1caa12dff5c9b9..5c53422b0dad64 100644 --- a/src/plugins/template/tests/functional/op_reference/tensor_iterator.cpp +++ b/src/plugins/template/tests/functional/op_reference/tensor_iterator.cpp @@ -12,8 +12,8 @@ namespace { struct TIFunctionalBase { - virtual std::shared_ptr create_function(const std::vector &ti_inputs, - const std::vector &results) = 0; + virtual std::shared_ptr create_function(const std::vector& ti_inputs, + const std::vector& results) = 0; TIFunctionalBase() = default; @@ -21,8 +21,8 @@ struct TIFunctionalBase { }; struct TIDynamicInputs : public TIFunctionalBase { - std::shared_ptr create_function(const std::vector &ti_inputs, - const std::vector &results) override { + std::shared_ptr create_function(const std::vector& ti_inputs, + const std::vector& results) override { auto X = std::make_shared(ov::element::f32, ov::PartialShape::dynamic()); auto Y = std::make_shared(ov::element::f32, ov::PartialShape::dynamic()); auto M = std::make_shared(ov::element::f32, ov::PartialShape::dynamic()); @@ -39,8 +39,8 @@ struct TIDynamicInputs : public TIFunctionalBase { // Body auto sum = std::make_shared(Xi, Yi); auto Zo = std::make_shared(sum, M_body); - auto body = std::make_shared(ov::OutputVector{body_condition, Zo}, - ov::ParameterVector{Xi, Yi, M_body}); + auto body = + std::make_shared(ov::OutputVector{body_condition, Zo}, ov::ParameterVector{Xi, Yi, M_body}); auto tensor_iterator = std::make_shared(); tensor_iterator->set_function(body); @@ -56,14 +56,14 @@ struct TIDynamicInputs : public TIFunctionalBase { }; struct TensorIteratorParams { - TensorIteratorParams(const std::shared_ptr &functional, - const std::vector &ti_inputs, - const std::vector &expected_results, - const std::string &test_case_name) + TensorIteratorParams(const std::shared_ptr& functional, + const std::vector& ti_inputs, + const std::vector& expected_results, + const std::string& test_case_name) : function(functional), - inputs(ti_inputs), - expected_results(expected_results), - test_case_name(test_case_name) {} + inputs(ti_inputs), + expected_results(expected_results), + test_case_name(test_case_name) {} std::shared_ptr function; std::vector inputs; @@ -72,7 +72,7 @@ struct TensorIteratorParams { }; class ReferenceTILayerTest : public testing::TestWithParam, - public reference_tests::CommonReferenceTest { + public reference_tests::CommonReferenceTest { public: void SetUp() override { SKIP_IF_CURRENT_TEST_IS_DISABLED() @@ -80,15 +80,15 @@ class ReferenceTILayerTest : public testing::TestWithParam function = params.function->create_function(params.inputs, params.expected_results); inputData.reserve(params.inputs.size()); refOutData.reserve(params.expected_results.size()); - for (auto &input_tensor: params.inputs) { + for (auto& input_tensor : params.inputs) { inputData.push_back(input_tensor.data); } - for (auto &expected_tensor: params.expected_results) { + for (auto& expected_tensor : params.expected_results) { refOutData.push_back(expected_tensor.data); } } - static std::string getTestCaseName(const testing::TestParamInfo &obj) { + static std::string getTestCaseName(const testing::TestParamInfo& obj) { auto param = obj.param; return param.test_case_name; } @@ -98,20 +98,18 @@ TEST_P(ReferenceTILayerTest, TensorIteratorWithHardcodedRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P( - smoke_TensorIterator_With_Hardcoded_Refs, - ReferenceTILayerTest, - ::testing::Values( - TensorIteratorParams( - std::make_shared(), - std::vector{ - reference_tests::Tensor(ov::element::f32, ov::Shape{1, 2}, std::vector{2, 3}), - reference_tests::Tensor(ov::element::f32, ov::Shape{2, 1}, std::vector{4, 5}), - reference_tests::Tensor(ov::element::f32, ov::Shape{1, 1}, std::vector{5})}, - std::vector{ - reference_tests::Tensor(ov::element::f32, ov::Shape{1, 1}, std::vector{240})}, - "tensor_iterator_dynamic_inputs")), - ReferenceTILayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TensorIterator_With_Hardcoded_Refs, + ReferenceTILayerTest, + ::testing::Values(TensorIteratorParams( + std::make_shared(), + std::vector{ + reference_tests::Tensor(ov::element::f32, ov::Shape{1, 2}, std::vector{2, 3}), + reference_tests::Tensor(ov::element::f32, ov::Shape{2, 1}, std::vector{4, 5}), + reference_tests::Tensor(ov::element::f32, ov::Shape{1, 1}, std::vector{5})}, + std::vector{ + reference_tests::Tensor(ov::element::f32, ov::Shape{1, 1}, std::vector{240})}, + "tensor_iterator_dynamic_inputs")), + ReferenceTILayerTest::getTestCaseName); enum TensorIteratorBodyType { RNN, @@ -129,87 +127,104 @@ struct TIStaticFunctionalBase { struct TensorIteratorStaticParams { template - TensorIteratorStaticParams( - const std::shared_ptr& functional, - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const float clip, const ov::op::RecurrentSequenceDirection& direction, - const TensorIteratorBodyType& body_type, - const ov::element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& C_tValues, const std::vector& S_tValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, - const std::vector& YValues, const std::vector& HoValues, const std::vector& CoValues, - const std::string& testcaseName = "") : - function(functional), - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - clip(clip), body_type(body_type), direction(direction), iType(iType), oType(iType), - testcaseName(testcaseName) { - switch (body_type) { - case TensorIteratorBodyType::LSTM: { - ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; - ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; - ov::Shape C_tShape = ov::Shape{batchSize, hiddenSize}; - ov::Shape S_tShape = ov::Shape{batchSize}; - ov::Shape WShape = ov::Shape{4 * hiddenSize, inputSize}; - ov::Shape RShape = ov::Shape{4 * hiddenSize, hiddenSize}; - ov::Shape BShape = ov::Shape{4 * hiddenSize}; - ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; - ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; - ov::Shape CoShape = ov::Shape{batchSize, hiddenSize}; + TensorIteratorStaticParams(const std::shared_ptr& functional, + const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const float clip, + const ov::op::RecurrentSequenceDirection& direction, + const TensorIteratorBodyType& body_type, + const ov::element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& C_tValues, + const std::vector& S_tValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::vector& CoValues, + const std::string& testcaseName = "") + : function(functional), + batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + clip(clip), + body_type(body_type), + direction(direction), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + switch (body_type) { + case TensorIteratorBodyType::LSTM: { + ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; + ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; + ov::Shape C_tShape = ov::Shape{batchSize, hiddenSize}; + ov::Shape S_tShape = ov::Shape{batchSize}; + ov::Shape WShape = ov::Shape{4 * hiddenSize, inputSize}; + ov::Shape RShape = ov::Shape{4 * hiddenSize, hiddenSize}; + ov::Shape BShape = ov::Shape{4 * hiddenSize}; + ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; + ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; + ov::Shape CoShape = ov::Shape{batchSize, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); - S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - Co = reference_tests::Tensor(CoShape, oType, CoValues); - break; - } - case TensorIteratorBodyType::GRU: { - ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; - ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; - ov::Shape S_tShape = ov::Shape{batchSize}; - ov::Shape WShape = ov::Shape{3 * hiddenSize, inputSize}; - ov::Shape RShape = ov::Shape{3 * hiddenSize, hiddenSize}; - ov::Shape BShape = ov::Shape{3 * hiddenSize}; - ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; - ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); + S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + Co = reference_tests::Tensor(CoShape, oType, CoValues); + break; + } + case TensorIteratorBodyType::GRU: { + ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; + ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; + ov::Shape S_tShape = ov::Shape{batchSize}; + ov::Shape WShape = ov::Shape{3 * hiddenSize, inputSize}; + ov::Shape RShape = ov::Shape{3 * hiddenSize, hiddenSize}; + ov::Shape BShape = ov::Shape{3 * hiddenSize}; + ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; + ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - break; - } - case TensorIteratorBodyType::RNN: { - ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; - ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; - ov::Shape S_tShape = ov::Shape{batchSize}; - ov::Shape WShape = ov::Shape{hiddenSize, inputSize}; - ov::Shape RShape = ov::Shape{hiddenSize, hiddenSize}; - ov::Shape BShape = ov::Shape{hiddenSize}; - ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; - ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + break; + } + case TensorIteratorBodyType::RNN: { + ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; + ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; + ov::Shape S_tShape = ov::Shape{batchSize}; + ov::Shape WShape = ov::Shape{hiddenSize, inputSize}; + ov::Shape RShape = ov::Shape{hiddenSize, hiddenSize}; + ov::Shape BShape = ov::Shape{hiddenSize}; + ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; + ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - break; - } - } + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + break; + } } + } std::shared_ptr function; @@ -248,206 +263,213 @@ struct TIStaticInputs : public TIStaticFunctionalBase { // 1. Create TensorIterator body. // 2. Set PortMap // 3. Create outer function - auto axis = std::make_shared(ov::element::i64, ov::Shape{1}, - std::vector{static_cast(params.sequenceAxis)}); + auto axis = + std::make_shared(ov::element::i64, + ov::Shape{1}, + std::vector{static_cast(params.sequenceAxis)}); switch (params.body_type) { - case TensorIteratorBodyType::LSTM: { - inputShapes = { - {{params.batchSize, params.seqLength, params.inputSize}, // X - {params.batchSize, params.hiddenSize}, // H_i - {params.batchSize, params.hiddenSize}, // C_i - {4 * params.hiddenSize, params.inputSize}, // W - {4 * params.hiddenSize, params.inputSize}, // R - {4 * params.inputSize}}, // B - }; - if (params.sequenceAxis == 0) { - // swap params.batchSize and params.seqLength - std::swap(inputShapes[0][0], inputShapes[0][1]); - } - ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1]), - std::make_shared(params.iType, inputShapes[2])}; + case TensorIteratorBodyType::LSTM: { + inputShapes = { + {{params.batchSize, params.seqLength, params.inputSize}, // X + {params.batchSize, params.hiddenSize}, // H_i + {params.batchSize, params.hiddenSize}, // C_i + {4 * params.hiddenSize, params.inputSize}, // W + {4 * params.hiddenSize, params.inputSize}, // R + {4 * params.inputSize}}, // B + }; + if (params.sequenceAxis == 0) { + // swap params.batchSize and params.seqLength + std::swap(inputShapes[0][0], inputShapes[0][1]); + } + ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1]), + std::make_shared(params.iType, inputShapes[2])}; - // 1. Create TensorIterator body. - inputShapes[0][params.sequenceAxis] = 1; // sliced dimension - ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1]), - std::make_shared(params.iType, inputShapes[2])}; - auto squeeze = std::make_shared(body_params[0], axis); - ov::OutputVector out_vector = {squeeze, body_params[1], body_params[2]}; + // 1. Create TensorIterator body. + inputShapes[0][params.sequenceAxis] = 1; // sliced dimension + ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1]), + std::make_shared(params.iType, inputShapes[2])}; + auto squeeze = std::make_shared(body_params[0], axis); + ov::OutputVector out_vector = {squeeze, body_params[1], body_params[2]}; - auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); - auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); - auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); - auto lstm_cell = std::make_shared(out_vector[0], - out_vector[1], - out_vector[2], - W, - R, - B, - params.hiddenSize, - std::vector{"sigmoid", "tanh", "tanh"}, - std::vector{}, - std::vector{}, - params.clip); + auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); + auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); + auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); + auto lstm_cell = std::make_shared(out_vector[0], + out_vector[1], + out_vector[2], + W, + R, + B, + params.hiddenSize, + std::vector{"sigmoid", "tanh", "tanh"}, + std::vector{}, + std::vector{}, + params.clip); - auto unsqueeze = std::make_shared(lstm_cell->output(0), axis); - ov::ResultVector results{std::make_shared(unsqueeze), - std::make_shared(lstm_cell->output(0)), - std::make_shared(lstm_cell->output(1))}; - auto body = std::make_shared(results, body_params, "lstm_cell"); - tensor_iterator->set_function(body); + auto unsqueeze = std::make_shared(lstm_cell->output(0), axis); + ov::ResultVector results{std::make_shared(unsqueeze), + std::make_shared(lstm_cell->output(0)), + std::make_shared(lstm_cell->output(1))}; + auto body = std::make_shared(results, body_params, "lstm_cell"); + tensor_iterator->set_function(body); - // 2. Set PortMap - if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[0], 0, 1, 1, -1, params.sequenceAxis); - } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[0], -1, -1, 1, 0, params.sequenceAxis); - } else { - OPENVINO_ASSERT(false, "Bidirectional case is not supported."); - } + // 2. Set PortMap + if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[0], 0, 1, 1, -1, params.sequenceAxis); + } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[0], -1, -1, 1, 0, params.sequenceAxis); + } else { + OPENVINO_ASSERT(false, "Bidirectional case is not supported."); + } - tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[1]); - tensor_iterator->set_merged_input(body_params[2], outer_params[2], results[2]); - tensor_iterator->get_iter_value(results[1]); - tensor_iterator->get_iter_value(results[2]); + tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[1]); + tensor_iterator->set_merged_input(body_params[2], outer_params[2], results[2]); + tensor_iterator->get_iter_value(results[1]); + tensor_iterator->get_iter_value(results[2]); - // 3. Outer function - function = std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1), - tensor_iterator->output(2)}, outer_params); - break; + // 3. Outer function + function = std::make_shared( + ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1), tensor_iterator->output(2)}, + outer_params); + break; + } + case TensorIteratorBodyType::GRU: { + inputShapes = { + {{params.batchSize, params.seqLength, params.inputSize}, // X + {params.batchSize, params.inputSize}, // H_i + {3 * params.hiddenSize, params.inputSize}, // W + {3 * params.hiddenSize, params.hiddenSize}, // R + {3 * params.hiddenSize}}, // B + }; + if (params.sequenceAxis == 0) { + // swap params.batchSize and params.seqLength + std::swap(inputShapes[0][0], inputShapes[0][1]); } - case TensorIteratorBodyType::GRU: { - inputShapes = { - {{params.batchSize, params.seqLength, params.inputSize}, // X - {params.batchSize, params.inputSize}, // H_i - {3 * params.hiddenSize, params.inputSize}, // W - {3 * params.hiddenSize, params.hiddenSize}, // R - {3 * params.hiddenSize}}, // B - }; - if (params.sequenceAxis == 0) { - // swap params.batchSize and params.seqLength - std::swap(inputShapes[0][0], inputShapes[0][1]); - } - ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1])}; + ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1])}; - // 1. Create TensorIterator body. - inputShapes[0][params.sequenceAxis] = 1; // sliced dimension - ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1])}; + // 1. Create TensorIterator body. + inputShapes[0][params.sequenceAxis] = 1; // sliced dimension + ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1])}; - auto squeeze = std::make_shared(body_params[0], axis); - ov::OutputVector out_vector = {squeeze, body_params[1]}; + auto squeeze = std::make_shared(body_params[0], axis); + ov::OutputVector out_vector = {squeeze, body_params[1]}; - auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); - auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); - auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); - auto gru_cell = std::make_shared(out_vector[0], - out_vector[1], - W, - R, - B, - params.hiddenSize, - std::vector{"sigmoid", "tanh"}, - std::vector{}, - std::vector{}, - params.clip, - false); + auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); + auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); + auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); + auto gru_cell = std::make_shared(out_vector[0], + out_vector[1], + W, + R, + B, + params.hiddenSize, + std::vector{"sigmoid", "tanh"}, + std::vector{}, + std::vector{}, + params.clip, + false); - auto unsqueeze = std::make_shared(gru_cell->output(0), axis); - ov::ResultVector results{std::make_shared(gru_cell->output(0)), - std::make_shared(unsqueeze)}; - auto body = std::make_shared(results, body_params, "gru_cell"); - tensor_iterator->set_function(body); + auto unsqueeze = std::make_shared(gru_cell->output(0), axis); + ov::ResultVector results{std::make_shared(gru_cell->output(0)), + std::make_shared(unsqueeze)}; + auto body = std::make_shared(results, body_params, "gru_cell"); + tensor_iterator->set_function(body); - // 2. Set PortMap - if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[1], 0, 1, 1, -1, params.sequenceAxis); - } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[1], -1, -1, 1, 0, params.sequenceAxis); - } else { - OPENVINO_ASSERT(false, "Bidirectional case is not supported."); - } + // 2. Set PortMap + if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[1], 0, 1, 1, -1, params.sequenceAxis); + } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[1], -1, -1, 1, 0, params.sequenceAxis); + } else { + OPENVINO_ASSERT(false, "Bidirectional case is not supported."); + } - tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[0]); - tensor_iterator->get_iter_value(results[0]); + tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[0]); + tensor_iterator->get_iter_value(results[0]); - // 3. Outer function - function = std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1)}, outer_params); - break; + // 3. Outer function + function = + std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1)}, + outer_params); + break; + } + case TensorIteratorBodyType::RNN: { + inputShapes = { + {{params.batchSize, params.seqLength, params.inputSize}, // X + {params.batchSize, params.inputSize}, // H_i + {params.hiddenSize, params.inputSize}, // W + {params.hiddenSize, params.hiddenSize}, // R + {params.hiddenSize}}, // B + }; + if (params.sequenceAxis == 0) { + // swap params.batchSize and params.seqLength + std::swap(inputShapes[0][0], inputShapes[0][1]); } - case TensorIteratorBodyType::RNN: { - inputShapes = { - {{params.batchSize, params.seqLength, params.inputSize}, // X - {params.batchSize, params.inputSize}, // H_i - {params.hiddenSize, params.inputSize}, // W - {params.hiddenSize, params.hiddenSize}, // R - {params.hiddenSize}}, // B - }; - if (params.sequenceAxis == 0) { - // swap params.batchSize and params.seqLength - std::swap(inputShapes[0][0], inputShapes[0][1]); - } - ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1])}; + ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1])}; - // 1. Create TensorIterator body. - inputShapes[0][params.sequenceAxis] = 1; // sliced dimension - ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1])}; - auto squeeze = std::make_shared(body_params[0], axis); - ov::OutputVector out_vector = {squeeze, body_params[1]}; + // 1. Create TensorIterator body. + inputShapes[0][params.sequenceAxis] = 1; // sliced dimension + ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1])}; + auto squeeze = std::make_shared(body_params[0], axis); + ov::OutputVector out_vector = {squeeze, body_params[1]}; - auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); - auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); - auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); - auto rnn_cell = std::make_shared(out_vector[0], - out_vector[1], - W, - R, - B, - params.hiddenSize, - std::vector{"tanh"}, - std::vector{}, - std::vector{}, - params.clip); + auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); + auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); + auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); + auto rnn_cell = std::make_shared(out_vector[0], + out_vector[1], + W, + R, + B, + params.hiddenSize, + std::vector{"tanh"}, + std::vector{}, + std::vector{}, + params.clip); - auto unsqueeze = std::make_shared(rnn_cell->output(0), axis); - ov::ResultVector results{std::make_shared(rnn_cell), - std::make_shared(unsqueeze)}; - auto body = std::make_shared(results, body_params, "rnn_cell"); - tensor_iterator->set_function(body); + auto unsqueeze = std::make_shared(rnn_cell->output(0), axis); + ov::ResultVector results{std::make_shared(rnn_cell), + std::make_shared(unsqueeze)}; + auto body = std::make_shared(results, body_params, "rnn_cell"); + tensor_iterator->set_function(body); - // 2. Set PortMap - if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[1], 0, 1, 1, -1, params.sequenceAxis); - } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[1], -1, -1, 1, 0, params.sequenceAxis); - } else { - OPENVINO_ASSERT(false, "Bidirectional case is not supported."); - } + // 2. Set PortMap + if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[1], 0, 1, 1, -1, params.sequenceAxis); + } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[1], -1, -1, 1, 0, params.sequenceAxis); + } else { + OPENVINO_ASSERT(false, "Bidirectional case is not supported."); + } - tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[0]); - tensor_iterator->get_iter_value(results[0]); + tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[0]); + tensor_iterator->get_iter_value(results[0]); - // 3. Outer function - function = std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1)}, outer_params); - break; - } + // 3. Outer function + function = + std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1)}, + outer_params); + break; + } } return function; } }; class ReferenceTILayerStaticTest : public testing::TestWithParam, - public reference_tests::CommonReferenceTest { + public reference_tests::CommonReferenceTest { public: void SetUp() override { SKIP_IF_CURRENT_TEST_IS_DISABLED() @@ -491,1112 +513,1172 @@ template std::vector generateParams() { using T = typename ov::element_type_traits::value_type; - std::vector params { + std::vector params{ TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::FORWARD, TensorIteratorBodyType::LSTM, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::FORWARD, + TensorIteratorBodyType::LSTM, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{ + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, std::vector{ 0.528016, 0.668187, 0.668186, 0.635471, 0.668187, 0.659096, 0.666861, 0.666715, 0.668138, 0.668186, - 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, - 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, + 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, + 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, 0.551576, 0.664629, 0.663703, 0.592106, 0.664652, 0.615579, 0.638092, 0.637163, 0.656733, 0.663751, 0.554596, 0.656917, 0.655047, 0.582718, 0.656967, 0.601233, 0.621878, 0.620939, 0.643723, 0.65514, 0.556574, 0.643984, 0.641397, 0.575854, 0.644055, 0.589658, 0.606642, 0.605821, 0.627796, 0.641522, 0.557878, 0.628081, 0.625301, 0.570987, 0.628158, 0.580903, 0.593915, 0.593262, 0.611954, 0.625433, 0.558742, 0.612216, 0.609684, 0.567605, 0.612287, 0.574556, 0.584071, 0.583581, 0.598219, 0.609803, - 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, - 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, - 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, - 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, - 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, + 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, + 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, + 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, + 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, + 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, + 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, + 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, 0.637519, 0.598314, 0.617618, 0.610903, 0.588883, 0.618381, 0.640604, 0.612099, 0.609772, 0.641672, 0.621298, 0.587406, 0.602959, 0.597357, 0.580333, 0.603611, 0.624467, 0.598338, 0.596436, 0.625592, - 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, + 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, 0.593511, 0.573381, 0.581898, 0.578717, 0.569797, 0.582278, 0.595758, 0.579264, 0.578207, 0.596577, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, + 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, + 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, 0.667915, 0.667737, 0.667963, 0.603963, 0.665981, 0.668052, 0.668006, 0.668007, 0.652525, 0.585315, - 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, + 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, 0.660409, 0.658471, 0.661057, 0.582484, 0.648575, 0.662479, 0.661698, 0.661709, 0.621887, 0.572305, - 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, - 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, - 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, - 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, - 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, + 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, + 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, + 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, + 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, + 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, + 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, 0.668139, 0.668063, 0.668139, 0.667082, 0.653793, 0.663397, 0.640434, 0.668175, 0.667092, 0.571849, 0.667538, 0.666978, 0.667544, 0.663011, 0.639734, 0.654459, 0.624289, 0.667925, 0.663042, 0.5682, - 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, - 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, - 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, + 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, + 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, + 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, 0.627845, 0.622696, 0.627915, 0.608056, 0.584968, 0.595763, 0.577763, 0.634345, 0.608125, 0.562048, - 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, + 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, 0.598256, 0.594491, 0.598309, 0.584924, 0.572127, 0.577836, 0.568532, 0.603413, 0.584966, 0.561173, 0.587362, 0.584504, 0.587403, 0.577445, 0.568392, 0.572381, 0.565918, 0.591359, 0.577475, 0.560938, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, - 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, - 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, - 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, - 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, - 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, - 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, + 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, + 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, + 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, + 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, + 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, + 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, + 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, 0.596018, 0.597785, 0.578369, 0.586822, 0.573683, 0.563901, 0.588076, 0.565458, 0.608505, 0.612324, - 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, - 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, - 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, - 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, - 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), + 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, + 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, + 0.585993, 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, + 0.572642, 0.586082, 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, + 0.583345, 0.568079, 0.561569, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, + 0.564137, 0.582163, 0.572127, 0.560781, 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, + 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, + 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, + 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, + 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, + 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::REVERSE, TensorIteratorBodyType::LSTM, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::REVERSE, + TensorIteratorBodyType::LSTM, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{ + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, + std::vector{ + 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, + 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, 0.558742, 0.612216, 0.609684, 0.567605, 0.612287, 0.574556, 0.584071, 0.583581, 0.598219, 0.609803, 0.557878, 0.628081, 0.625301, 0.570987, 0.628158, 0.580903, 0.593915, 0.593262, 0.611954, 0.625433, 0.556574, 0.643984, 0.641397, 0.575854, 0.644055, 0.589658, 0.606642, 0.605821, 0.627796, 0.641522, 0.554596, 0.656917, 0.655047, 0.582718, 0.656967, 0.601233, 0.621878, 0.620939, 0.643723, 0.65514, 0.551576, 0.664629, 0.663703, 0.592106, 0.664652, 0.615579, 0.638092, 0.637163, 0.656733, 0.663751, - 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, - 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, + 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, + 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, 0.528016, 0.668187, 0.668186, 0.635471, 0.668187, 0.659096, 0.666861, 0.666715, 0.668138, 0.668186, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, + 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, 0.593511, 0.573381, 0.581898, 0.578717, 0.569797, 0.582278, 0.595758, 0.579264, 0.578207, 0.596577, - 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, + 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, 0.621298, 0.587406, 0.602959, 0.597357, 0.580333, 0.603611, 0.624467, 0.598338, 0.596436, 0.625592, 0.637519, 0.598314, 0.617618, 0.610903, 0.588883, 0.618381, 0.640604, 0.612099, 0.609772, 0.641672, - 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, - 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, - 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, - 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, - 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, - 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, - 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, - 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, - 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, + 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, + 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, + 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, + 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, + 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, + 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, + 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, + 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, + 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, + 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, + 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, 0.660409, 0.658471, 0.661057, 0.582484, 0.648575, 0.662479, 0.661698, 0.661709, 0.621887, 0.572305, - 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, + 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, 0.667915, 0.667737, 0.667963, 0.603963, 0.665981, 0.668052, 0.668006, 0.668007, 0.652525, 0.585315, - 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, + 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, 0.587362, 0.584504, 0.587403, 0.577445, 0.568392, 0.572381, 0.565918, 0.591359, 0.577475, 0.560938, 0.598256, 0.594491, 0.598309, 0.584924, 0.572127, 0.577836, 0.568532, 0.603413, 0.584966, 0.561173, - 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, + 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, 0.627845, 0.622696, 0.627915, 0.608056, 0.584968, 0.595763, 0.577763, 0.634345, 0.608125, 0.562048, - 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, - 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, - 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, + 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, + 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, + 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, 0.667538, 0.666978, 0.667544, 0.663011, 0.639734, 0.654459, 0.624289, 0.667925, 0.663042, 0.5682, 0.668139, 0.668063, 0.668139, 0.667082, 0.653793, 0.663397, 0.640434, 0.668175, 0.667092, 0.571849, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567, - 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, + 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567, + 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, 0.596018, 0.597785, 0.578369, 0.586822, 0.573683, 0.563901, 0.588076, 0.565458, 0.608505, 0.612324, - 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, - 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, - 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, - 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, - 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, - 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, - 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, - 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, - 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, - 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, - 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), + 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, + 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, + 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, + 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, + 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, + 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, + 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187}, + std::vector{0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, + 0.585993, 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, + 0.572642, 0.586082, 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, + 0.583345, 0.568079, 0.561569, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, + 0.564137, 0.582163, 0.572127, 0.560781, 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, + 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, + 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, + 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, + 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, + 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::FORWARD, TensorIteratorBodyType::GRU, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::FORWARD, + TensorIteratorBodyType::GRU, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, - std::vector{ - 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, - 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, - 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, - 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, - 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, - 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, - 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, - 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, - 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, - 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, - 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, - 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, - 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, - 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, - 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, - 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{ + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, + std::vector{ + 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, + 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, + 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, + 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, + 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, + 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, + 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, + 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, + 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, + 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, + 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, + 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, + 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, + 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, + 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, + 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, + 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, + 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, 0.817109, 0.689733, 0.740219, 0.720841, 0.669733, 0.742577, 0.833275, 0.724127, 0.717793, 0.839288, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, - 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, - 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, - 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, - 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, - 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, - 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, + 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, + 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, + 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, + 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, + 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, + 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, + 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, + 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, 0.898462, 0.876139, 0.907177, 0.653277, 0.805394, 0.929444, 0.916614, 0.916777, 0.717739, 0.641276, 0.800878, 0.785962, 0.806701, 0.637048, 0.738691, 0.821579, 0.813007, 0.813116, 0.680121, 0.629029, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, - 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, - 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, - 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, - 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, - 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, - 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, - 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, + 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, + 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, + 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, + 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, + 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, + 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, + 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, + 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, 0.775103, 0.756592, 0.775372, 0.713274, 0.662079, 0.684083, 0.648834, 0.802055, 0.713453, 0.623038, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241, - 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, - 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, - 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, - 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, - 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, - 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, - 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, + 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, + 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241, + 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, + 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, + 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, + 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, + 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, + 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, + 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, 0.763992, 0.772739, 0.686201, 0.721482, 0.667952, 0.632404, 0.727003, 0.637854, 0.830743, 0.853834, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, - std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, + std::vector{0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, + 0.760766, 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, + 0.680157, 0.761339, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, + 0.743851, 0.654985, 0.620846, 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, + 0.634079, 0.73646, 0.677257, 0.616843, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, + 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, std::vector{0}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::REVERSE, TensorIteratorBodyType::GRU, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::REVERSE, + TensorIteratorBodyType::GRU, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, - std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, - 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, - 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, - 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, - 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, - 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, - 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, - 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, - 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{ + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, + std::vector{ + 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, + 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, + 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, + 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, + 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, + 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, + 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, + 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, + 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, + 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, + 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, 0.817109, 0.689733, 0.740219, 0.720841, 0.669733, 0.742577, 0.833275, 0.724127, 0.717793, 0.839288, - 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, - 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, - 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, - 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, - 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, - 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, - 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, - 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, + 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, + 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, + 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, + 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, + 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, + 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, + 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, + 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, 0.800878, 0.785962, 0.806701, 0.637048, 0.738691, 0.821579, 0.813007, 0.813116, 0.680121, 0.629029, 0.898462, 0.876139, 0.907177, 0.653277, 0.805394, 0.929444, 0.916614, 0.916777, 0.717739, 0.641276, - 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, - 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, - 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, - 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, - 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, - 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, - 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, + 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, + 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, + 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, + 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, + 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, + 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, + 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, + 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, 0.775103, 0.756592, 0.775372, 0.713274, 0.662079, 0.684083, 0.648834, 0.802055, 0.713453, 0.623038, - 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, - 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, - 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, - 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, - 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, - 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, - 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, - 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, + 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, + 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, + 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, + 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, + 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, + 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, + 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, + 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058, 0.763992, 0.772739, 0.686201, 0.721482, 0.667952, 0.632404, 0.727003, 0.637854, 0.830743, 0.853834, - 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, - 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, - 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, - 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, - 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, - 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, - 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, - 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241}, - std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, + 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, + 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, + 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, + 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, + 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, + 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, + 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, + 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241}, + std::vector{0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, + 0.760766, 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, + 0.680157, 0.761339, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, + 0.743851, 0.654985, 0.620846, 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, + 0.634079, 0.73646, 0.677257, 0.616843, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, + 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, std::vector{0}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.f, ov::op::RecurrentSequenceDirection::FORWARD, TensorIteratorBodyType::RNN, + 5, + 10, + 10, + 10, + 0.f, + ov::op::RecurrentSequenceDirection::FORWARD, + TensorIteratorBodyType::RNN, ET, - std::vector{ - -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, 0.847476, -0.252158, - -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, - -0.899024, 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, - -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, - -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, 0.386911, - 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, -0.124885, 0.475875, -0.248479, -0.0135011, - -0.971921, -0.501126, -0.30573, 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, - 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, - 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, - -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, -0.298536, 0.522286, - -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, - -0.61579, 0.675731, -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, - 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, 0.159798, -0.243754, - 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, - -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, - 0.406964, 0.772353, 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, - -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, 0.194028, 0.476884, - -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, - 0.452785, -0.869765, 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, - -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, - -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, - -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, -0.59019, -0.0682369, 0.526142, - 0.0647325, 0.102044, -0.529739, -0.448041, -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, - -0.662836, -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, - -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, - -0.18924, -0.129838, 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, -0.0537746, - -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, -0.948014, 0.464231, -0.473613, 0.422959, - 0.354869, 0.641287, 0.582011, 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, - -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, -0.838224, -0.760405, -0.0744435, - 0.556972, -0.203011, 0.248964, 0.59689, -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, - -0.919203, 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, 0.700705, -0.3679, - -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, - -0.544078, 0.565815, -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, 0.556404, - -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, -0.107599, 0.699691, 0.879165, -0.605746, - 0.851844, -0.197677, -0.0638249, -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, - 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, -0.944312, 0.806772, -0.108092, - 0.089091, -0.960954, 0.725746, 0.269557, -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, - -0.815517, -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, 0.36846, -0.0844384, - -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, - -0.919986, 0.409152, -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, 0.770576, - 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, 0.142622, -0.787519, 0.509953, 0.415293, - -0.640467, 0.701937, 0.649218, 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, - -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, 0.340562, -0.927739, 0.570913, - 0.0577081, 0.345886, -0.147266, -0.920045, 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, - -0.763785, -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, -0.11752, 0.246401, - 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, - 0.159976, -0.731893, -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, 0.910255, - 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, 0.792444, 0.874022, -0.108247, 0.452289, - 0.613927, -0.608009, 0.0925679, -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, - -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, -0.848069, -0.850426, 1}, - std::vector{ - -1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, -0.132298, 0.148535, - -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, 0.350663, -0.0375085, 0.954534, -0.57807, - -0.573083, 0.887977, -0.347673, 0.972259, -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, - 0.539075, -0.983636, -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, - -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, 0.482923, 1}, + std::vector{-1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, + -0.0761474, 0.847476, -0.252158, -0.690053, 0.784687, -0.946421, -0.416995, + -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, -0.899024, + 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, + 0.474405, 0.193539, -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, + 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, -0.794512, -0.524943, + -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, + 0.386911, 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, + -0.124885, 0.475875, -0.248479, -0.0135011, -0.971921, -0.501126, -0.30573, + 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, + 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, + 0.57467, 0.434931, -0.11202, 0.501784, 0.315797, -0.278605, -0.243354, + 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, -0.551361, + -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, + -0.298536, 0.522286, -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, + 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, -0.61579, 0.675731, + -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, + -0.13792, 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, + -0.0989319, 0.530222, 0.159798, -0.243754, 0.244787, 0.478345, 0.826766, + 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, + -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, + -0.392934, -0.510492, 0.536422, 0.406964, 0.772353, 0.826283, -0.549379, + -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, -0.181486, + -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, + 0.194028, 0.476884, -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, + 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, 0.452785, -0.869765, + 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, + -0.64626, -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, + -0.266728, -0.984396, 0.310033, -0.663894, -0.00708379, 0.581608, 0.635922, + -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, + -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, + -0.59019, -0.0682369, 0.526142, 0.0647325, 0.102044, -0.529739, -0.448041, + -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, -0.662836, + -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, + 0.324356, 0.75563, -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, + 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, -0.18924, -0.129838, + 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, + -0.0537746, -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, + -0.948014, 0.464231, -0.473613, 0.422959, 0.354869, 0.641287, 0.582011, + 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, + -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, + -0.838224, -0.760405, -0.0744435, 0.556972, -0.203011, 0.248964, 0.59689, + -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, -0.919203, + 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, + 0.700705, -0.3679, -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, + -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, -0.544078, 0.565815, + -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, + 0.556404, -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, + -0.107599, 0.699691, 0.879165, -0.605746, 0.851844, -0.197677, -0.0638249, + -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, + 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, + -0.944312, 0.806772, -0.108092, 0.089091, -0.960954, 0.725746, 0.269557, + -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, -0.815517, + -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, + 0.36846, -0.0844384, -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, + 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, -0.919986, 0.409152, + -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, + 0.770576, 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, + 0.142622, -0.787519, 0.509953, 0.415293, -0.640467, 0.701937, 0.649218, + 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, + -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, + 0.340562, -0.927739, 0.570913, 0.0577081, 0.345886, -0.147266, -0.920045, + 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, -0.763785, + -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, + -0.11752, 0.246401, 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, + -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, 0.159976, -0.731893, + -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, + 0.910255, 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, + 0.792444, 0.874022, -0.108247, 0.452289, 0.613927, -0.608009, 0.0925679, + -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, + -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, + -0.848069, -0.850426, 1}, + std::vector{-1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, + -0.132298, 0.148535, -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, + 0.350663, -0.0375085, 0.954534, -0.57807, -0.573083, 0.887977, -0.347673, 0.972259, + -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, 0.539075, -0.983636, + -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, + -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, + 0.482923, 1}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, - std::vector{ - -1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, 0.782117, 0.297318, - -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, -0.95289, 0.0132674, -0.716936, 0.821415, - 0.94, -0.545582, -0.79185, -0.897178, -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, - -0.02916, 0.661658, -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, - 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, -0.833119, -0.0234757, - -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, -0.481575, 0.10334, 0.376482, -0.540745, - 0.596997, -0.946251, -0.802122, -0.393072, 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, - 0.889737, 0.809528, -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, - 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, 0.761418, 0.346103, - 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, 0.272147, 0.612127, -0.390442, 1}, - std::vector{ - -1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, -0.595043, -0.477837, - 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, -0.206045, -0.286988, 0.61286, 0.287588, - 0.220286, 0.251281, -0.327665, -0.648745, 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, - -0.650602, 0.406752, -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, - 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, -0.744722, 0.939746, - 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, 0.169792, 0.574887, 0.805658, -0.042754, - 0.419412, 0.372186, 0.730907, -0.750522, 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, - -0.405147, -0.61521, 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, - -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, 0.994596, -0.581395, - -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, -0.658721, -0.485042, -0.038087, 1}, - std::vector{ - -1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, - std::vector{ - -0.470427, -0.735855, -0.329029, 0.999017, -0.97258, -0.832011, 0.845522, 0.894361, 0.958116, 0.224556, - -0.194886, 0.7597, -0.979301, 0.857585, -0.317987, 0.646902, 0.593991, 0.999861, 0.538864, 0.927538, - 0.37339, -0.72924, -0.950366, 0.998894, -0.345412, 0.999566, -0.905088, 0.653838, 0.931462, 0.963299, - -0.906984, 0.0686653, -0.987239, -0.536094, 0.796584, 0.99365, -0.558737, 0.999976, -0.599586, 0.998812, - 0.983484, -0.701986, 0.423666, -0.135422, 0.989586, 0.139235, 0.685596, -0.461324, -0.99599, 0.953192, - -0.966443, 0.971833, 0.924096, -0.966079, 0.999922, 0.619564, 0.992519, -0.955464, -0.780334, 0.996958, - 0.754961, -0.856074, 0.390907, 0.0981389, 0.119931, -0.998381, 0.999874, -0.831976, -0.451887, 0.995945, - -0.999099, -0.0742243, 0.0827845, 0.612425, 0.999317, -0.937344, 0.983523, 0.995035, 0.585578, 0.977957, - -0.43647, 0.388421, -0.258281, 0.999908, 0.831387, 0.667824, 0.562112, 0.922843, 0.822575, -0.242546, - 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, 0.0274753, 0.835067, - -0.888153, 0.515512, -0.535921, 0.959418, -0.562229, -0.987868, 0.792129, 0.475789, 0.514164, -0.984779, - 0.0509315, -0.982143, -0.67308, 0.999919, -0.996151, -0.260185, 0.199735, 0.993083, 0.969637, -0.910127, - -0.675983, 0.70171, -0.299249, 0.829332, 0.944843, 0.999636, -0.939607, 0.989802, 0.988641, 0.905483, - -0.646793, 0.164027, -0.106558, 0.912668, 0.865034, 0.996346, -0.954819, 0.658484, -0.733437, 0.981117, - 0.370026, 0.921197, -0.488649, 0.0900238, 0.0720321, 0.992835, 0.585617, -0.46584, -0.903143, 0.99996, - -0.356482, -0.749733, 0.932796, -0.465316, 0.97494, 0.899907, -0.67506, -0.965299, 0.454869, 0.988603, - -0.982064, 0.828854, -0.220461, -0.86623, -0.339239, -0.96652, 0.991063, 0.991035, 0.777575, 0.999398, - 0.946364, 0.880981, -0.998482, 0.547716, 0.999092, -0.992971, 0.697291, 0.963563, -0.891479, 0.300176, - 0.364938, 0.775309, -0.820081, -0.376288, 0.999946, 0.558757, 0.997203, -0.866317, -0.999996, -0.941121, - 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, - 0.681976, -0.725531, 0.510584, 0.12361, 0.125229, 0.977814, -0.998011, -0.965556, -0.631127, 0.871774, - -0.995246, 0.831005, 0.603614, -0.976149, 0.723436, 0.005006, -0.813208, 0.378399, 0.675123, 0.999891, - -0.91046, 0.734962, 0.983588, 0.29022, 0.353188, -0.987676, 0.607138, 0.0411221, -0.694228, 0.70539, - 0.932037, 0.733177, -0.964759, 0.257687, 0.195126, -0.995997, 0.998685, 0.826683, -0.990081, 0.991014, - -0.950626, -0.146971, -0.715613, 0.841348, 0.998419, -0.887543, 0.961327, 0.600526, -0.994247, -0.619601, - 0.84072, -0.738013, -0.698475, 0.999502, 0.881153, -0.793456, 0.739883, 0.0180047, 0.4453, -0.485067, - 0.313446, 0.99986, 0.801312, -0.827691, 0.933498, 0.999094, 0.803509, -0.98389, -0.00203269, 0.846717, - -0.988731, -0.155845, 0.813561, -0.821903, 0.876179, -0.974753, 0.978543, -0.888744, 0.618244, 0.827802, - -0.891081, 0.997132, -0.574761, -0.133318, 0.51666, -0.998325, 0.998647, 0.557186, 0.745226, 0.750499, - -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, - -0.89536, 0.233029, -0.512256, 0.0501049, 0.914272, -0.446383, -0.0660111, 0.987471, -0.293181, 0.0090407, - 0.993962, 0.725552, 0.861327, 0.802724, 0.996225, -0.357275, 0.692737, -0.765375, -0.923606, 0.94725, - -0.976212, 0.112285, 0.116271, 0.625773, -0.107807, -0.991827, 0.616004, -0.187246, -0.546877, 0.598621, - 0.984211, 0.834327, -0.949712, 0.697382, 0.314412, 0.264601, -0.0311285, -0.167991, -0.815124, 0.938068, - -0.997105, -0.0607237, 0.323916, -0.751497, 0.967815, 0.488129, 0.992229, 0.909782, -0.994726, 0.944747, - 0.0310377, -0.997291, -0.57774, 0.999577, 0.952662, -0.993977, 0.966995, 0.653885, 0.81589, -0.00180226, - 0.919955, 0.999967, -0.388806, -0.69297, 0.998599, 0.989852, 0.977406, 0.454365, -0.613587, 0.96152, - 0.668411, -0.834641, 0.808747, -0.218147, 0.994641, 0.649985, 0.983425, -0.999456, -0.993521, -0.237065, - -0.90937, 0.803391, -0.959971, -0.966409, 0.914242, -0.890865, 0.974014, -0.926672, -0.0687355, -0.127353, - 0.662279, -0.589603, 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, - -0.873948, 0.587376, -0.0521998, 0.796093, 0.814562, -0.270571, 0.85441, 0.943845, 0.98825, 0.685685, - -0.451584, 0.0440054, -0.999464, 0.999774, 0.460959, 0.681076, -0.324321, 0.967583, 0.654874, -0.168221, - 0.667043, 0.960345, -0.97207, -0.595059, -0.106839, 0.993147, 0.943661, 0.942445, -0.939552, 0.971532, - -0.300632, -0.791734, 0.396844, -0.757931, 0.995531, 0.657585, 0.997931, -0.830918, -0.989057, 0.804422, - 0.851206, 0.947814, -0.89455, -0.972667, 0.973761, -0.978947, 0.71407, -0.969456, -0.0211013, 0.75895, - -0.824819, 0.994166, 0.996015, -0.911606, 0.992728, -0.180097, 0.999886, -0.970702, -0.859906, 0.384982, - 0.399817, -0.871178, 0.992977, 0.360447, -0.310061, -0.999914, 0.999989, -0.551683, -0.639379, 0.840487, - -0.977291, 0.950401, -0.958736, -0.796325, 0.997133, -0.937949, 0.994022, 0.99259, -0.233032, 0.999401, - 0.996386, 0.496829, 0.983234, 0.972622, 0.999547, 0.0118207, 0.977296, -0.989754, -0.984194, -0.799701, - -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, -0.547825, 0.689601}, - std::vector{ - 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, 0.0274753, 0.835067, - 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, - -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, - 0.662279, -0.589603, 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, - -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, -0.547825, 0.689601}, + std::vector{-1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, + 0.782117, 0.297318, -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, + -0.95289, 0.0132674, -0.716936, 0.821415, 0.94, -0.545582, -0.79185, -0.897178, + -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, -0.02916, 0.661658, + -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, + 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, + -0.833119, -0.0234757, -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, + -0.481575, 0.10334, 0.376482, -0.540745, 0.596997, -0.946251, -0.802122, -0.393072, + 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, 0.889737, 0.809528, + -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, + 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, + 0.761418, 0.346103, 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, + 0.272147, 0.612127, -0.390442, 1}, + std::vector{-1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, + -0.595043, -0.477837, 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, + -0.206045, -0.286988, 0.61286, 0.287588, 0.220286, 0.251281, -0.327665, -0.648745, + 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, -0.650602, 0.406752, + -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, + 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, + -0.744722, 0.939746, 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, + 0.169792, 0.574887, 0.805658, -0.042754, 0.419412, 0.372186, 0.730907, -0.750522, + 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, -0.405147, -0.61521, + 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, + -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, + 0.994596, -0.581395, -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, + -0.658721, -0.485042, -0.038087, 1}, + std::vector{-1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, + std::vector{ + -0.470427, -0.735855, -0.329029, 0.999017, -0.97258, -0.832011, 0.845522, 0.894361, + 0.958116, 0.224556, -0.194886, 0.7597, -0.979301, 0.857585, -0.317987, 0.646902, + 0.593991, 0.999861, 0.538864, 0.927538, 0.37339, -0.72924, -0.950366, 0.998894, + -0.345412, 0.999566, -0.905088, 0.653838, 0.931462, 0.963299, -0.906984, 0.0686653, + -0.987239, -0.536094, 0.796584, 0.99365, -0.558737, 0.999976, -0.599586, 0.998812, + 0.983484, -0.701986, 0.423666, -0.135422, 0.989586, 0.139235, 0.685596, -0.461324, + -0.99599, 0.953192, -0.966443, 0.971833, 0.924096, -0.966079, 0.999922, 0.619564, + 0.992519, -0.955464, -0.780334, 0.996958, 0.754961, -0.856074, 0.390907, 0.0981389, + 0.119931, -0.998381, 0.999874, -0.831976, -0.451887, 0.995945, -0.999099, -0.0742243, + 0.0827845, 0.612425, 0.999317, -0.937344, 0.983523, 0.995035, 0.585578, 0.977957, + -0.43647, 0.388421, -0.258281, 0.999908, 0.831387, 0.667824, 0.562112, 0.922843, + 0.822575, -0.242546, 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, + 0.817433, -0.981772, 0.0274753, 0.835067, -0.888153, 0.515512, -0.535921, 0.959418, + -0.562229, -0.987868, 0.792129, 0.475789, 0.514164, -0.984779, 0.0509315, -0.982143, + -0.67308, 0.999919, -0.996151, -0.260185, 0.199735, 0.993083, 0.969637, -0.910127, + -0.675983, 0.70171, -0.299249, 0.829332, 0.944843, 0.999636, -0.939607, 0.989802, + 0.988641, 0.905483, -0.646793, 0.164027, -0.106558, 0.912668, 0.865034, 0.996346, + -0.954819, 0.658484, -0.733437, 0.981117, 0.370026, 0.921197, -0.488649, 0.0900238, + 0.0720321, 0.992835, 0.585617, -0.46584, -0.903143, 0.99996, -0.356482, -0.749733, + 0.932796, -0.465316, 0.97494, 0.899907, -0.67506, -0.965299, 0.454869, 0.988603, + -0.982064, 0.828854, -0.220461, -0.86623, -0.339239, -0.96652, 0.991063, 0.991035, + 0.777575, 0.999398, 0.946364, 0.880981, -0.998482, 0.547716, 0.999092, -0.992971, + 0.697291, 0.963563, -0.891479, 0.300176, 0.364938, 0.775309, -0.820081, -0.376288, + 0.999946, 0.558757, 0.997203, -0.866317, -0.999996, -0.941121, 0.784196, -0.940529, + -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, + 0.681976, -0.725531, 0.510584, 0.12361, 0.125229, 0.977814, -0.998011, -0.965556, + -0.631127, 0.871774, -0.995246, 0.831005, 0.603614, -0.976149, 0.723436, 0.005006, + -0.813208, 0.378399, 0.675123, 0.999891, -0.91046, 0.734962, 0.983588, 0.29022, + 0.353188, -0.987676, 0.607138, 0.0411221, -0.694228, 0.70539, 0.932037, 0.733177, + -0.964759, 0.257687, 0.195126, -0.995997, 0.998685, 0.826683, -0.990081, 0.991014, + -0.950626, -0.146971, -0.715613, 0.841348, 0.998419, -0.887543, 0.961327, 0.600526, + -0.994247, -0.619601, 0.84072, -0.738013, -0.698475, 0.999502, 0.881153, -0.793456, + 0.739883, 0.0180047, 0.4453, -0.485067, 0.313446, 0.99986, 0.801312, -0.827691, + 0.933498, 0.999094, 0.803509, -0.98389, -0.00203269, 0.846717, -0.988731, -0.155845, + 0.813561, -0.821903, 0.876179, -0.974753, 0.978543, -0.888744, 0.618244, 0.827802, + -0.891081, 0.997132, -0.574761, -0.133318, 0.51666, -0.998325, 0.998647, 0.557186, + 0.745226, 0.750499, -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, + 0.995547, 0.970334, -0.285624, 0.876872, -0.89536, 0.233029, -0.512256, 0.0501049, + 0.914272, -0.446383, -0.0660111, 0.987471, -0.293181, 0.0090407, 0.993962, 0.725552, + 0.861327, 0.802724, 0.996225, -0.357275, 0.692737, -0.765375, -0.923606, 0.94725, + -0.976212, 0.112285, 0.116271, 0.625773, -0.107807, -0.991827, 0.616004, -0.187246, + -0.546877, 0.598621, 0.984211, 0.834327, -0.949712, 0.697382, 0.314412, 0.264601, + -0.0311285, -0.167991, -0.815124, 0.938068, -0.997105, -0.0607237, 0.323916, -0.751497, + 0.967815, 0.488129, 0.992229, 0.909782, -0.994726, 0.944747, 0.0310377, -0.997291, + -0.57774, 0.999577, 0.952662, -0.993977, 0.966995, 0.653885, 0.81589, -0.00180226, + 0.919955, 0.999967, -0.388806, -0.69297, 0.998599, 0.989852, 0.977406, 0.454365, + -0.613587, 0.96152, 0.668411, -0.834641, 0.808747, -0.218147, 0.994641, 0.649985, + 0.983425, -0.999456, -0.993521, -0.237065, -0.90937, 0.803391, -0.959971, -0.966409, + 0.914242, -0.890865, 0.974014, -0.926672, -0.0687355, -0.127353, 0.662279, -0.589603, + 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, + -0.873948, 0.587376, -0.0521998, 0.796093, 0.814562, -0.270571, 0.85441, 0.943845, + 0.98825, 0.685685, -0.451584, 0.0440054, -0.999464, 0.999774, 0.460959, 0.681076, + -0.324321, 0.967583, 0.654874, -0.168221, 0.667043, 0.960345, -0.97207, -0.595059, + -0.106839, 0.993147, 0.943661, 0.942445, -0.939552, 0.971532, -0.300632, -0.791734, + 0.396844, -0.757931, 0.995531, 0.657585, 0.997931, -0.830918, -0.989057, 0.804422, + 0.851206, 0.947814, -0.89455, -0.972667, 0.973761, -0.978947, 0.71407, -0.969456, + -0.0211013, 0.75895, -0.824819, 0.994166, 0.996015, -0.911606, 0.992728, -0.180097, + 0.999886, -0.970702, -0.859906, 0.384982, 0.399817, -0.871178, 0.992977, 0.360447, + -0.310061, -0.999914, 0.999989, -0.551683, -0.639379, 0.840487, -0.977291, 0.950401, + -0.958736, -0.796325, 0.997133, -0.937949, 0.994022, 0.99259, -0.233032, 0.999401, + 0.996386, 0.496829, 0.983234, 0.972622, 0.999547, 0.0118207, 0.977296, -0.989754, + -0.984194, -0.799701, -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, + 0.998866, -0.990042, -0.547825, 0.689601}, + std::vector{0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, + 0.0274753, 0.835067, 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, + 0.497822, -0.998929, -0.126009, -0.999082, -0.151921, 0.471127, -0.0807336, 0.991118, + 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, 0.662279, -0.589603, + 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, + -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, + -0.547825, 0.689601}, std::vector{0}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.f, ov::op::RecurrentSequenceDirection::REVERSE, TensorIteratorBodyType::RNN, + 5, + 10, + 10, + 10, + 0.f, + ov::op::RecurrentSequenceDirection::REVERSE, + TensorIteratorBodyType::RNN, ET, - std::vector{ - -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, 0.847476, -0.252158, - -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, - -0.899024, 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, - -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, - -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, 0.386911, - 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, -0.124885, 0.475875, -0.248479, -0.0135011, - -0.971921, -0.501126, -0.30573, 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, - 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, - 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, - -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, -0.298536, 0.522286, - -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, - -0.61579, 0.675731, -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, - 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, 0.159798, -0.243754, - 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, - -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, - 0.406964, 0.772353, 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, - -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, 0.194028, 0.476884, - -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, - 0.452785, -0.869765, 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, - -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, - -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, - -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, -0.59019, -0.0682369, 0.526142, - 0.0647325, 0.102044, -0.529739, -0.448041, -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, - -0.662836, -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, - -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, - -0.18924, -0.129838, 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, -0.0537746, - -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, -0.948014, 0.464231, -0.473613, 0.422959, - 0.354869, 0.641287, 0.582011, 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, - -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, -0.838224, -0.760405, -0.0744435, - 0.556972, -0.203011, 0.248964, 0.59689, -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, - -0.919203, 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, 0.700705, -0.3679, - -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, - -0.544078, 0.565815, -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, 0.556404, - -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, -0.107599, 0.699691, 0.879165, -0.605746, - 0.851844, -0.197677, -0.0638249, -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, - 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, -0.944312, 0.806772, -0.108092, - 0.089091, -0.960954, 0.725746, 0.269557, -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, - -0.815517, -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, 0.36846, -0.0844384, - -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, - -0.919986, 0.409152, -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, 0.770576, - 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, 0.142622, -0.787519, 0.509953, 0.415293, - -0.640467, 0.701937, 0.649218, 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, - -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, 0.340562, -0.927739, 0.570913, - 0.0577081, 0.345886, -0.147266, -0.920045, 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, - -0.763785, -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, -0.11752, 0.246401, - 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, - 0.159976, -0.731893, -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, 0.910255, - 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, 0.792444, 0.874022, -0.108247, 0.452289, - 0.613927, -0.608009, 0.0925679, -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, - -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, -0.848069, -0.850426, 1}, - std::vector{ - -1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, -0.132298, 0.148535, - -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, 0.350663, -0.0375085, 0.954534, -0.57807, - -0.573083, 0.887977, -0.347673, 0.972259, -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, - 0.539075, -0.983636, -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, - -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, 0.482923, 1}, + std::vector{-1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, + -0.0761474, 0.847476, -0.252158, -0.690053, 0.784687, -0.946421, -0.416995, + -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, -0.899024, + 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, + 0.474405, 0.193539, -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, + 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, -0.794512, -0.524943, + -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, + 0.386911, 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, + -0.124885, 0.475875, -0.248479, -0.0135011, -0.971921, -0.501126, -0.30573, + 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, + 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, + 0.57467, 0.434931, -0.11202, 0.501784, 0.315797, -0.278605, -0.243354, + 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, -0.551361, + -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, + -0.298536, 0.522286, -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, + 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, -0.61579, 0.675731, + -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, + -0.13792, 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, + -0.0989319, 0.530222, 0.159798, -0.243754, 0.244787, 0.478345, 0.826766, + 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, + -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, + -0.392934, -0.510492, 0.536422, 0.406964, 0.772353, 0.826283, -0.549379, + -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, -0.181486, + -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, + 0.194028, 0.476884, -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, + 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, 0.452785, -0.869765, + 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, + -0.64626, -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, + -0.266728, -0.984396, 0.310033, -0.663894, -0.00708379, 0.581608, 0.635922, + -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, + -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, + -0.59019, -0.0682369, 0.526142, 0.0647325, 0.102044, -0.529739, -0.448041, + -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, -0.662836, + -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, + 0.324356, 0.75563, -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, + 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, -0.18924, -0.129838, + 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, + -0.0537746, -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, + -0.948014, 0.464231, -0.473613, 0.422959, 0.354869, 0.641287, 0.582011, + 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, + -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, + -0.838224, -0.760405, -0.0744435, 0.556972, -0.203011, 0.248964, 0.59689, + -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, -0.919203, + 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, + 0.700705, -0.3679, -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, + -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, -0.544078, 0.565815, + -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, + 0.556404, -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, + -0.107599, 0.699691, 0.879165, -0.605746, 0.851844, -0.197677, -0.0638249, + -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, + 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, + -0.944312, 0.806772, -0.108092, 0.089091, -0.960954, 0.725746, 0.269557, + -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, -0.815517, + -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, + 0.36846, -0.0844384, -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, + 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, -0.919986, 0.409152, + -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, + 0.770576, 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, + 0.142622, -0.787519, 0.509953, 0.415293, -0.640467, 0.701937, 0.649218, + 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, + -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, + 0.340562, -0.927739, 0.570913, 0.0577081, 0.345886, -0.147266, -0.920045, + 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, -0.763785, + -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, + -0.11752, 0.246401, 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, + -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, 0.159976, -0.731893, + -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, + 0.910255, 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, + 0.792444, 0.874022, -0.108247, 0.452289, 0.613927, -0.608009, 0.0925679, + -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, + -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, + -0.848069, -0.850426, 1}, + std::vector{-1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, + -0.132298, 0.148535, -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, + 0.350663, -0.0375085, 0.954534, -0.57807, -0.573083, 0.887977, -0.347673, 0.972259, + -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, 0.539075, -0.983636, + -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, + -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, + 0.482923, 1}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, - std::vector{ - -1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, 0.782117, 0.297318, - -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, -0.95289, 0.0132674, -0.716936, 0.821415, - 0.94, -0.545582, -0.79185, -0.897178, -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, - -0.02916, 0.661658, -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, - 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, -0.833119, -0.0234757, - -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, -0.481575, 0.10334, 0.376482, -0.540745, - 0.596997, -0.946251, -0.802122, -0.393072, 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, - 0.889737, 0.809528, -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, - 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, 0.761418, 0.346103, - 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, 0.272147, 0.612127, -0.390442, 1}, - std::vector{ - -1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, -0.595043, -0.477837, - 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, -0.206045, -0.286988, 0.61286, 0.287588, - 0.220286, 0.251281, -0.327665, -0.648745, 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, - -0.650602, 0.406752, -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, - 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, -0.744722, 0.939746, - 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, 0.169792, 0.574887, 0.805658, -0.042754, - 0.419412, 0.372186, 0.730907, -0.750522, 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, - -0.405147, -0.61521, 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, - -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, 0.994596, -0.581395, - -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, -0.658721, -0.485042, -0.038087, 1}, - std::vector{ - -1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, - std::vector{ - 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, 0.363935, -0.0884402, - -0.990447, 0.842608, 0.657827, -0.362801, 0.295894, 0.222178, 0.972885, 0.957886, -0.376478, 0.504993, - 0.965053, -0.229597, -0.946319, 0.999672, 0.998961, -0.195694, 0.586567, -0.58356, 0.631116, 0.416555, - -0.725706, 0.0420496, -0.999482, -0.508284, 0.998452, -0.989286, 0.958206, 0.99888, -0.480881, 0.982364, - 0.346879, -0.687323, -0.160273, -0.0172902, -0.303112, -0.950921, 0.991803, -0.710375, -0.933744, 0.991481, - -0.659493, 0.754693, 0.754852, 0.236133, 0.989564, 0.999994, 0.684852, -0.369004, -0.847966, 0.979346, - 0.834702, 0.835757, -0.997023, 0.951418, -0.477717, 0.981288, 0.927471, 0.999848, 0.734415, 0.999904, - -0.991467, -0.766918, 0.62936, 0.964863, -0.857313, -0.0870588, 0.835937, 0.999409, 0.999204, 0.997886, - -0.999555, -0.592204, 0.971622, 0.798724, -0.568013, 0.283743, 0.828658, -0.549155, 0.834866, -0.133557, - 0.920764, 0.999356, 0.694179, -0.30478, 0.427957, 0.281501, 0.429332, -0.936185, 0.347986, 0.950708, - -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, - -0.940115, -0.985955, 0.544464, 0.998682, -0.969063, -0.18267, 0.237068, 0.997719, -0.0337554, 0.905842, - -0.878285, 0.309217, -0.0181193, 0.525607, 0.973771, 0.999497, -0.995735, 0.998789, 0.789885, 0.999584, - -0.736026, -0.435883, -0.953494, 0.903303, -0.417712, 0.997552, -0.981539, 0.869809, 0.98394, 0.991402, - -0.988794, 0.999331, -0.158609, 0.780733, -0.969231, 0.909109, 0.999747, -0.381524, 0.972722, 0.994431, - 0.630485, 0.472457, 0.995772, 0.91051, 0.911919, -0.941698, 0.954069, -0.988044, 0.992782, -0.139916, - -0.566348, 0.763459, -0.0718403, -0.72653, 0.979029, -0.995935, 0.999778, -0.738847, 0.210184, -0.737883, - 0.988825, -0.816843, 0.0513971, -0.839016, 0.988178, -0.992621, 0.848743, -0.998577, -0.929295, -0.919254, - -0.43992, 0.93494, -0.647745, -0.780525, 0.918286, 0.992679, 0.912136, 0.383811, -0.994623, -0.820734, - 0.775965, 0.433662, -0.926421, 0.989989, -0.476612, -0.854611, 0.473324, 0.263526, 0.410454, -0.995444, - -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, - -0.539351, 0.163227, 0.960576, -0.520992, -0.779952, -0.939853, -0.248751, -0.933185, 0.96781, 0.998035, - -0.748558, -0.422557, 0.652144, 0.289789, 0.942327, 0.989907, -0.541705, -0.967179, -0.992064, -0.679435, - 0.987373, 0.88219, -0.990581, 0.966343, 0.149118, 0.900446, 0.967235, 0.996815, -0.959944, 0.950417, - -0.998807, 0.981472, -0.715279, 0.854894, -0.575615, -0.996191, 0.938588, 0.99962, 0.997776, 0.996625, - -0.993116, -0.974635, 0.797837, 0.757842, 0.414458, -0.995602, 0.997473, -0.928389, 0.585003, 0.685336, - 0.35296, 0.999335, 0.815556, -0.978755, 0.977322, 0.862941, 0.844783, -0.999172, -0.737575, 0.868368, - 0.850968, -0.355691, -0.477411, 0.670716, 0.999938, -0.985769, 0.753579, -0.861071, -0.947635, -0.441339, - -0.636707, 0.958056, -0.917965, -0.888682, 0.887396, -0.469046, 0.878908, 0.343275, -0.953879, 0.983756, - -0.265801, -0.874482, 0.732147, 0.142205, 0.488677, 0.601925, 0.0526216, 0.707467, -0.793197, 0.99486, - -0.851224, -0.910939, 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, - 0.351675, 0.738722, 0.784989, -0.98241, 0.901682, 0.0865038, -0.847449, 0.575283, 0.329635, 0.999976, - -0.637486, -0.843608, 0.551505, -0.177101, -0.372926, 0.935283, -0.990545, -0.149183, -0.491596, 0.541562, - 0.996025, 0.472454, -0.845026, 0.991427, -0.334852, 0.999497, -0.0331139, 0.0179286, -0.837703, 0.512776, - -0.984419, 0.979792, -0.974191, 0.925265, -0.135773, 0.0270891, 0.996536, 0.999985, 0.979748, 0.998403, - -0.993161, -0.996728, 0.638566, 0.991593, -0.560185, -0.999493, 0.993987, 0.271173, 0.98406, 0.322271, - -0.334357, 0.997101, 0.943976, -0.999868, 0.880896, 0.709814, 0.982917, -0.995932, -0.474997, 0.995407, - 0.96453, -0.753175, 0.651881, 0.526273, 0.902097, 0.992134, 0.507577, -0.999034, -0.996382, -0.673348, - 0.819122, 0.779549, -0.999686, 0.974422, 0.880611, 0.6546, 0.6598, 0.96634, -0.920738, -0.418959, - -0.954179, 0.87176, -0.330375, 0.223247, -0.100151, -0.310826, 0.93752, 0.996072, 0.883849, 0.902299, - 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, 0.984892, 0.21006, - -0.707005, -0.612093, -0.996712, 0.953598, 0.999635, -0.958756, 0.196832, -0.816948, -0.822502, -0.969466, - 0.440709, 0.915352, -0.987622, -0.756492, 0.811622, -0.999958, 0.999982, -0.47131, -0.907012, 0.897248, - -0.954296, 0.86897, 0.92591, -0.945222, 0.996168, -0.983258, 0.999693, -0.883999, -0.800457, 0.18094, - 0.985958, 0.362557, -0.882676, -0.598648, 0.887364, -0.970348, 0.756076, -0.993787, -0.968946, -0.118565, - -0.636271, 0.998778, -0.0656388, -0.527903, 0.990153, 0.781603, 0.999725, -0.246065, -0.97279, 0.986471, - 0.984443, -0.70469, 0.701, 0.981588, 0.982162, -0.994913, 0.99988, 0.698499, -0.996202, 0.541067, - -0.990485, 0.844747, -0.222405, -0.209739, 0.91219, -0.989144, 0.999699, 0.724279, -0.885552, 0.988889, - 0.58029, 0.759885, 0.99201, 0.818603, 0.873055, -0.884289, 0.99798, -0.965469, -0.480964, 0.475605, - -0.781967, 0.99447, 0.863794, -0.861781, 0.891732, -0.547791, 0.97225, -0.00379388, 0.342407, 0.92741}, - std::vector{ - 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, 0.363935, -0.0884402, - -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, - -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, - -0.851224, -0.910939, 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, - 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, 0.984892, 0.21006}, + std::vector{-1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, + 0.782117, 0.297318, -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, + -0.95289, 0.0132674, -0.716936, 0.821415, 0.94, -0.545582, -0.79185, -0.897178, + -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, -0.02916, 0.661658, + -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, + 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, + -0.833119, -0.0234757, -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, + -0.481575, 0.10334, 0.376482, -0.540745, 0.596997, -0.946251, -0.802122, -0.393072, + 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, 0.889737, 0.809528, + -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, + 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, + 0.761418, 0.346103, 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, + 0.272147, 0.612127, -0.390442, 1}, + std::vector{-1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, + -0.595043, -0.477837, 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, + -0.206045, -0.286988, 0.61286, 0.287588, 0.220286, 0.251281, -0.327665, -0.648745, + 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, -0.650602, 0.406752, + -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, + 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, + -0.744722, 0.939746, 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, + 0.169792, 0.574887, 0.805658, -0.042754, 0.419412, 0.372186, 0.730907, -0.750522, + 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, -0.405147, -0.61521, + 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, + -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, + 0.994596, -0.581395, -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, + -0.658721, -0.485042, -0.038087, 1}, + std::vector{-1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, + std::vector{ + 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, + 0.363935, -0.0884402, -0.990447, 0.842608, 0.657827, -0.362801, 0.295894, 0.222178, + 0.972885, 0.957886, -0.376478, 0.504993, 0.965053, -0.229597, -0.946319, 0.999672, + 0.998961, -0.195694, 0.586567, -0.58356, 0.631116, 0.416555, -0.725706, 0.0420496, + -0.999482, -0.508284, 0.998452, -0.989286, 0.958206, 0.99888, -0.480881, 0.982364, + 0.346879, -0.687323, -0.160273, -0.0172902, -0.303112, -0.950921, 0.991803, -0.710375, + -0.933744, 0.991481, -0.659493, 0.754693, 0.754852, 0.236133, 0.989564, 0.999994, + 0.684852, -0.369004, -0.847966, 0.979346, 0.834702, 0.835757, -0.997023, 0.951418, + -0.477717, 0.981288, 0.927471, 0.999848, 0.734415, 0.999904, -0.991467, -0.766918, + 0.62936, 0.964863, -0.857313, -0.0870588, 0.835937, 0.999409, 0.999204, 0.997886, + -0.999555, -0.592204, 0.971622, 0.798724, -0.568013, 0.283743, 0.828658, -0.549155, + 0.834866, -0.133557, 0.920764, 0.999356, 0.694179, -0.30478, 0.427957, 0.281501, + 0.429332, -0.936185, 0.347986, 0.950708, -0.888573, 0.608715, -0.999921, 0.828499, + -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, -0.940115, -0.985955, + 0.544464, 0.998682, -0.969063, -0.18267, 0.237068, 0.997719, -0.0337554, 0.905842, + -0.878285, 0.309217, -0.0181193, 0.525607, 0.973771, 0.999497, -0.995735, 0.998789, + 0.789885, 0.999584, -0.736026, -0.435883, -0.953494, 0.903303, -0.417712, 0.997552, + -0.981539, 0.869809, 0.98394, 0.991402, -0.988794, 0.999331, -0.158609, 0.780733, + -0.969231, 0.909109, 0.999747, -0.381524, 0.972722, 0.994431, 0.630485, 0.472457, + 0.995772, 0.91051, 0.911919, -0.941698, 0.954069, -0.988044, 0.992782, -0.139916, + -0.566348, 0.763459, -0.0718403, -0.72653, 0.979029, -0.995935, 0.999778, -0.738847, + 0.210184, -0.737883, 0.988825, -0.816843, 0.0513971, -0.839016, 0.988178, -0.992621, + 0.848743, -0.998577, -0.929295, -0.919254, -0.43992, 0.93494, -0.647745, -0.780525, + 0.918286, 0.992679, 0.912136, 0.383811, -0.994623, -0.820734, 0.775965, 0.433662, + -0.926421, 0.989989, -0.476612, -0.854611, 0.473324, 0.263526, 0.410454, -0.995444, + -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, + 0.956929, 0.996744, -0.539351, 0.163227, 0.960576, -0.520992, -0.779952, -0.939853, + -0.248751, -0.933185, 0.96781, 0.998035, -0.748558, -0.422557, 0.652144, 0.289789, + 0.942327, 0.989907, -0.541705, -0.967179, -0.992064, -0.679435, 0.987373, 0.88219, + -0.990581, 0.966343, 0.149118, 0.900446, 0.967235, 0.996815, -0.959944, 0.950417, + -0.998807, 0.981472, -0.715279, 0.854894, -0.575615, -0.996191, 0.938588, 0.99962, + 0.997776, 0.996625, -0.993116, -0.974635, 0.797837, 0.757842, 0.414458, -0.995602, + 0.997473, -0.928389, 0.585003, 0.685336, 0.35296, 0.999335, 0.815556, -0.978755, + 0.977322, 0.862941, 0.844783, -0.999172, -0.737575, 0.868368, 0.850968, -0.355691, + -0.477411, 0.670716, 0.999938, -0.985769, 0.753579, -0.861071, -0.947635, -0.441339, + -0.636707, 0.958056, -0.917965, -0.888682, 0.887396, -0.469046, 0.878908, 0.343275, + -0.953879, 0.983756, -0.265801, -0.874482, 0.732147, 0.142205, 0.488677, 0.601925, + 0.0526216, 0.707467, -0.793197, 0.99486, -0.851224, -0.910939, 0.657066, 0.603613, + 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, 0.351675, 0.738722, + 0.784989, -0.98241, 0.901682, 0.0865038, -0.847449, 0.575283, 0.329635, 0.999976, + -0.637486, -0.843608, 0.551505, -0.177101, -0.372926, 0.935283, -0.990545, -0.149183, + -0.491596, 0.541562, 0.996025, 0.472454, -0.845026, 0.991427, -0.334852, 0.999497, + -0.0331139, 0.0179286, -0.837703, 0.512776, -0.984419, 0.979792, -0.974191, 0.925265, + -0.135773, 0.0270891, 0.996536, 0.999985, 0.979748, 0.998403, -0.993161, -0.996728, + 0.638566, 0.991593, -0.560185, -0.999493, 0.993987, 0.271173, 0.98406, 0.322271, + -0.334357, 0.997101, 0.943976, -0.999868, 0.880896, 0.709814, 0.982917, -0.995932, + -0.474997, 0.995407, 0.96453, -0.753175, 0.651881, 0.526273, 0.902097, 0.992134, + 0.507577, -0.999034, -0.996382, -0.673348, 0.819122, 0.779549, -0.999686, 0.974422, + 0.880611, 0.6546, 0.6598, 0.96634, -0.920738, -0.418959, -0.954179, 0.87176, + -0.330375, 0.223247, -0.100151, -0.310826, 0.93752, 0.996072, 0.883849, 0.902299, + 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, + 0.984892, 0.21006, -0.707005, -0.612093, -0.996712, 0.953598, 0.999635, -0.958756, + 0.196832, -0.816948, -0.822502, -0.969466, 0.440709, 0.915352, -0.987622, -0.756492, + 0.811622, -0.999958, 0.999982, -0.47131, -0.907012, 0.897248, -0.954296, 0.86897, + 0.92591, -0.945222, 0.996168, -0.983258, 0.999693, -0.883999, -0.800457, 0.18094, + 0.985958, 0.362557, -0.882676, -0.598648, 0.887364, -0.970348, 0.756076, -0.993787, + -0.968946, -0.118565, -0.636271, 0.998778, -0.0656388, -0.527903, 0.990153, 0.781603, + 0.999725, -0.246065, -0.97279, 0.986471, 0.984443, -0.70469, 0.701, 0.981588, + 0.982162, -0.994913, 0.99988, 0.698499, -0.996202, 0.541067, -0.990485, 0.844747, + -0.222405, -0.209739, 0.91219, -0.989144, 0.999699, 0.724279, -0.885552, 0.988889, + 0.58029, 0.759885, 0.99201, 0.818603, 0.873055, -0.884289, 0.99798, -0.965469, + -0.480964, 0.475605, -0.781967, 0.99447, 0.863794, -0.861781, 0.891732, -0.547791, + 0.97225, -0.00379388, 0.342407, 0.92741}, + std::vector{0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, + 0.363935, -0.0884402, -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, + -0.976568, 0.999748, 0.284666, 0.983777, -0.979617, 0.971752, -0.698165, -0.513943, + 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, -0.851224, -0.910939, + 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, + 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, + 0.984892, 0.21006}, std::vector{0}), }; return params; @@ -1606,827 +1688,799 @@ template std::vector generateParamsBF16() { using T = typename ov::element_type_traits::value_type; - std::vector params { + std::vector params{ TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::FORWARD, TensorIteratorBodyType::LSTM, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::FORWARD, + TensorIteratorBodyType::LSTM, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{ + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, std::vector{ 0.523438, 0.667969, 0.667969, 0.667969, 0.667969, 0.523438, 0.632812, 0.664062, 0.667969, 0.640625, - 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, + 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, 0.546875, 0.648438, 0.667969, 0.664062, 0.667969, 0.546875, 0.601562, 0.640625, 0.667969, 0.609375, - 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, - 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, - 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, - 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, - 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, - 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, - 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, + 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, + 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, + 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, + 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, + 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, + 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, + 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, + 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, + 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, 0.632812, 0.585938, 0.648438, 0.617188, 0.648438, 0.648438, 0.664062, 0.648438, 0.667969, 0.65625, - 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, + 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, 0.601562, 0.570312, 0.617188, 0.585938, 0.617188, 0.617188, 0.640625, 0.617188, 0.648438, 0.632812, - 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, - 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, - 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, - 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, - 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, - 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, - 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, - 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, - 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, - 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, - 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, + 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, + 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, + 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, + 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, + 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, + 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, + 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, + 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, + 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, + 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, + 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, + 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, + 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, 0.585938, 0.570312, 0.570312, 0.585938, 0.578125, 0.570312, 0.578125, 0.585938, 0.570312, 0.554688, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, + 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.632812, 0.667969, 0.648438, 0.664062, 0.667969, 0.667969, 0.664062, 0.664062, 0.664062, 0.664062, 0.617188, 0.667969, 0.632812, - 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, - 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, - 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, - 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, - 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, - 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, - 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, + 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, + 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, + 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, + 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, + 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, + 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, + 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, + 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.617188, 0.667969, 0.667969, 0.667969, - 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, - 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, - 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, - 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, - 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, - 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, - 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, - 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, - 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, + 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, + 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, + 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, + 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, + 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, + 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, + 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, + 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, - 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, - 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, - 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, - 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), + std::vector{0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, + 0.5625, 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, + 0.585938, 0.570312, 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, + 0.578125, 0.5625, 0.554688, 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, + 0.570312, 0.5625, 0.585938, 0.5625, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, + 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, + std::vector{1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, + 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, + 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, + 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, + 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::REVERSE, TensorIteratorBodyType::LSTM, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::REVERSE, + TensorIteratorBodyType::LSTM, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, - 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, - 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, - 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, - 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, - 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{ + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, + std::vector{ + 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, + 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, + 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, + 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, + 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, + 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, + 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, 0.546875, 0.648438, 0.667969, 0.664062, 0.667969, 0.546875, 0.601562, 0.640625, 0.667969, 0.609375, - 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, + 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, 0.523438, 0.667969, 0.667969, 0.667969, 0.667969, 0.523438, 0.632812, 0.664062, 0.667969, 0.640625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, - 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, - 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, - 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, + 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, + 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, + 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, + 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, + 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, 0.601562, 0.570312, 0.617188, 0.585938, 0.617188, 0.617188, 0.640625, 0.617188, 0.648438, 0.632812, - 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, + 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, 0.632812, 0.585938, 0.648438, 0.617188, 0.648438, 0.648438, 0.664062, 0.648438, 0.667969, 0.65625, - 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, - 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, + 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, + 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, + 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, 0.585938, 0.570312, 0.570312, 0.585938, 0.578125, 0.570312, 0.578125, 0.585938, 0.570312, 0.554688, - 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, - 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, - 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, - 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, - 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, - 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, - 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, - 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, - 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, - 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, - 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, - 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, - 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, - 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, - 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, + 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, + 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, + 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, + 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, + 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, + 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, + 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, + 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, + 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, + 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, + 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, + 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, + 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, + 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, + 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, + 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, 0.664062, 0.667969, 0.667969, 0.664062, 0.664062, 0.664062, 0.664062, 0.617188, 0.667969, 0.632812, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.632812, 0.667969, 0.648438, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938, - 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, - 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, - 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, - 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, - 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, - 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, - 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, - 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, + 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, + 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, + 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, + 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, + 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, + 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, + 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, + 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.617188, 0.667969, 0.667969, 0.667969}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, - 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, - 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, - 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, - 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, - 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), + std::vector{0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, + 0.5625, 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, + 0.585938, 0.570312, 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, + 0.578125, 0.5625, 0.554688, 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, + 0.570312, 0.5625, 0.585938, 0.5625, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, + 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, + std::vector{1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, + 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, + 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, + 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, + 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::FORWARD, TensorIteratorBodyType::GRU, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::FORWARD, + TensorIteratorBodyType::GRU, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, - std::vector{ - 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, - 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, - 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, - 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, - 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, - 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, - 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, + std::vector{ + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, + std::vector{ + 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, + 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, + 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, + 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, + 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, + 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, + 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, 0.613281, 0.761719, 0.964844, 0.867188, 0.945312, 0.613281, 0.660156, 0.722656, 0.964844, 0.664062, 0.609375, 0.707031, 0.839844, 0.777344, 0.832031, 0.609375, 0.640625, 0.679688, 0.839844, 0.640625, - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, - 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, - 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, - 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, - 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, - 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, - 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, + 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, + 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, + 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, + 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, + 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, + 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, + 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, + 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, 0.695312, 0.648438, 0.753906, 0.679688, 0.753906, 0.738281, 0.847656, 0.753906, 0.945312, 0.808594, 0.664062, 0.632812, 0.699219, 0.652344, 0.699219, 0.691406, 0.761719, 0.699219, 0.832031, 0.738281, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, - 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, - 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, - 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, - 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, - 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, - 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, - 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, - 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, - 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, - 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, - 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, - 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, - 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, - 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, + 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, + 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, + 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, + 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, + 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, + 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, + 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, + 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, + 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, + 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, + 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, + 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, + 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, + 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, + 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, + 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, + 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, 0.800781, 0.847656, 0.929688, 0.761719, 0.777344, 0.808594, 0.761719, 0.664062, 0.945312, 0.6875, 0.730469, 0.761719, 0.816406, 0.707031, 0.714844, 0.738281, 0.707031, 0.640625, 0.832031, 0.65625, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875, - 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, - 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, - 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, - 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, - 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, - 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, + 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, + 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875, + 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, + 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, + 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, + 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, + 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, + 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, 0.886719, 0.898438, 0.867188, 0.949219, 0.902344, 0.722656, 0.648438, 0.855469, 0.800781, 0.964844, 0.792969, 0.800781, 0.777344, 0.832031, 0.800781, 0.679688, 0.632812, 0.769531, 0.730469, 0.839844, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, + 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, + std::vector{0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, + 0.625, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, + 0.753906, 0.691406, 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, + 0.746094, 0.640625, 0.609375, 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, + 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, + 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, std::vector{0}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::REVERSE, TensorIteratorBodyType::GRU, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::REVERSE, + TensorIteratorBodyType::GRU, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, + std::vector{ + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, + std::vector{ + 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, 0.609375, 0.707031, 0.839844, 0.777344, 0.832031, 0.609375, 0.640625, 0.679688, 0.839844, 0.640625, 0.613281, 0.761719, 0.964844, 0.867188, 0.945312, 0.613281, 0.660156, 0.722656, 0.964844, 0.664062, - 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, - 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, - 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, - 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, - 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, - 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, - 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, + 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, + 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, + 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, + 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, + 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, + 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, + 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, 0.664062, 0.632812, 0.699219, 0.652344, 0.699219, 0.691406, 0.761719, 0.699219, 0.832031, 0.738281, 0.695312, 0.648438, 0.753906, 0.679688, 0.753906, 0.738281, 0.847656, 0.753906, 0.945312, 0.808594, - 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, - 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, - 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, - 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, - 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, - 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, - 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, - 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, - 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, - 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, - 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, - 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, - 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, - 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, - 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, + 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, + 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, + 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, + 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, + 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, + 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, + 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, + 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, + 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, + 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, + 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, + 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, + 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, + 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, + 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, + 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, + 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, + 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.761719, 0.816406, 0.707031, 0.714844, 0.738281, 0.707031, 0.640625, 0.832031, 0.65625, 0.800781, 0.847656, 0.929688, 0.761719, 0.777344, 0.808594, 0.761719, 0.664062, 0.945312, 0.6875, - 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, - 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, - 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, - 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, - 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, - 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, - 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719, + 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, + 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, + 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, + 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, + 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, + 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, + 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, + 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719, 0.792969, 0.800781, 0.777344, 0.832031, 0.800781, 0.679688, 0.632812, 0.769531, 0.730469, 0.839844, 0.886719, 0.898438, 0.867188, 0.949219, 0.902344, 0.722656, 0.648438, 0.855469, 0.800781, 0.964844, - 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, - 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, - 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, - 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, - 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, - 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, - 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, + 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, + 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, + 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, + 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, + 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, + 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, + 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875}, + std::vector{0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, + 0.625, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, + 0.753906, 0.691406, 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, + 0.746094, 0.640625, 0.609375, 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, + 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, + 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, std::vector{0}), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -2440,6 +2494,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TensorIterator_With_Hardcoded_Refs, ReferenceTILayerStaticTest, - testing::ValuesIn(generateCombinedParams()), ReferenceTILayerStaticTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_TensorIterator_With_Hardcoded_Refs, + ReferenceTILayerStaticTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceTILayerStaticTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/tile.cpp b/src/plugins/template/tests/functional/op_reference/tile.cpp index f07d7c2198d34a..2a99ee45b11cb4 100644 --- a/src/plugins/template/tests/functional/op_reference/tile.cpp +++ b/src/plugins/template/tests/functional/op_reference/tile.cpp @@ -4,18 +4,22 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; namespace { struct TileParams { - TileParams( - const reference_tests::Tensor& A, const reference_tests::Tensor& repeats, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), repeats(repeats), expected(expected), testcaseName(testcaseName) {} + TileParams(const reference_tests::Tensor& A, + const reference_tests::Tensor& repeats, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + repeats(repeats), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor repeats; @@ -52,8 +56,8 @@ class ReferenceTileTest : public testing::TestWithParam, public Comm private: static std::shared_ptr CreateFunction(const TileParams& params) { const auto A = std::make_shared(params.A.type, params.A.shape); - const auto repeats = std::make_shared(params.repeats.type, params.repeats.shape, - params.repeats.data.data()); + const auto repeats = + std::make_shared(params.repeats.type, params.repeats.shape, params.repeats.data.data()); const auto tile = std::make_shared(A, repeats); const auto f = std::make_shared(NodeVector{tile}, ParameterVector{A}); return f; @@ -68,46 +72,33 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { - TileParams( - reference_tests::Tensor(ET, {}, std::vector{ - 1 - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET, {2}, std::vector{ - 1, 1 - }), - "tile_0d_to_1d_data_broadcast"), - TileParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET, {24}, std::vector{ - 1, 2, 3, 4, 5, 6, - 1, 2, 3, 4, 5, 6, - 1, 2, 3, 4, 5, 6, - 1, 2, 3, 4, 5, 6 - }), - "tile_1d_to_1d_no_broadcast"), - TileParams( - reference_tests::Tensor(ET, {3}, std::vector{ - 1, 2, 3 - }), - reference_tests::Tensor(ET_INT, {3}, std::vector{2, 2, 1}), - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3 - }), - "tile_1d_to_3d_data_broadcast"), - TileParams( - reference_tests::Tensor(ET, {2, 1, 3}, std::vector{ - 1, 2, 3, 4, 5, 6 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, 1, 2, 3, 4, 5, 6, 4, 5, 6 - }), - "tile_3d_to_3d_repeats_broadcast"), + std::vector params{ + TileParams(reference_tests::Tensor(ET, {}, std::vector{1}), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET, {2}, std::vector{1, 1}), + "tile_0d_to_1d_data_broadcast"), + TileParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET, {24}, std::vector{1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6}), + "tile_1d_to_1d_no_broadcast"), + TileParams(reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(ET_INT, {3}, std::vector{2, 2, 1}), + reference_tests::Tensor(ET, {2, 2, 3}, std::vector{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3}), + "tile_1d_to_3d_data_broadcast"), + TileParams(reference_tests::Tensor(ET, {2, 1, 3}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, {2, 2, 3}, std::vector{1, 2, 3, 1, 2, 3, 4, 5, 6, 4, 5, 6}), + "tile_3d_to_3d_repeats_broadcast"), }; return params; } @@ -116,22 +107,20 @@ template std::vector generateParamsFloatValue() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { - TileParams( - reference_tests::Tensor(ET, {2, 1, 3}, std::vector{ - 1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1.1f, 2.2f, 3.3f, 1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f, 4.4f, 5.5f, 6.6f - }), - "tile_3d_to_3d_repeats_broadcast_float_val"), + std::vector params{ + TileParams(reference_tests::Tensor(ET, {2, 1, 3}, std::vector{1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor( + ET, + {2, 2, 3}, + std::vector{1.1f, 2.2f, 3.3f, 1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f, 4.4f, 5.5f, 6.6f}), + "tile_3d_to_3d_repeats_broadcast_float_val"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ // test each data type for each repeats type // CVS-73511 - commented here due segmentation fault // generateParams(), @@ -315,8 +304,7 @@ std::vector generateCombinedParams() { generateParamsFloatValue(), generateParamsFloatValue(), generateParamsFloatValue(), - generateParamsFloatValue() - }; + generateParamsFloatValue()}; std::vector combinedParams; for (const auto& params : generatedParams) { @@ -325,6 +313,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Tile_With_Hardcoded_Refs, ReferenceTileTest, - testing::ValuesIn(generateCombinedParams()), ReferenceTileTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Tile_With_Hardcoded_Refs, + ReferenceTileTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceTileTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/topk.cpp b/src/plugins/template/tests/functional/op_reference/topk.cpp index 74291ea086fa48..f3fac57bd2acf1 100644 --- a/src/plugins/template/tests/functional/op_reference/topk.cpp +++ b/src/plugins/template/tests/functional/op_reference/topk.cpp @@ -14,14 +14,24 @@ using namespace ov; namespace { struct TopKParams { - TopKParams( - const reference_tests::Tensor& A, const reference_tests::Tensor& k, const int64_t axis, - const opset1::TopK::Mode mode, const opset1::TopK::SortType sort, - const reference_tests::Tensor& result0, const reference_tests::Tensor& result1, const size_t outIdx, - const std::string& testcaseName = "") : - A(A), k(k), axis(axis), mode(mode), sort(sort), - result0(result0), result1(result1), outIdx(outIdx), - testcaseName(testcaseName) {} + TopKParams(const reference_tests::Tensor& A, + const reference_tests::Tensor& k, + const int64_t axis, + const opset1::TopK::Mode mode, + const opset1::TopK::SortType sort, + const reference_tests::Tensor& result0, + const reference_tests::Tensor& result1, + const size_t outIdx, + const std::string& testcaseName = "") + : A(A), + k(k), + axis(axis), + mode(mode), + sort(sort), + result0(result0), + result1(result1), + outIdx(outIdx), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor k; @@ -54,15 +64,18 @@ class ReferenceTopKTest : public testing::TestWithParam, public Comm }; struct TopKParamsResnet50 { - TopKParamsResnet50( - const reference_tests::Tensor& A, - const reference_tests::Tensor& result5Value, const reference_tests::Tensor& result5Index, - const reference_tests::Tensor& result1Value, const reference_tests::Tensor& result1Index, - const std::string& testcaseName = "") : - A(A), - result5Value(result5Value), result5Index(result5Index), - result1Value(result1Value), result1Index(result1Index), - testcaseName(testcaseName) {} + TopKParamsResnet50(const reference_tests::Tensor& A, + const reference_tests::Tensor& result5Value, + const reference_tests::Tensor& result5Index, + const reference_tests::Tensor& result1Value, + const reference_tests::Tensor& result1Index, + const std::string& testcaseName = "") + : A(A), + result5Value(result5Value), + result5Index(result5Index), + result1Value(result1Value), + result1Index(result1Index), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor result5Value; @@ -78,8 +91,10 @@ class ReferenceTopKTestResnet50 : public testing::TestWithParam& obj) { @@ -101,8 +116,7 @@ class ReferenceTopKTestResnet50 : public testing::TestWithParam CreateFunction(const TopKParamsResnet50& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); + const auto A = std::make_shared(params.A.type, params.A.shape); const auto B = std::make_shared(A, opset1::Constant::create(element::i64, {}, {5}), 1, @@ -118,7 +132,8 @@ class ReferenceTopKTestResnet50 : public testing::TestWithParamoutput(1); const auto out1_value = C->output(0); const auto out1_index = C->output(1); - const auto f = std::make_shared(OutputVector{out5_value, out5_index, out1_value, out1_index}, ParameterVector{A}); + const auto f = + std::make_shared(OutputVector{out5_value, out5_index, out1_value, out1_index}, ParameterVector{A}); return f; } }; @@ -131,60 +146,70 @@ template std::vector generateParamsResnet50() { using T = typename element_type_traits::value_type; using T_OUT = typename element_type_traits::value_type; - std::vector params { + std::vector params{ TopKParamsResnet50( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_value.push_back(static_cast(shape[1] - j - 1)); - } - } - return expected_value; - }({128, 5}, {128, 1000})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_index.push_back(static_cast(shape[1] - j - 1)); - } - } - return expected_index; - }({128, 5}, {128, 1000})), - reference_tests::Tensor(ET, {128, 1}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_value.push_back(static_cast(shape[1] - j - 1)); - } - } - return expected_value; - }({128, 1}, {128, 1000})), - reference_tests::Tensor(ET_OUT, {128, 1}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_index.push_back(static_cast(shape[1] - j - 1)); - } - } - return expected_index; - }({128, 1}, {128, 1000})), + reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_value.push_back(static_cast(shape[1] - j - 1)); + } + } + return expected_value; + }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_index.push_back(static_cast(shape[1] - j - 1)); + } + } + return expected_index; + }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET, + {128, 1}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_value.push_back(static_cast(shape[1] - j - 1)); + } + } + return expected_value; + }({128, 1}, {128, 1000})), + reference_tests::Tensor(ET_OUT, + {128, 1}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_index.push_back(static_cast(shape[1] - j - 1)); + } + } + return expected_index; + }({128, 1}, {128, 1000})), "topk_resnet50"), }; return params; } std::vector generateCombinedParamsResnet50() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsResnet50(), generateParamsResnet50(), generateParamsResnet50(), @@ -206,8 +231,10 @@ std::vector generateCombinedParamsResnet50() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestResnet50, - testing::ValuesIn(generateCombinedParamsResnet50()), ReferenceTopKTestResnet50::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestResnet50, + testing::ValuesIn(generateCombinedParamsResnet50()), + ReferenceTopKTestResnet50::getTestCaseName); class ReferenceTopKTestMaxMinSort : public ReferenceTopKTest { public: @@ -220,11 +247,8 @@ class ReferenceTopKTestMaxMinSort : public ReferenceTopKTest { private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(B->outputs(), ParameterVector{A}); return f; @@ -240,278 +264,307 @@ std::vector generateParamsMaxMinSort() { using T = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; using T_OUT = typename element_type_traits::value_type; - std::vector params { + std::vector params{ TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), + reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), reference_tests::Tensor(ET2, {}, std::vector{5}), 1, opset1::TopK::Mode::MAX, opset1::TopK::SortType::NONE, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - expected_value.push_back(static_cast(shape[1] - 3)); - expected_value.push_back(static_cast(shape[1] - 1)); - expected_value.push_back(static_cast(shape[1] - 2)); - expected_value.push_back(static_cast(shape[1] - 5)); - expected_value.push_back(static_cast(shape[1] - 4)); - } - return expected_value; - }({128, 5}, {128, 1000})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - expected_index.push_back(static_cast(shape[1] - 3)); - expected_index.push_back(static_cast(shape[1] - 1)); - expected_index.push_back(static_cast(shape[1] - 2)); - expected_index.push_back(static_cast(shape[1] - 5)); - expected_index.push_back(static_cast(shape[1] - 4)); - } - return expected_index; - }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + expected_value.push_back(static_cast(shape[1] - 3)); + expected_value.push_back(static_cast(shape[1] - 1)); + expected_value.push_back(static_cast(shape[1] - 2)); + expected_value.push_back(static_cast(shape[1] - 5)); + expected_value.push_back(static_cast(shape[1] - 4)); + } + return expected_value; + }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + expected_index.push_back(static_cast(shape[1] - 3)); + expected_index.push_back(static_cast(shape[1] - 1)); + expected_index.push_back(static_cast(shape[1] - 2)); + expected_index.push_back(static_cast(shape[1] - 5)); + expected_index.push_back(static_cast(shape[1] - 4)); + } + return expected_index; + }({128, 5}, {128, 1000})), 0, "topk_max_sort_none"), - TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), - reference_tests::Tensor(ET2, {}, std::vector{5}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::NONE, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - expected_value.push_back(1); - expected_value.push_back(0); - expected_value.push_back(3); - expected_value.push_back(2); - expected_value.push_back(4); - } - return expected_value; - }({128, 5})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - expected_index.push_back(1); - expected_index.push_back(0); - expected_index.push_back(3); - expected_index.push_back(2); - expected_index.push_back(4); - } - return expected_index; - }({128, 5})), - 0, - "topk_min_sort_none"), + TopKParams(reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), + reference_tests::Tensor(ET2, {}, std::vector{5}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::NONE, + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + expected_value.push_back(1); + expected_value.push_back(0); + expected_value.push_back(3); + expected_value.push_back(2); + expected_value.push_back(4); + } + return expected_value; + }({128, 5})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + expected_index.push_back(1); + expected_index.push_back(0); + expected_index.push_back(3); + expected_index.push_back(2); + expected_index.push_back(4); + } + return expected_index; + }({128, 5})), + 0, + "topk_min_sort_none"), TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), + reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), reference_tests::Tensor(ET2, {}, std::vector{5}), 1, opset1::TopK::Mode::MAX, opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_value.push_back(static_cast((shape[1] - j - 1))); - } - } - return expected_value; - }({128, 5}, {128, 1000})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_index.push_back(static_cast(shape[1] - j - 1)); - } - } - return expected_index; - }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_value.push_back(static_cast((shape[1] - j - 1))); + } + } + return expected_value; + }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_index.push_back(static_cast(shape[1] - j - 1)); + } + } + return expected_index; + }({128, 5}, {128, 1000})), 0, "topk_max_sort_value"), - TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), - reference_tests::Tensor(ET2, {}, std::vector{5}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_value.push_back(static_cast(j)); - } - } - return expected_value; - }({128, 5})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_index.push_back(static_cast(j)); - } - } - return expected_index; - }({128, 5})), - 0, - "topk_min_sort_value"), + TopKParams(reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), + reference_tests::Tensor(ET2, {}, std::vector{5}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_value.push_back(static_cast(j)); + } + } + return expected_value; + }({128, 5})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_index.push_back(static_cast(j)); + } + } + return expected_index; + }({128, 5})), + 0, + "topk_min_sort_value"), TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), + reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), reference_tests::Tensor(ET2, {}, std::vector{5}), 1, opset1::TopK::Mode::MAX, opset1::TopK::SortType::SORT_INDICES, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - expected_value.push_back(static_cast(shape[1] - 5)); - expected_value.push_back(static_cast(shape[1] - 4)); - expected_value.push_back(static_cast(shape[1] - 3)); - expected_value.push_back(static_cast(shape[1] - 2)); - expected_value.push_back(static_cast(shape[1] - 1)); - } - return expected_value; - }({128, 5}, {128, 1000})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - expected_index.push_back(static_cast(shape[1] - 5)); - expected_index.push_back(static_cast(shape[1] - 4)); - expected_index.push_back(static_cast(shape[1] - 3)); - expected_index.push_back(static_cast(shape[1] - 2)); - expected_index.push_back(static_cast(shape[1] - 1)); - } - return expected_index; - }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + expected_value.push_back(static_cast(shape[1] - 5)); + expected_value.push_back(static_cast(shape[1] - 4)); + expected_value.push_back(static_cast(shape[1] - 3)); + expected_value.push_back(static_cast(shape[1] - 2)); + expected_value.push_back(static_cast(shape[1] - 1)); + } + return expected_value; + }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + expected_index.push_back(static_cast(shape[1] - 5)); + expected_index.push_back(static_cast(shape[1] - 4)); + expected_index.push_back(static_cast(shape[1] - 3)); + expected_index.push_back(static_cast(shape[1] - 2)); + expected_index.push_back(static_cast(shape[1] - 1)); + } + return expected_index; + }({128, 5}, {128, 1000})), 0, "topk_max_sort_index"), - TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), - reference_tests::Tensor(ET2, {}, std::vector{5}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_INDICES, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_value.push_back(static_cast(j)); - } - } - return expected_value; - }({128, 5})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_index.push_back(static_cast(j)); - } - } - return expected_index; - }({128, 5})), - 0, - "topk_min_sort_index"), + TopKParams(reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), + reference_tests::Tensor(ET2, {}, std::vector{5}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_INDICES, + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_value.push_back(static_cast(j)); + } + } + return expected_value; + }({128, 5})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_index.push_back(static_cast(j)); + } + } + return expected_index; + }({128, 5})), + 0, + "topk_min_sort_index"), - TopKParams( - reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{5, 4, 3}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{3, 4, 0}), - 0, - "topk_mode_sort_order"), + TopKParams(reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{5, 4, 3}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{3, 4, 0}), + 0, + "topk_mode_sort_order"), - TopKParams( - reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_INDICES, - reference_tests::Tensor(ET, {3}, std::vector{3, 5, 4}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{0, 3, 4}), - 0, - "topk_mode_sort_order_1"), + TopKParams(reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_INDICES, + reference_tests::Tensor(ET, {3}, std::vector{3, 5, 4}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{0, 3, 4}), + 0, + "topk_mode_sort_order_1"), - TopKParams( - reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{1, 2, 0}), - 0, - "topk_mode_sort_order_2"), + TopKParams(reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{1, 2, 0}), + 0, + "topk_mode_sort_order_2"), - TopKParams( - reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_INDICES, - reference_tests::Tensor(ET, {3}, std::vector{3, 1, 2}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{0, 1, 2}), - 0, - "topk_mode_sort_order_3"), + TopKParams(reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_INDICES, + reference_tests::Tensor(ET, {3}, std::vector{3, 1, 2}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{0, 1, 2}), + 0, + "topk_mode_sort_order_3"), }; return params; } std::vector generateCombinedParamsMaxMinSort() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsMaxMinSort(), generateParamsMaxMinSort(), generateParamsMaxMinSort(), @@ -533,8 +586,10 @@ std::vector generateCombinedParamsMaxMinSort() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestMaxMinSort, - testing::ValuesIn(generateCombinedParamsMaxMinSort()), ReferenceTopKTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestMaxMinSort, + testing::ValuesIn(generateCombinedParamsMaxMinSort()), + ReferenceTopKTest::getTestCaseName); class ReferenceTopKTestBackend : public ReferenceTopKTest { public: @@ -547,11 +602,8 @@ class ReferenceTopKTestBackend : public ReferenceTopKTest { private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(B->outputs(), ParameterVector{A}); return f; @@ -563,7 +615,7 @@ TEST_P(ReferenceTopKTestBackend, CompareWithRefs) { } std::vector generateCombinedParamsBackend() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsMaxMinSort(), generateParamsMaxMinSort(), generateParamsMaxMinSort(), @@ -585,8 +637,10 @@ std::vector generateCombinedParamsBackend() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestBackend, - testing::ValuesIn(generateCombinedParamsBackend()), ReferenceTopKTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestBackend, + testing::ValuesIn(generateCombinedParamsBackend()), + ReferenceTopKTest::getTestCaseName); class ReferenceTopKTest1dMaxMin : public ReferenceTopKTest { public: @@ -620,11 +674,8 @@ class ReferenceTopKTest1dMaxMin : public ReferenceTopKTest { private: static std::shared_ptr CreateFunction(const TopKParams& params, size_t out_idx) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(OutputVector{B->output(out_idx)}, ParameterVector{A}); return f; @@ -640,668 +691,478 @@ std::vector generateParams1dMaxMin() { using T = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; using T_OUT = typename element_type_traits::value_type; - std::vector params { - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{6}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), - 0, - "topk_1d_max_all"), + std::vector params{ + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{6}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), + 0, + "topk_1d_max_all"), - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{6}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), - 1, - "topk_1d_max_all"), + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{6}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), + 1, + "topk_1d_max_all"), - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{6, 5, 4}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), - 0, - "topk_1d_max_partial"), + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{6, 5, 4}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), + 0, + "topk_1d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{6, 5, 4}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), - 1, - "topk_1d_max_partial"), + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{6, 5, 4}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), + 1, + "topk_1d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1}, std::vector{6}), - reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), - 0, - "topk_1d_max_one"), + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1}, std::vector{6}), + reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), + 0, + "topk_1d_max_one"), - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1}, std::vector{6}), - reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), - 1, - "topk_1d_max_one"), + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1}, std::vector{6}), + reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), + 1, + "topk_1d_max_one"), - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{6}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), - 0, - "topk_1d_min_all"), + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{6}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), + 0, + "topk_1d_min_all"), - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{6}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), - 1, - "topk_1d_min_all"), + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{6}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), + 1, + "topk_1d_min_all"), - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), - 0, - "topk_1d_min_partial"), + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), + 0, + "topk_1d_min_partial"), - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), - 1, - "topk_1d_min_partial"), + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), + 1, + "topk_1d_min_partial"), - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1}, std::vector{1}), - reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), - 0, - "topk_1d_min_one"), + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1}, std::vector{1}), + reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), + 0, + "topk_1d_min_one"), - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1}, std::vector{1}), - reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), - 1, - "topk_1d_min_one"), + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1}, std::vector{1}), + reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), + 1, + "topk_1d_min_one"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0 - }), - 0, - "topk_3d_max_all"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0}), + 0, + "topk_3d_max_all"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0 - }), - 1, - "topk_3d_max_all"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0}), + 1, + "topk_3d_max_all"), TopKParams( - reference_tests::Tensor(ET, {2, 6, 3, 2, 4}, std::vector{ - 1, 73, 9, 81, 17, 89, 2, 74, 10, 82, 18, 90, 3, 75, 11, 83, 19, - 91, 4, 76, 12, 84, 20, 92, 145, 217, 153, 225, 161, 233, 146, 218, 154, 226, - 162, 234, 147, 219, 155, 227, 163, 235, 148, 220, 156, 228, 164, 236, 5, 77, 13, - 85, 21, 93, 6, 78, 14, 86, 22, 94, 7, 79, 15, 87, 23, 95, 8, 80, - 16, 88, 24, 96, 149, 221, 157, 229, 165, 27, 150, 222, 158, 230, 166, 23, 151, - 223, 159, 231, 17, 39, 2, 224, 160, 232, 168, 240, 25, 97, 33, 105, 41, 113, - 26, 98, 34, 106, 42, 114, 27, 99, 35, 107, 43, 115, 28, 100, 36, 108, 44, - 116, 169, 241, 177, 249, 185, 25, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, - 187, 259, 172, 24, 180, 252, 188, 260, 29, 101, 37, 109, 45, 117, 30, 102, 38, - 10, 46, 118, 31, 103, 39, 111, 47, 119, 32, 104, 40, 112, 48, 20, 173, 245, - 181, 253, 189, 261, 174, 246, 182, 254, 190, 262, 175, 27, 183, 255, 191, 263, 176, - 248, 184, 256, 192, 264, 49, 121, 57, 129, 65, 137, 50, 122, 58, 130, 66, 138, - 51, 123, 59, 131, 67, 139, 52, 124, 60, 132, 68, 140, 193, 265, 201, 273, 209, - 281, 194, 266, 202, 274, 210, 43, 115, 28, 100, 36, 108, 44, 116, 169, 241, 177, - 212, 284, 53, 125, 61, 133, 69, 141, 54, 126, 62, 134, 70, 142, 55, 127, 63, - 135, 71, 143, 56, 128, 64, 136, 72, 144, 197, 269, 205, 277, 213, 285, 198, 270, - 206, 278, 214, 286, 199, 271, 207, 279, 215, 287, 200, 272, 208, 280, 216, 288 - }), + reference_tests::Tensor( + ET, + {2, 6, 3, 2, 4}, + std::vector{ + 1, 73, 9, 81, 17, 89, 2, 74, 10, 82, 18, 90, 3, 75, 11, 83, 19, 91, 4, 76, + 12, 84, 20, 92, 145, 217, 153, 225, 161, 233, 146, 218, 154, 226, 162, 234, 147, 219, 155, 227, + 163, 235, 148, 220, 156, 228, 164, 236, 5, 77, 13, 85, 21, 93, 6, 78, 14, 86, 22, 94, + 7, 79, 15, 87, 23, 95, 8, 80, 16, 88, 24, 96, 149, 221, 157, 229, 165, 27, 150, 222, + 158, 230, 166, 23, 151, 223, 159, 231, 17, 39, 2, 224, 160, 232, 168, 240, 25, 97, 33, 105, + 41, 113, 26, 98, 34, 106, 42, 114, 27, 99, 35, 107, 43, 115, 28, 100, 36, 108, 44, 116, + 169, 241, 177, 249, 185, 25, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, 187, 259, 172, 24, + 180, 252, 188, 260, 29, 101, 37, 109, 45, 117, 30, 102, 38, 10, 46, 118, 31, 103, 39, 111, + 47, 119, 32, 104, 40, 112, 48, 20, 173, 245, 181, 253, 189, 261, 174, 246, 182, 254, 190, 262, + 175, 27, 183, 255, 191, 263, 176, 248, 184, 256, 192, 264, 49, 121, 57, 129, 65, 137, 50, 122, + 58, 130, 66, 138, 51, 123, 59, 131, 67, 139, 52, 124, 60, 132, 68, 140, 193, 265, 201, 273, + 209, 281, 194, 266, 202, 274, 210, 43, 115, 28, 100, 36, 108, 44, 116, 169, 241, 177, 212, 284, + 53, 125, 61, 133, 69, 141, 54, 126, 62, 134, 70, 142, 55, 127, 63, 135, 71, 143, 56, 128, + 64, 136, 72, 144, 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, + 215, 287, 200, 272, 208, 280, 216, 288}), reference_tests::Tensor(ET2, {}, std::vector{2}), 1, opset1::TopK::Mode::MAX, opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 3, 2, 4}, std::vector{ - 169, 241, 177, 249, 185, 233, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, - 187, 259, 172, 224, 180, 252, 188, 260, 149, 221, 157, 229, 165, 113, 150, 222, - 158, 230, 166, 234, 151, 223, 159, 231, 163, 235, 148, 220, 160, 232, 168, 240, - 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, - 215, 287, 200, 272, 241, 280, 216, 288, 193, 265, 201, 273, 209, 281, 194, 266, - 202, 274, 210, 262, 175, 127, 183, 255, 191, 263, 176, 248, 208, 256, 212, 284 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 3, 2, 4}, std::vector{ - 5, 5, 5, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, - 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 5, 1, 3, 3 - }), + reference_tests::Tensor( + ET, + {2, 2, 3, 2, 4}, + std::vector{169, 241, 177, 249, 185, 233, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, + 187, 259, 172, 224, 180, 252, 188, 260, 149, 221, 157, 229, 165, 113, 150, 222, + 158, 230, 166, 234, 151, 223, 159, 231, 163, 235, 148, 220, 160, 232, 168, 240, + 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, + 215, 287, 200, 272, 241, 280, 216, 288, 193, 265, 201, 273, 209, 281, 194, 266, + 202, 274, 210, 262, 175, 127, 183, 255, 191, 263, 176, 248, 208, 256, 212, 284}), + reference_tests::Tensor( + ET_OUT, + {2, 2, 3, 2, 4}, + std::vector{5, 5, 5, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, + 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 5, 1, 3, 3}), 0, "topk_5d_max_partial"), TopKParams( - reference_tests::Tensor(ET, {2, 6, 3, 2, 4}, std::vector{ - 1, 73, 9, 81, 17, 89, 2, 74, 10, 82, 18, 90, 3, 75, 11, 83, 19, - 91, 4, 76, 12, 84, 20, 92, 145, 217, 153, 225, 161, 233, 146, 218, 154, 226, - 162, 234, 147, 219, 155, 227, 163, 235, 148, 220, 156, 228, 164, 236, 5, 77, 13, - 85, 21, 93, 6, 78, 14, 86, 22, 94, 7, 79, 15, 87, 23, 95, 8, 80, - 16, 88, 24, 96, 149, 221, 157, 229, 165, 27, 150, 222, 158, 230, 166, 23, 151, - 223, 159, 231, 17, 39, 2, 224, 160, 232, 168, 240, 25, 97, 33, 105, 41, 113, - 26, 98, 34, 106, 42, 114, 27, 99, 35, 107, 43, 115, 28, 100, 36, 108, 44, - 116, 169, 241, 177, 249, 185, 25, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, - 187, 259, 172, 24, 180, 252, 188, 260, 29, 101, 37, 109, 45, 117, 30, 102, 38, - 10, 46, 118, 31, 103, 39, 111, 47, 119, 32, 104, 40, 112, 48, 20, 173, 245, - 181, 253, 189, 261, 174, 246, 182, 254, 190, 262, 175, 27, 183, 255, 191, 263, 176, - 248, 184, 256, 192, 264, 49, 121, 57, 129, 65, 137, 50, 122, 58, 130, 66, 138, - 51, 123, 59, 131, 67, 139, 52, 124, 60, 132, 68, 140, 193, 265, 201, 273, 209, - 281, 194, 266, 202, 274, 210, 43, 115, 28, 100, 36, 108, 44, 116, 169, 241, 177, - 212, 284, 53, 125, 61, 133, 69, 141, 54, 126, 62, 134, 70, 142, 55, 127, 63, - 135, 71, 143, 56, 128, 64, 136, 72, 144, 197, 269, 205, 277, 213, 285, 198, 270, - 206, 278, 214, 286, 199, 271, 207, 279, 215, 287, 200, 272, 208, 280, 216, 288 - }), + reference_tests::Tensor( + ET, + {2, 6, 3, 2, 4}, + std::vector{ + 1, 73, 9, 81, 17, 89, 2, 74, 10, 82, 18, 90, 3, 75, 11, 83, 19, 91, 4, 76, + 12, 84, 20, 92, 145, 217, 153, 225, 161, 233, 146, 218, 154, 226, 162, 234, 147, 219, 155, 227, + 163, 235, 148, 220, 156, 228, 164, 236, 5, 77, 13, 85, 21, 93, 6, 78, 14, 86, 22, 94, + 7, 79, 15, 87, 23, 95, 8, 80, 16, 88, 24, 96, 149, 221, 157, 229, 165, 27, 150, 222, + 158, 230, 166, 23, 151, 223, 159, 231, 17, 39, 2, 224, 160, 232, 168, 240, 25, 97, 33, 105, + 41, 113, 26, 98, 34, 106, 42, 114, 27, 99, 35, 107, 43, 115, 28, 100, 36, 108, 44, 116, + 169, 241, 177, 249, 185, 25, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, 187, 259, 172, 24, + 180, 252, 188, 260, 29, 101, 37, 109, 45, 117, 30, 102, 38, 10, 46, 118, 31, 103, 39, 111, + 47, 119, 32, 104, 40, 112, 48, 20, 173, 245, 181, 253, 189, 261, 174, 246, 182, 254, 190, 262, + 175, 27, 183, 255, 191, 263, 176, 248, 184, 256, 192, 264, 49, 121, 57, 129, 65, 137, 50, 122, + 58, 130, 66, 138, 51, 123, 59, 131, 67, 139, 52, 124, 60, 132, 68, 140, 193, 265, 201, 273, + 209, 281, 194, 266, 202, 274, 210, 43, 115, 28, 100, 36, 108, 44, 116, 169, 241, 177, 212, 284, + 53, 125, 61, 133, 69, 141, 54, 126, 62, 134, 70, 142, 55, 127, 63, 135, 71, 143, 56, 128, + 64, 136, 72, 144, 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, + 215, 287, 200, 272, 208, 280, 216, 288}), reference_tests::Tensor(ET2, {}, std::vector{2}), 1, opset1::TopK::Mode::MAX, opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 3, 2, 4}, std::vector{ - 169, 241, 177, 249, 185, 233, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, - 187, 259, 172, 224, 180, 252, 188, 260, 149, 221, 157, 229, 165, 113, 150, 222, - 158, 230, 166, 234, 151, 223, 159, 231, 163, 235, 148, 220, 160, 232, 168, 240, - 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, - 215, 287, 200, 272, 241, 280, 216, 288, 193, 265, 201, 273, 209, 281, 194, 266, - 202, 274, 210, 262, 175, 127, 183, 255, 191, 263, 176, 248, 208, 256, 212, 284 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 3, 2, 4}, std::vector{ - 5, 5, 5, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, - 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 5, 1, 3, 3 - }), + reference_tests::Tensor( + ET, + {2, 2, 3, 2, 4}, + std::vector{169, 241, 177, 249, 185, 233, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, + 187, 259, 172, 224, 180, 252, 188, 260, 149, 221, 157, 229, 165, 113, 150, 222, + 158, 230, 166, 234, 151, 223, 159, 231, 163, 235, 148, 220, 160, 232, 168, 240, + 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, + 215, 287, 200, 272, 241, 280, 216, 288, 193, 265, 201, 273, 209, 281, 194, 266, + 202, 274, 210, 262, 175, 127, 183, 255, 191, 263, 176, 248, 208, 256, 212, 284}), + reference_tests::Tensor( + ET_OUT, + {2, 2, 3, 2, 4}, + std::vector{5, 5, 5, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, + 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 5, 1, 3, 3}), 1, "topk_5d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 10, 12, 9, 4, 11, 7, 6, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{ - 1, 1, 0, 2, 2, 2, 0, 1 - }), - 0, - "topk_3d_max_partial"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{10, 12, 9, 4, 11, 7, 6, 3}), + reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{1, 1, 0, 2, 2, 2, 0, 1}), + 0, + "topk_3d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 10, 12, 9, 4, 11, 7, 6, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{ - 1, 1, 0, 2, 2, 2, 0, 1 - }), - 1, - "topk_3d_max_partial"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{10, 12, 9, 4, 11, 7, 6, 3}), + reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{1, 1, 0, 2, 2, 2, 0, 1}), + 1, + "topk_3d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1, 2}, std::vector{ - 10, 12, 11, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{ - 1, 1, 2, 2 - }), - 0, - "topk_3d_max_one"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1, 2}, std::vector{10, 12, 11, 7}), + reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{1, 1, 2, 2}), + 0, + "topk_3d_max_one"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1, 2}, std::vector{ - 10, 12, 11, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{ - 1, 1, 2, 2 - }), - 1, - "topk_3d_max_one"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1, 2}, std::vector{10, 12, 11, 7}), + reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{1, 1, 2, 2}), + 1, + "topk_3d_max_one"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 8, 2, 10, 4, 12, 9, 5, 1, 6, 3, 11, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 2 - }), - 0, - "topk_3d_min_all"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{8, 2, 10, 4, 12, 9, 5, 1, 6, 3, 11, 7}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 2}), + 0, + "topk_3d_min_all"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 8, 2, 10, 4, 12, 9, 5, 1, 6, 3, 11, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 2 - }), - 1, - "topk_3d_min_all"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{8, 2, 10, 4, 12, 9, 5, 1, 6, 3, 11, 7}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 2}), + 1, + "topk_3d_min_all"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 8, 2, 10, 4, 5, 1, 6, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{ - 2, 0, 1, 2, 1, 0, 0, 1 - }), - 0, - "topk_3d_min_partial"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{8, 2, 10, 4, 5, 1, 6, 3}), + reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{2, 0, 1, 2, 1, 0, 0, 1}), + 0, + "topk_3d_min_partial"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 8, 2, 10, 4, 5, 1, 6, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{ - 2, 0, 1, 2, 1, 0, 0, 1 - }), - 1, - "topk_3d_min_partial"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{8, 2, 10, 4, 5, 1, 6, 3}), + reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{2, 0, 1, 2, 1, 0, 0, 1}), + 1, + "topk_3d_min_partial"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1, 2}, std::vector{ - 8, 2, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{ - 2, 0, 1, 0 - }), - 0, - "topk_3d_min_one"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1, 2}, std::vector{8, 2, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{2, 0, 1, 0}), + 0, + "topk_3d_min_one"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1, 2}, std::vector{ - 8, 2, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{ - 2, 0, 1, 0 - }), - 1, - "topk_3d_min_one"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1, 2}, std::vector{8, 2, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{2, 0, 1, 0}), + 1, + "topk_3d_min_one"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{4}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 11, 10, 9, 8, 7, 6, 2, 5, 3, 1, 4 - }), - reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{ - 1, 3, 0, 0, 1, 3, 2, 0, 2, 3, 2, 1 - }), - 0, - "topk_2d_max_all"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{4}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {4, 3}, std::vector{12, 11, 10, 9, 8, 7, 6, 2, 5, 3, 1, 4}), + reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{1, 3, 0, 0, 1, 3, 2, 0, 2, 3, 2, 1}), + 0, + "topk_2d_max_all"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{4}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 11, 10, 9, 8, 7, 6, 2, 5, 3, 1, 4 - }), - reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{ - 1, 3, 0, 0, 1, 3, 2, 0, 2, 3, 2, 1 - }), - 1, - "topk_2d_max_all"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{4}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {4, 3}, std::vector{12, 11, 10, 9, 8, 7, 6, 2, 5, 3, 1, 4}), + reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{1, 3, 0, 0, 1, 3, 2, 0, 2, 3, 2, 1}), + 1, + "topk_2d_max_all"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 12, 11, 10, 9, 8, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{ - 1, 3, 0, 0, 1, 3 - }), - 0, - "topk_2d_max_partial"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3}, std::vector{12, 11, 10, 9, 8, 7}), + reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{1, 3, 0, 0, 1, 3}), + 0, + "topk_2d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 12, 11, 10, 9, 8, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{ - 1, 3, 0, 0, 1, 3 - }), - 1, - "topk_2d_max_partial"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3}, std::vector{12, 11, 10, 9, 8, 7}), + reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{1, 3, 0, 0, 1, 3}), + 1, + "topk_2d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1, 3}, std::vector{ - 12, 11, 10 - }), - reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{ - 1, 3, 0 - }), - 0, - "topk_2d_max_one"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1, 3}, std::vector{12, 11, 10}), + reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{1, 3, 0}), + 0, + "topk_2d_max_one"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1, 3}, std::vector{ - 12, 11, 10 - }), - reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{ - 1, 3, 0 - }), - 1, - "topk_2d_max_one"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1, 3}, std::vector{12, 11, 10}), + reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{1, 3, 0}), + 1, + "topk_2d_max_one"), - TopKParams( - reference_tests::Tensor(ET, {2, 4}, std::vector{ - 1, 3, 2, 4, 1, 3, 3, 2 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1}, std::vector{ - 4, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 1}, std::vector{ - 3, 1 - }), - 0, - "topk_2d_max_one_with_equal_values"), + TopKParams(reference_tests::Tensor(ET, {2, 4}, std::vector{1, 3, 2, 4, 1, 3, 3, 2}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1}, std::vector{4, 3}), + reference_tests::Tensor(ET_OUT, {2, 1}, std::vector{3, 1}), + 0, + "topk_2d_max_one_with_equal_values"), - TopKParams( - reference_tests::Tensor(ET, {2, 4}, std::vector{ - 1, 3, 2, 4, 1, 3, 3, 2 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1}, std::vector{ - 4, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 1}, std::vector{ - 3, 1 - }), - 1, - "topk_2d_max_one_with_equal_values"), + TopKParams(reference_tests::Tensor(ET, {2, 4}, std::vector{1, 3, 2, 4, 1, 3, 3, 2}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1}, std::vector{4, 3}), + reference_tests::Tensor(ET_OUT, {2, 1}, std::vector{3, 1}), + 1, + "topk_2d_max_one_with_equal_values"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{4}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 3, 1, 4, 6, 2, 5, 9, 8, 7, 12, 11, 10 - }), - reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{ - 3, 2, 1, 2, 0, 2, 1, 1, 3, 0, 3, 0 - }), - 0, - "topk_2d_min_all"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{4}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {4, 3}, std::vector{3, 1, 4, 6, 2, 5, 9, 8, 7, 12, 11, 10}), + reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{3, 2, 1, 2, 0, 2, 1, 1, 3, 0, 3, 0}), + 0, + "topk_2d_min_all"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{4}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 3, 1, 4, 6, 2, 5, 9, 8, 7, 12, 11, 10 - }), - reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{ - 3, 2, 1, 2, 0, 2, 1, 1, 3, 0, 3, 0 - }), - 1, - "topk_2d_min_all"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{4}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {4, 3}, std::vector{3, 1, 4, 6, 2, 5, 9, 8, 7, 12, 11, 10}), + reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{3, 2, 1, 2, 0, 2, 1, 1, 3, 0, 3, 0}), + 1, + "topk_2d_min_all"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 3, 1, 4, 6, 2, 5 - }), - reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{ - 3, 2, 1, 2, 0, 2 - }), - 0, - "topk_2d_min_partial"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3}, std::vector{3, 1, 4, 6, 2, 5}), + reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{3, 2, 1, 2, 0, 2}), + 0, + "topk_2d_min_partial"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 3, 1, 4, 6, 2, 5 - }), - reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{ - 3, 2, 1, 2, 0, 2 - }), - 1, - "topk_2d_min_partial"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3}, std::vector{3, 1, 4, 6, 2, 5}), + reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{3, 2, 1, 2, 0, 2}), + 1, + "topk_2d_min_partial"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::NONE, - reference_tests::Tensor(ET, {1, 3}, std::vector{ - 3, 1, 4 - }), - reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{ - 3, 2, 1 - }), - 0, - "topk_2d_min_one"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::NONE, + reference_tests::Tensor(ET, {1, 3}, std::vector{3, 1, 4}), + reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{3, 2, 1}), + 0, + "topk_2d_min_one"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::NONE, - reference_tests::Tensor(ET, {1, 3}, std::vector{ - 3, 1, 4 - }), - reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{ - 3, 2, 1 - }), - 1, - "topk_2d_min_one"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::NONE, + reference_tests::Tensor(ET, {1, 3}, std::vector{3, 1, 4}), + reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{3, 2, 1}), + 1, + "topk_2d_min_one"), }; return params; } std::vector generateCombinedParams1dMaxMin() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams1dMaxMin(), generateParams1dMaxMin(), generateParams1dMaxMin(), @@ -1321,23 +1182,17 @@ std::vector generateCombinedParams1dMaxMin() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTest1dMaxMin, - testing::ValuesIn(generateCombinedParams1dMaxMin()), ReferenceTopKTest1dMaxMin::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTest1dMaxMin, + testing::ValuesIn(generateCombinedParams1dMaxMin()), + ReferenceTopKTest1dMaxMin::getTestCaseName); class ReferenceTopKTestInt64 : public ReferenceTopKTest1dMaxMin { private: static std::shared_ptr CreateFunction(const TopKParams& params, size_t out_idx) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); - const auto B = std::make_shared(A, - k, - params.axis, - params.mode, - params.sort, - element::i64); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); + const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort, element::i64); const auto f = std::make_shared(OutputVector{B->output(out_idx)}, ParameterVector{A}); return f; } @@ -1352,45 +1207,31 @@ std::vector generateParamsInt64() { using T = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; using T_OUT = typename element_type_traits::value_type; - std::vector params { - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0 - }), - 0, - "topk_int64"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0 - }), - 1, - "topk_int64"), + std::vector params{ + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0}), + 0, + "topk_int64"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0}), + 1, + "topk_int64"), }; return params; } std::vector generateCombinedParamsInt64() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInt64(), }; std::vector combinedParams; @@ -1401,8 +1242,10 @@ std::vector generateCombinedParamsInt64() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestInt64, - testing::ValuesIn(generateCombinedParamsInt64()), ReferenceTopKTest1dMaxMin::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestInt64, + testing::ValuesIn(generateCombinedParamsInt64()), + ReferenceTopKTest1dMaxMin::getTestCaseName); class ReferenceTopKTestSingleOutput : public ReferenceTopKTest { public: @@ -1415,11 +1258,8 @@ class ReferenceTopKTestSingleOutput : public ReferenceTopKTest { private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(OutputVector{B->output(1)}, ParameterVector{A}); return f; @@ -1435,23 +1275,22 @@ std::vector generateParamsSingleOutput() { using T = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; using T_OUT = typename element_type_traits::value_type; - std::vector params { - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{}), - reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{2, 0, 1, 2, 1, 0, 0, 1}), - 0, - "topk_3d_single_output"), + std::vector params{ + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{}), + reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{2, 0, 1, 2, 1, 0, 0, 1}), + 0, + "topk_3d_single_output"), }; return params; } std::vector generateCombinedParamsSingleOutput() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsSingleOutput(), generateParamsSingleOutput(), generateParamsSingleOutput(), @@ -1473,8 +1312,10 @@ std::vector generateCombinedParamsSingleOutput() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestSingleOutput, - testing::ValuesIn(generateCombinedParamsSingleOutput()), ReferenceTopKTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestSingleOutput, + testing::ValuesIn(generateCombinedParamsSingleOutput()), + ReferenceTopKTest::getTestCaseName); TEST(ReferenceTopKTestInvalid, topk_v1_invalid_strings) { const auto data = std::make_shared(element::f32, Shape{1, 2, 3}); @@ -1493,14 +1334,10 @@ TEST(ReferenceTopKTestInvalid, topk_v1_invalid_k) { EXPECT_THROW(opset1::TopK(data, k_negative, 0, "max", "index"), ov::NodeValidationFailure); } - - - class ReferenceTopKTestResnet50V3 : public ReferenceTopKTestResnet50 { private: static std::shared_ptr CreateFunction(const TopKParamsResnet50& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); + const auto A = std::make_shared(params.A.type, params.A.shape); const auto B = std::make_shared(A, opset1::Constant::create(element::i64, {}, {5}), 1, @@ -1516,7 +1353,8 @@ class ReferenceTopKTestResnet50V3 : public ReferenceTopKTestResnet50 { const auto out5_index = B->output(1); const auto out1_value = C->output(0); const auto out1_index = C->output(1); - const auto f = std::make_shared(OutputVector{out5_value, out5_index, out1_value, out1_index}, ParameterVector{A}); + const auto f = + std::make_shared(OutputVector{out5_value, out5_index, out1_value, out1_index}, ParameterVector{A}); return f; } }; @@ -1525,17 +1363,16 @@ TEST_P(ReferenceTopKTestResnet50V3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestResnet50V3, - testing::ValuesIn(generateCombinedParamsResnet50()), ReferenceTopKTestResnet50V3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestResnet50V3, + testing::ValuesIn(generateCombinedParamsResnet50()), + ReferenceTopKTestResnet50V3::getTestCaseName); class ReferenceTopKTestMaxMinSortV3 : public ReferenceTopKTestMaxMinSort { private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(B->outputs(), ParameterVector{A}); return f; @@ -1546,17 +1383,16 @@ TEST_P(ReferenceTopKTestMaxMinSortV3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestMaxMinSortV3, - testing::ValuesIn(generateCombinedParamsMaxMinSort()), ReferenceTopKTestMaxMinSortV3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestMaxMinSortV3, + testing::ValuesIn(generateCombinedParamsMaxMinSort()), + ReferenceTopKTestMaxMinSortV3::getTestCaseName); class ReferenceTopKTestBackendV3 : public ReferenceTopKTestBackend { private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(B->outputs(), ParameterVector{A}); return f; @@ -1567,17 +1403,16 @@ TEST_P(ReferenceTopKTestBackendV3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestBackendV3, - testing::ValuesIn(generateCombinedParamsBackend()), ReferenceTopKTestBackendV3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestBackendV3, + testing::ValuesIn(generateCombinedParamsBackend()), + ReferenceTopKTestBackendV3::getTestCaseName); class ReferenceTopKTest1dMaxMinV3 : public ReferenceTopKTest1dMaxMin { private: static std::shared_ptr CreateFunction(const TopKParams& params, size_t out_idx) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(OutputVector{B->output(out_idx)}, ParameterVector{A}); return f; @@ -1588,23 +1423,17 @@ TEST_P(ReferenceTopKTest1dMaxMinV3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTest1dMaxMinV3, - testing::ValuesIn(generateCombinedParams1dMaxMin()), ReferenceTopKTest1dMaxMinV3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTest1dMaxMinV3, + testing::ValuesIn(generateCombinedParams1dMaxMin()), + ReferenceTopKTest1dMaxMinV3::getTestCaseName); class ReferenceTopKTestInt64V3 : public ReferenceTopKTestInt64 { private: static std::shared_ptr CreateFunction(const TopKParams& params, size_t out_idx) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); - const auto B = std::make_shared(A, - k, - params.axis, - params.mode, - params.sort, - element::i64); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); + const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort, element::i64); const auto f = std::make_shared(OutputVector{B->output(out_idx)}, ParameterVector{A}); return f; } @@ -1614,17 +1443,16 @@ TEST_P(ReferenceTopKTestInt64V3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestInt64V3, - testing::ValuesIn(generateCombinedParamsInt64()), ReferenceTopKTestInt64V3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestInt64V3, + testing::ValuesIn(generateCombinedParamsInt64()), + ReferenceTopKTestInt64V3::getTestCaseName); class ReferenceTopKTestSingleOutputV3 : public ReferenceTopKTestSingleOutput { private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(OutputVector{B->output(1)}, ParameterVector{A}); return f; @@ -1635,8 +1463,10 @@ TEST_P(ReferenceTopKTestSingleOutputV3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestSingleOutputV3, - testing::ValuesIn(generateCombinedParamsSingleOutput()), ReferenceTopKTestSingleOutputV3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestSingleOutputV3, + testing::ValuesIn(generateCombinedParamsSingleOutput()), + ReferenceTopKTestSingleOutputV3::getTestCaseName); TEST(ReferenceTopKTestInvalidV3, topk_v3_invalid_strings) { const auto data = std::make_shared(element::f32, Shape{1, 2, 3}); @@ -1753,4 +1583,4 @@ INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, testing::ValuesIn(generateCombinedParamsForStableTest()), ReferenceTopKv11StableTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/transpose.cpp b/src/plugins/template/tests/functional/op_reference/transpose.cpp index 44d45f2710cf3d..0ebb36e781b3bf 100644 --- a/src/plugins/template/tests/functional/op_reference/transpose.cpp +++ b/src/plugins/template/tests/functional/op_reference/transpose.cpp @@ -2,13 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/transpose.hpp" + #include -#include "openvino/op/transpose.hpp" -#include "openvino/op/constant.hpp" -#include "openvino/op/convert.hpp" #include "base_reference_test.hpp" #include "common_test_utils/type_prop.hpp" +#include "openvino/op/constant.hpp" +#include "openvino/op/convert.hpp" using namespace reference_tests; using namespace ov; @@ -33,7 +34,7 @@ struct TransposeParams { reference_tests::Tensor axisTensor; reference_tests::Tensor expectedTensor; std::string testcaseName; - std::pair expectedException; + std::pair expectedException; }; class ReferenceTransposeLayerTest : public testing::TestWithParam, public CommonReferenceTest { @@ -68,17 +69,19 @@ class ReferenceTransposeLayerTest : public testing::TestWithParam function; if (params.dynamicDataShape.is_static()) { const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); - const auto axis = std::make_shared(params.axisTensor.type, params.axisTensor.shape, + const auto axis = std::make_shared(params.axisTensor.type, + params.axisTensor.shape, params.axisTensor.data.data()); const auto axisI64 = std::make_shared(axis, element::i64); const auto transpose = std::make_shared(data, axisI64); - function = std::make_shared(NodeVector {transpose}, ParameterVector {data}); + function = std::make_shared(NodeVector{transpose}, ParameterVector{data}); } else { const auto data = std::make_shared(params.dataTensor.type, PartialShape::dynamic()); - const auto axis = std::make_shared(params.axisTensor.type, PartialShape{Dimension::dynamic()}); + const auto axis = + std::make_shared(params.axisTensor.type, PartialShape{Dimension::dynamic()}); const auto axisI64 = std::make_shared(axis, element::i64); const auto transpose = std::make_shared(data, axisI64); - function = std::make_shared(NodeVector {transpose}, ParameterVector {data, axis}); + function = std::make_shared(NodeVector{transpose}, ParameterVector{data, axis}); } return function; } @@ -105,7 +108,7 @@ TEST_P(ReferenceTransposeLayerTest, CompareWithRefs) { template std::vector generateTransposeParams() { using T = typename element_type_traits::value_type; - std::vector transposeParams { + std::vector transposeParams{ // transpose_basic TransposeParams(PartialShape::dynamic(), reference_tests::Tensor(IN_ET, {2, 3}, std::vector{1, 2, 3, 4, 5, 6}), @@ -117,51 +120,62 @@ std::vector generateTransposeParams() { reference_tests::Tensor(element::i64, {2}, std::vector{1, 0}), reference_tests::Tensor(IN_ET, {3, 2}, std::vector{1, 4, 2, 5, 3, 6}), "transpose_basic_2"), - TransposeParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {2, 2, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(element::i64, {3}, std::vector{2, 1, 0}), - reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{1, 7, 4, 10, 2, 8, 5, 11, 3, 9, 6, 12}), - "transpose_basic_3"), + TransposeParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {2, 2, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(element::i64, {3}, std::vector{2, 1, 0}), + reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{1, 7, 4, 10, 2, 8, 5, 11, 3, 9, 6, 12}), + "transpose_basic_3"), // transpose_axes_constant - TransposeParams({}, - reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), - reference_tests::Tensor(IN_ET, {3, 4, 2, 1}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, - 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), - "transpose_axes_constant"), + TransposeParams( + {}, + reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), + reference_tests::Tensor(IN_ET, {3, 4, 2, 1}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, + 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), + "transpose_axes_constant"), // transpose_axes_empty_constant - TransposeParams({}, - reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i64, {0}, std::vector{}), - reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 5, 17, 9, 21, 2, 14, 6, 18, 10, 22, - 3, 15, 7, 19, 11, 23, 4, 16, 8, 20, 12, 24}), - "transpose_axes_empty_constant"), + TransposeParams( + {}, + reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i64, {0}, std::vector{}), + reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 5, 17, 9, 21, 2, 14, 6, 18, 10, 22, + 3, 15, 7, 19, 11, 23, 4, 16, 8, 20, 12, 24}), + "transpose_axes_empty_constant"), // transpose_axes_parameter_static_shapes - TransposeParams({}, - reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), - reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, - 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), - "transpose_axes_parameter_static_shapes"), + TransposeParams( + {}, + reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), + reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, + 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), + "transpose_axes_parameter_static_shapes"), // transpose_axes_parameter_dynamic_shapes - TransposeParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), - reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, - 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), - "transpose_axes_parameter_dynamic_shapes"), + TransposeParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), + reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, + 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), + "transpose_axes_parameter_dynamic_shapes"), // transpose_int_data_axes_constant - TransposeParams({}, - reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), - reference_tests::Tensor(IN_ET, {3, 4, 2, 1}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, - 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), - "transpose_int_data_axes_constant"), + TransposeParams( + {}, + reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), + reference_tests::Tensor(IN_ET, {3, 4, 2, 1}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, + 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), + "transpose_int_data_axes_constant"), }; return transposeParams; } @@ -192,7 +206,7 @@ std::vector generateThrowingTransposeParams() { } std::vector generateTransposeCombinedParams() { - const std::vector> transposeTypeParams { + const std::vector> transposeTypeParams{ generateTransposeParams(), generateTransposeParams(), generateTransposeParams(), @@ -214,6 +228,8 @@ std::vector generateTransposeCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Transpose_With_Hardcoded_Refs, ReferenceTransposeLayerTest, - testing::ValuesIn(generateTransposeCombinedParams()), ReferenceTransposeLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Transpose_With_Hardcoded_Refs, + ReferenceTransposeLayerTest, + testing::ValuesIn(generateTransposeCombinedParams()), + ReferenceTransposeLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/unsqueeze.cpp b/src/plugins/template/tests/functional/op_reference/unsqueeze.cpp index 0fedf476e99ec3..f486035de10dd1 100644 --- a/src/plugins/template/tests/functional/op_reference/unsqueeze.cpp +++ b/src/plugins/template/tests/functional/op_reference/unsqueeze.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/unsqueeze.hpp" + #include -#include "openvino/op/unsqueeze.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; @@ -16,14 +17,14 @@ namespace { struct UnsqueezeParams { template UnsqueezeParams(const Shape& input_shape, - const Shape& expected_shape, - const element::Type& input_type, - const element::Type& expected_type, - const std::vector& input_value, - const std::vector& expected_value, - const Shape& axes_shape, - const element::Type& axes_type, - const std::vector& axes_value) + const Shape& expected_shape, + const element::Type& input_type, + const element::Type& expected_type, + const std::vector& input_value, + const std::vector& expected_value, + const Shape& axes_shape, + const element::Type& axes_type, + const std::vector& axes_value) : m_input_shape(input_shape), m_expected_shape(expected_shape), m_input_type(input_type), @@ -74,10 +75,10 @@ class ReferenceUnsqueezeLayerTest : public testing::TestWithParam CreateFunction(const element::Type_t& input_type, - const Shape& input_shape, - const element::Type& axes_type, - const Shape& axes_shape, - const ov::Tensor& axes_value) { + const Shape& input_shape, + const element::Type& axes_type, + const Shape& axes_shape, + const ov::Tensor& axes_value) { const auto in = std::make_shared(input_type, input_shape); const auto axes = std::make_shared(axes_type, axes_shape, axes_value.data()); const auto unsqueeze = std::make_shared(in, axes); @@ -94,17 +95,15 @@ std::vector generateParamsForUnsqueeze() { using T1 = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; - std::vector params{ - UnsqueezeParams(Shape{4, 2}, - Shape{4, 1, 1, 2}, - IO_T, - IO_T, - std::vector{1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{1, 2, 3, 4, 5, 6, 7, 8}, - Shape {2}, - Axes_T, - std::vector{1, 2}) - }; + std::vector params{UnsqueezeParams(Shape{4, 2}, + Shape{4, 1, 1, 2}, + IO_T, + IO_T, + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, + Shape{2}, + Axes_T, + std::vector{1, 2})}; return params; } @@ -114,17 +113,15 @@ std::vector generateParamsForUnsqueezeNegative() { using T1 = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; - std::vector params{ - UnsqueezeParams(Shape{4, 2}, - Shape{4, 1, 2, 1}, - IO_T, - IO_T, - std::vector{1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{1, 2, 3, 4, 5, 6, 7, 8}, - Shape {2}, - Axes_T, - std::vector{1, -1}) - }; + std::vector params{UnsqueezeParams(Shape{4, 2}, + Shape{4, 1, 2, 1}, + IO_T, + IO_T, + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, + Shape{2}, + Axes_T, + std::vector{1, -1})}; return params; } @@ -162,10 +159,9 @@ std::vector generateCombinedParamsForUnsqueeze() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Unsqueeze_With_Hardcoded_Refs, - ReferenceUnsqueezeLayerTest, - ::testing::ValuesIn(generateCombinedParamsForUnsqueeze()), - ReferenceUnsqueezeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Unsqueeze_With_Hardcoded_Refs, + ReferenceUnsqueezeLayerTest, + ::testing::ValuesIn(generateCombinedParamsForUnsqueeze()), + ReferenceUnsqueezeLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/variadic_split.cpp b/src/plugins/template/tests/functional/op_reference/variadic_split.cpp index 68eb1267f38297..1f32da3440be1c 100644 --- a/src/plugins/template/tests/functional/op_reference/variadic_split.cpp +++ b/src/plugins/template/tests/functional/op_reference/variadic_split.cpp @@ -2,23 +2,30 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/variadic_split.hpp" + #include -#include "openvino/op/variadic_split.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct VariadicSplitParams { - VariadicSplitParams(const ov::PartialShape& dynamicDataShape, const reference_tests::Tensor& dataTensor, - const reference_tests::Tensor& axisTensor, const reference_tests::Tensor& splitLengthTensor, - const std::vector& expectedTensors, const std::string& testcaseName = "") : - dynamicDataShape(dynamicDataShape), dataTensor(dataTensor), - axisTensor(axisTensor), splitLengthTensor(splitLengthTensor), - expectedTensors(expectedTensors), testcaseName(testcaseName) {} + VariadicSplitParams(const ov::PartialShape& dynamicDataShape, + const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& axisTensor, + const reference_tests::Tensor& splitLengthTensor, + const std::vector& expectedTensors, + const std::string& testcaseName = "") + : dynamicDataShape(dynamicDataShape), + dataTensor(dataTensor), + axisTensor(axisTensor), + splitLengthTensor(splitLengthTensor), + expectedTensors(expectedTensors), + testcaseName(testcaseName) {} ov::PartialShape dynamicDataShape; reference_tests::Tensor dataTensor; @@ -80,13 +87,13 @@ class ReferenceVariadicSplitTest : public testing::TestWithParam CreateDynamicFunction(const VariadicSplitParams& params) { const auto data = std::make_shared(params.dataTensor.type, params.dynamicDataShape); const auto axis = std::make_shared(params.axisTensor.type, params.axisTensor.shape); - const auto splitLengths = std::make_shared(params.splitLengthTensor.type, params.splitLengthTensor.shape); + const auto splitLengths = + std::make_shared(params.splitLengthTensor.type, params.splitLengthTensor.shape); const auto split = std::make_shared(data, axis, splitLengths); return std::make_shared(split->outputs(), ParameterVector{data, axis, splitLengths}); } }; - TEST_P(ReferenceVariadicSplitTest, CompareWithRefs) { Exec(); } @@ -94,185 +101,213 @@ TEST_P(ReferenceVariadicSplitTest, CompareWithRefs) { template std::vector generateVariadicSplitParams() { using T = typename element_type_traits::value_type; - std::vector variadicSplitParams { + std::vector variadicSplitParams{ // variadic_split_1d_static - VariadicSplitParams({10}, - reference_tests::Tensor(IN_ET, {10}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), - reference_tests::Tensor(element::i32, {1}, std::vector{0}), - reference_tests::Tensor(element::i32, {3}, std::vector{5, 3, 2}), - std::vector{reference_tests::Tensor(IN_ET, {5}, std::vector{1, 2, 3, 4, 5}), - reference_tests::Tensor(IN_ET, {3}, std::vector{6, 7, 8}), - reference_tests::Tensor(IN_ET, {2}, std::vector{9, 10})}, - "variadic_split_1d_static"), + VariadicSplitParams( + {10}, + reference_tests::Tensor(IN_ET, {10}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), + reference_tests::Tensor(element::i32, {1}, std::vector{0}), + reference_tests::Tensor(element::i32, {3}, std::vector{5, 3, 2}), + std::vector{reference_tests::Tensor(IN_ET, {5}, std::vector{1, 2, 3, 4, 5}), + reference_tests::Tensor(IN_ET, {3}, std::vector{6, 7, 8}), + reference_tests::Tensor(IN_ET, {2}, std::vector{9, 10})}, + "variadic_split_1d_static"), // variadic_split_1d_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {10}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), - reference_tests::Tensor(element::i32, {1}, std::vector{0}), - reference_tests::Tensor(element::i32, {3}, std::vector{5, 3, 2}), - std::vector{reference_tests::Tensor(IN_ET, {5}, std::vector{1, 2, 3, 4, 5}), - reference_tests::Tensor(IN_ET, {3}, std::vector{6, 7, 8}), - reference_tests::Tensor(IN_ET, {2}, std::vector{9, 10})}, - "variadic_split_1d_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {10}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), + reference_tests::Tensor(element::i32, {1}, std::vector{0}), + reference_tests::Tensor(element::i32, {3}, std::vector{5, 3, 2}), + std::vector{reference_tests::Tensor(IN_ET, {5}, std::vector{1, 2, 3, 4, 5}), + reference_tests::Tensor(IN_ET, {3}, std::vector{6, 7, 8}), + reference_tests::Tensor(IN_ET, {2}, std::vector{9, 10})}, + "variadic_split_1d_dynamic"), // variadic_split_2d_axis_0_static - VariadicSplitParams({6, 2}, - reference_tests::Tensor(IN_ET, {6, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(element::i32, {}, std::vector{0}), - reference_tests::Tensor(element::i32, {2}, std::vector{4, 2}), - std::vector{reference_tests::Tensor(IN_ET, {4, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{9, 10, 11, 12})}, - "variadic_split_2d_axis_0_static"), + VariadicSplitParams( + {6, 2}, + reference_tests::Tensor(IN_ET, {6, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(element::i32, {}, std::vector{0}), + reference_tests::Tensor(element::i32, {2}, std::vector{4, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {4, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{9, 10, 11, 12})}, + "variadic_split_2d_axis_0_static"), // variadic_split_2d_axis_0_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {6, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(element::i32, {}, std::vector{0}), - reference_tests::Tensor(element::i32, {2}, std::vector{4, 2}), - std::vector{reference_tests::Tensor(IN_ET, {4, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{9, 10, 11, 12})}, - "variadic_split_2d_axis_0_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {6, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(element::i32, {}, std::vector{0}), + reference_tests::Tensor(element::i32, {2}, std::vector{4, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {4, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{9, 10, 11, 12})}, + "variadic_split_2d_axis_0_dynamic"), // variadic_split_2d_axis_1_static - VariadicSplitParams({4, 3}, - reference_tests::Tensor(IN_ET, {4, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(element::i32, {}, std::vector{1}), - reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {4, 1}, std::vector{1, 4, 7, 10}), - reference_tests::Tensor(IN_ET, {4, 2}, std::vector{2, 3, 5, 6, 8, 9, 11, 12})}, - "variadic_split_2d_axis_1_static"), + VariadicSplitParams( + {4, 3}, + reference_tests::Tensor(IN_ET, {4, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(element::i32, {}, std::vector{1}), + reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {4, 1}, std::vector{1, 4, 7, 10}), + reference_tests::Tensor(IN_ET, {4, 2}, std::vector{2, 3, 5, 6, 8, 9, 11, 12})}, + "variadic_split_2d_axis_1_static"), // variadic_split_2d_axis_1_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {4, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(element::i32, {}, std::vector{1}), - reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {4, 1}, std::vector{1, 4, 7, 10}), - reference_tests::Tensor(IN_ET, {4, 2}, std::vector{2, 3, 5, 6, 8, 9, 11, 12})}, - "variadic_split_2d_axis_1_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {4, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(element::i32, {}, std::vector{1}), + reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {4, 1}, std::vector{1, 4, 7, 10}), + reference_tests::Tensor(IN_ET, {4, 2}, std::vector{2, 3, 5, 6, 8, 9, 11, 12})}, + "variadic_split_2d_axis_1_dynamic"), // variadic_split_4d_axis_0_static - VariadicSplitParams({6, 2, 3, 1}, - reference_tests::Tensor(IN_ET, {6, 2, 3, 1}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35}), - reference_tests::Tensor(element::i32, {1}, std::vector{0}), - reference_tests::Tensor(element::i32, {3}, std::vector{3, 1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {3, 2, 3, 1}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17}), - reference_tests::Tensor(IN_ET, {1, 2, 3, 1}, std::vector{18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(IN_ET, {2, 2, 3, 1}, std::vector{24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35})}, - "variadic_split_4d_axis_0_static"), + VariadicSplitParams( + {6, 2, 3, 1}, + reference_tests::Tensor(IN_ET, {6, 2, 3, 1}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35}), + reference_tests::Tensor(element::i32, {1}, std::vector{0}), + reference_tests::Tensor(element::i32, {3}, std::vector{3, 1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, + {3, 2, 3, 1}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}), + reference_tests::Tensor(IN_ET, {1, 2, 3, 1}, std::vector{18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(IN_ET, + {2, 2, 3, 1}, + std::vector{24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35})}, + "variadic_split_4d_axis_0_static"), // variadic_split_4d_axis_0_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {6, 2, 3, 1}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35}), - reference_tests::Tensor(element::i32, {1}, std::vector{0}), - reference_tests::Tensor(element::i32, {3}, std::vector{3, 1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {3, 2, 3, 1}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17}), - reference_tests::Tensor(IN_ET, {1, 2, 3, 1}, std::vector{18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(IN_ET, {2, 2, 3, 1}, std::vector{24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35})}, - "variadic_split_4d_axis_0_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {6, 2, 3, 1}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35}), + reference_tests::Tensor(element::i32, {1}, std::vector{0}), + reference_tests::Tensor(element::i32, {3}, std::vector{3, 1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, + {3, 2, 3, 1}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}), + reference_tests::Tensor(IN_ET, {1, 2, 3, 1}, std::vector{18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(IN_ET, + {2, 2, 3, 1}, + std::vector{24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35})}, + "variadic_split_4d_axis_0_dynamic"), // variadic_split_4d_axis_1_static - VariadicSplitParams({2, 8, 2, 2}, - reference_tests::Tensor(IN_ET, {2, 8, 2, 2}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63}), - reference_tests::Tensor(element::u64, {1}, std::vector{1}), - reference_tests::Tensor(element::u64, {4}, std::vector{1, 3, 2, 2}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{0, 1, 2, 3, 32, 33, 34, 35}), - reference_tests::Tensor(IN_ET, {2, 3, 2, 2}, std::vector{4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47}), - reference_tests::Tensor(IN_ET, {2, 2, 2, 2}, std::vector{16, 17, 18, 19, 20, 21, 22, 23, - 48, 49, 50, 51, 52, 53, 54, 55}), - reference_tests::Tensor(IN_ET, {2, 2, 2, 2}, std::vector{24, 25, 26, 27, 28, 29, 30, 31, - 56, 57, 58, 59, 60, 61, 62, 63})}, - "variadic_split_4d_axis_1_static"), + VariadicSplitParams( + {2, 8, 2, 2}, + reference_tests::Tensor( + IN_ET, + {2, 8, 2, 2}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}), + reference_tests::Tensor(element::u64, {1}, std::vector{1}), + reference_tests::Tensor(element::u64, {4}, std::vector{1, 3, 2, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{0, 1, 2, 3, 32, 33, 34, 35}), + reference_tests::Tensor(IN_ET, {2, 3, 2, 2}, std::vector{4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47}), + reference_tests::Tensor(IN_ET, + {2, 2, 2, 2}, + std::vector{16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55}), + reference_tests::Tensor( + IN_ET, + {2, 2, 2, 2}, + std::vector{24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63})}, + "variadic_split_4d_axis_1_static"), // variadic_split_4d_axis_1_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {2, 8, 2, 2}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63}), - reference_tests::Tensor(element::i64, {1}, std::vector{1}), - reference_tests::Tensor(element::i64, {4}, std::vector{1, 3, 2, 2}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{0, 1, 2, 3, 32, 33, 34, 35}), - reference_tests::Tensor(IN_ET, {2, 3, 2, 2}, std::vector{4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47}), - reference_tests::Tensor(IN_ET, {2, 2, 2, 2}, std::vector{16, 17, 18, 19, 20, 21, 22, 23, - 48, 49, 50, 51, 52, 53, 54, 55}), - reference_tests::Tensor(IN_ET, {2, 2, 2, 2}, std::vector{24, 25, 26, 27, 28, 29, 30, 31, - 56, 57, 58, 59, 60, 61, 62, 63})}, - "variadic_split_4d_axis_1_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor( + IN_ET, + {2, 8, 2, 2}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}), + reference_tests::Tensor(element::i64, {1}, std::vector{1}), + reference_tests::Tensor(element::i64, {4}, std::vector{1, 3, 2, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{0, 1, 2, 3, 32, 33, 34, 35}), + reference_tests::Tensor(IN_ET, {2, 3, 2, 2}, std::vector{4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47}), + reference_tests::Tensor(IN_ET, + {2, 2, 2, 2}, + std::vector{16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55}), + reference_tests::Tensor( + IN_ET, + {2, 2, 2, 2}, + std::vector{24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63})}, + "variadic_split_4d_axis_1_dynamic"), // variadic_split_4d_axis_2_static - VariadicSplitParams({2, 1, 6, 2}, - reference_tests::Tensor(IN_ET, {2, 1, 6, 2}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(element::u32, {1}, std::vector{2}), - reference_tests::Tensor(element::u32, {3}, std::vector{3, 1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 3, 2}, std::vector{0, 1, 2, 3, 4, 5, 12, 13, - 14, 15, 16, 17}), - reference_tests::Tensor(IN_ET, {2, 1, 1, 2}, std::vector{6, 7, 18, 19}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, - "variadic_split_4d_axis_2_static"), + VariadicSplitParams( + {2, 1, 6, 2}, + reference_tests::Tensor(IN_ET, {2, 1, 6, 2}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(element::u32, {1}, std::vector{2}), + reference_tests::Tensor(element::u32, {3}, std::vector{3, 1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 3, 2}, std::vector{0, 1, 2, 3, 4, 5, 12, 13, 14, 15, 16, 17}), + reference_tests::Tensor(IN_ET, {2, 1, 1, 2}, std::vector{6, 7, 18, 19}), + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, + "variadic_split_4d_axis_2_static"), // variadic_split_4d_axis_2_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {2, 1, 6, 2}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {1}, std::vector{2}), - reference_tests::Tensor(element::i32, {3}, std::vector{-1, 1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 3, 2}, std::vector{0, 1, 2, 3, 4, 5, 12, 13, - 14, 15, 16, 17}), - reference_tests::Tensor(IN_ET, {2, 1, 1, 2}, std::vector{6, 7, 18, 19}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, - "variadic_split_4d_axis_2_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {2, 1, 6, 2}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {1}, std::vector{2}), + reference_tests::Tensor(element::i32, {3}, std::vector{-1, 1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 3, 2}, std::vector{0, 1, 2, 3, 4, 5, 12, 13, 14, 15, 16, 17}), + reference_tests::Tensor(IN_ET, {2, 1, 1, 2}, std::vector{6, 7, 18, 19}), + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, + "variadic_split_4d_axis_2_dynamic"), // variadic_split_4d_axis_3_static - VariadicSplitParams({2, 1, 2, 6}, - reference_tests::Tensor(IN_ET, {2, 1, 2, 6}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {1}, std::vector{3}), - reference_tests::Tensor(element::i32, {3}, std::vector{1, -1, 3}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 2, 1}, std::vector{0, 6, 12, 18}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{1, 2, 7, 8, 13, 14, 19, 20}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 3}, std::vector{3, 4, 5, 9, 10, 11, 15, 16, - 17, 21, 22, 23})}, - "variadic_split_4d_axis_neg1_static"), + VariadicSplitParams( + {2, 1, 2, 6}, + reference_tests::Tensor(IN_ET, {2, 1, 2, 6}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {1}, std::vector{3}), + reference_tests::Tensor(element::i32, {3}, std::vector{1, -1, 3}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 2, 1}, std::vector{0, 6, 12, 18}), + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{1, 2, 7, 8, 13, 14, 19, 20}), + reference_tests::Tensor(IN_ET, + {2, 1, 2, 3}, + std::vector{3, 4, 5, 9, 10, 11, 15, 16, 17, 21, 22, 23})}, + "variadic_split_4d_axis_neg1_static"), // variadic_split_4d_axis_3_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {2, 1, 2, 6}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {1}, std::vector{-1}), - reference_tests::Tensor(element::i32, {3}, std::vector{1, 2, -1}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 2, 1}, std::vector{0, 6, 12, 18}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{1, 2, 7, 8, 13, 14, 19, 20}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 3}, std::vector{3, 4, 5, 9, 10, 11, 15, 16, - 17, 21, 22, 23})}, - "variadic_split_4d_axis_3_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {2, 1, 2, 6}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {1}, std::vector{-1}), + reference_tests::Tensor(element::i32, {3}, std::vector{1, 2, -1}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 2, 1}, std::vector{0, 6, 12, 18}), + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{1, 2, 7, 8, 13, 14, 19, 20}), + reference_tests::Tensor(IN_ET, + {2, 1, 2, 3}, + std::vector{3, 4, 5, 9, 10, 11, 15, 16, 17, 21, 22, 23})}, + "variadic_split_4d_axis_3_dynamic"), }; return variadicSplitParams; } std::vector generateVariadicSplitCombinedParams() { - const std::vector> variadicSplitTypeParams { + const std::vector> variadicSplitTypeParams{ generateVariadicSplitParams(), generateVariadicSplitParams(), generateVariadicSplitParams(), @@ -292,6 +327,8 @@ std::vector generateVariadicSplitCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_VariadicSplit_With_Hardcoded_Refs, ReferenceVariadicSplitTest, - testing::ValuesIn(generateVariadicSplitCombinedParams()), ReferenceVariadicSplitTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_VariadicSplit_With_Hardcoded_Refs, + ReferenceVariadicSplitTest, + testing::ValuesIn(generateVariadicSplitCombinedParams()), + ReferenceVariadicSplitTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/preprocessing/yuv_to_grey_tests.cpp b/src/plugins/template/tests/functional/preprocessing/yuv_to_grey_tests.cpp index 8ead0964c017b4..e468fde15d8053 100644 --- a/src/plugins/template/tests/functional/preprocessing/yuv_to_grey_tests.cpp +++ b/src/plugins/template/tests/functional/preprocessing/yuv_to_grey_tests.cpp @@ -2,10 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "preprocessing/yuv_to_grey_tests.hpp" +#include + using namespace ov::preprocess; INSTANTIATE_TEST_SUITE_P(smoke_Preprocessing, diff --git a/src/plugins/template/tests/functional/set_device_name.cpp b/src/plugins/template/tests/functional/set_device_name.cpp index 4e9d9c8f35c4a5..f2e45bd34df4b0 100644 --- a/src/plugins/template/tests/functional/set_device_name.cpp +++ b/src/plugins/template/tests/functional/set_device_name.cpp @@ -1,11 +1,11 @@ // Copyright (C) 2018-2023 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -#include -#include - #include "set_device_name.hpp" +#include +#include + namespace ov { namespace test { void set_device_suffix(const std::string& suffix) { @@ -13,5 +13,5 @@ void set_device_suffix(const std::string& suffix) { throw std::runtime_error("The suffix can't be used for TEMPLATE device!"); } } -} // namespace test -} // namespace ov +} // namespace test +} // namespace ov diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/executable_network/exec_network_base.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/executable_network/exec_network_base.cpp index edf642937238bc..454c2c5844c8d0 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/executable_network/exec_network_base.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/executable_network/exec_network_base.cpp @@ -2,33 +2,28 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/executable_network/exec_network_base.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; - -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, ExecutableNetworkBaseTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - ExecutableNetworkBaseTest::getTestCaseName); - - -const std::vector netPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16 -}; - -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, ExecNetSetPrecision, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), +const std::vector> configs = {{}}; + +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + ExecutableNetworkBaseTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + ExecutableNetworkBaseTest::getTestCaseName); + +const std::vector netPrecisions = {InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16}; + +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + ExecNetSetPrecision, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), ExecNetSetPrecision::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/callback.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/callback.cpp index fe7686dc590fe0..5a54f7542f609d 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/callback.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/callback.cpp @@ -2,20 +2,18 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/infer_request/callback.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestCallbackTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestCallbackTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestCallbackTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestCallbackTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/config.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/config.cpp index 492d7c9bb3b661..b822c6f94e6533 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/config.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/config.cpp @@ -2,23 +2,21 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/infer_request/config.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestConfigTest, - ::testing::Combine( - ::testing::Values(1u), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestConfigTest, + ::testing::Combine(::testing::Values(1u), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), InferRequestConfigTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/io_blob.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/io_blob.cpp index 10d16f14da9942..b6f1f38a3bdc86 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/io_blob.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/io_blob.cpp @@ -2,21 +2,19 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/infer_request/io_blob.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestIOBBlobTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestIOBBlobTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestIOBBlobTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestIOBBlobTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/memory_states.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/memory_states.cpp index 3a8bc33f74b521..323cdb5ac4c222 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/memory_states.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/memory_states.cpp @@ -22,4 +22,3 @@ INSTANTIATE_TEST_SUITE_P(smoke_Template_BehaviorTests, ::testing::ValuesIn(memoryStateTestCases), InferRequestQueryStateExceptionTest::getTestCaseName); } // namespace - diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/multithreading.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/multithreading.cpp index d0e2c321c530fa..d633da55e8fd8b 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/multithreading.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/multithreading.cpp @@ -2,22 +2,20 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/infer_request/multithreading.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestMultithreadingTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestMultithreadingTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestMultithreadingTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestMultithreadingTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/wait.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/wait.cpp index 94e97854188bcf..8233cb87b652e7 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/wait.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/wait.cpp @@ -2,21 +2,19 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/infer_request/wait.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestWaitTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestWaitTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestWaitTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestWaitTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/exec_network_base.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/exec_network_base.cpp index e0a40cae32436b..f6f96b5b20f8c3 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/exec_network_base.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/exec_network_base.cpp @@ -8,59 +8,56 @@ using namespace ov::test::behavior; namespace { - const std::vector configs = { - {}, - }; - const std::vector swPluginConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)} - }; - - INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVCompiledModelBaseTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVCompiledModelBaseTest::getTestCaseName); - - INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, OVCompiledModelBaseTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_MULTI), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTest::getTestCaseName); - - INSTANTIATE_TEST_SUITE_P(smoke_Auto_BehaviorTests, OVCompiledModelBaseTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_AUTO), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTest::getTestCaseName); - - INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVCompiledModelBaseTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTest::getTestCaseName); - - - INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVCompiledModelBaseTestOptional, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVCompiledModelBaseTestOptional::getTestCaseName); - - INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, OVCompiledModelBaseTestOptional, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_MULTI), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTestOptional::getTestCaseName); - - INSTANTIATE_TEST_SUITE_P(smoke_Auto_BehaviorTests, OVCompiledModelBaseTestOptional, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_AUTO), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTestOptional::getTestCaseName); - - INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVCompiledModelBaseTestOptional, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTestOptional::getTestCaseName); +const std::vector configs = { + {}, +}; +const std::vector swPluginConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; + +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVCompiledModelBaseTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVCompiledModelBaseTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, + OVCompiledModelBaseTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_MULTI), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Auto_BehaviorTests, + OVCompiledModelBaseTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_AUTO), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + OVCompiledModelBaseTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVCompiledModelBaseTestOptional, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVCompiledModelBaseTestOptional::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, + OVCompiledModelBaseTestOptional, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_MULTI), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTestOptional::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Auto_BehaviorTests, + OVCompiledModelBaseTestOptional, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_AUTO), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTestOptional::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + OVCompiledModelBaseTestOptional, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTestOptional::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/get_metric.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/get_metric.cpp index 17ed16f162155b..6f1c98f11bc00c 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/get_metric.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/get_metric.cpp @@ -4,7 +4,6 @@ #include "behavior/compiled_model/properties.hpp" #include "behavior/compiled_model/properties_hetero.hpp" - #include "behavior/ov_plugin/properties_tests.hpp" #include "openvino/runtime/core.hpp" @@ -71,4 +70,3 @@ INSTANTIATE_TEST_SUITE_P(smoke_OVClassHeteroCompiledModelGetMetricTest, ////////////////////////////////////////////////////////////////////////////////////////// } // namespace - diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/ov_exec_net_import_export.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/ov_exec_net_import_export.cpp index 57c487b18b92d5..391c2919c26e74 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/ov_exec_net_import_export.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/ov_exec_net_import_export.cpp @@ -1,59 +1,55 @@ // Copyright (C) 2018-2023 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -#include "behavior/compiled_model/import_export.hpp" +#include +#include "behavior/compiled_model/import_export.hpp" #include "ie_plugin_config.hpp" -#include using namespace ov::test::behavior; namespace { const std::vector netPrecisions = { - ov::element::i8, - ov::element::i16, - ov::element::i32, - ov::element::i64, - ov::element::u8, - ov::element::u16, - ov::element::u32, - ov::element::u64, - ov::element::f16, - ov::element::f32, + ov::element::i8, + ov::element::i16, + ov::element::i32, + ov::element::i64, + ov::element::u8, + ov::element::u16, + ov::element::u32, + ov::element::u64, + ov::element::f16, + ov::element::f32, }; const std::vector configs = { - {}, + {}, }; -const std::vector multiConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; +const std::vector multiConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; -const std::vector heteroConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; +const std::vector heteroConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVCompiledGraphImportExportTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), OVCompiledGraphImportExportTest::getTestCaseName); INSTANTIATE_TEST_SUITE_P(smoke_Auto_BehaviorTests, - OVCompiledGraphImportExportTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_AUTO), - ::testing::ValuesIn(multiConfigs)), - OVCompiledGraphImportExportTest::getTestCaseName); + OVCompiledGraphImportExportTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_AUTO), + ::testing::ValuesIn(multiConfigs)), + OVCompiledGraphImportExportTest::getTestCaseName); INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, - OVCompiledGraphImportExportTest, - ::testing::Combine(::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(heteroConfigs)), - OVCompiledGraphImportExportTest::getTestCaseName); + OVCompiledGraphImportExportTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(heteroConfigs)), + OVCompiledGraphImportExportTest::getTestCaseName); INSTANTIATE_TEST_SUITE_P(smoke_OVClassImportExportTestP, OVClassCompiledModelImportExportTestP, - ::testing::Values("HETERO:TEMPLATE")); + ::testing::Values("HETERO:TEMPLATE")); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp index 64b6fc0c1722b1..5622be5f16cce5 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp @@ -45,7 +45,8 @@ INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, ::testing::ValuesIn(default_properties)), OVClassCompiledModelPropertiesDefaultTests::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVCompiledModelPropertiesDefaultSupportedTests, +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVCompiledModelPropertiesDefaultSupportedTests, ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), OVCompiledModelPropertiesDefaultSupportedTests::getTestCaseName); @@ -96,15 +97,15 @@ INSTANTIATE_TEST_SUITE_P(smoke_AutoBatch_BehaviorTests, ::testing::ValuesIn(auto_batch_properties)), OVClassCompiledModelPropertiesTests::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_OVClassCompiledModelEmptyPropertiesTests, OVClassCompiledModelEmptyPropertiesTests, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_OVClassCompiledModelEmptyPropertiesTests, + OVClassCompiledModelEmptyPropertiesTests, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); // OV Class Load network -INSTANTIATE_TEST_SUITE_P( - smoke_OVCompiledModelIncorrectDevice, OVCompiledModelIncorrectDevice, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_OVCompiledModelIncorrectDevice, + OVCompiledModelIncorrectDevice, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); const std::vector>> GetMetricTest_ExecutionDevice_TEMPLATE = {{ov::test::utils::DEVICE_TEMPLATE, std::make_pair(ov::AnyMap{}, "TEMPLATE.0")}}; diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/batched_tensors.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/batched_tensors.cpp index 25798f13590963..d8e9b3a6284d52 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/batched_tensors.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/batched_tensors.cpp @@ -2,10 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/batched_tensors.hpp" +#include + namespace ov { namespace test { namespace behavior { @@ -61,10 +61,12 @@ TEST_P(OVInferRequestBatchedTests, SetInputTensors_Strides) { tensors.push_back(tensor1_cut); tensors.push_back(tensor2_cut); auto exp_tensor = ov::Tensor(element::f32, batch_shape); - ASSERT_THROW({ - req.set_tensors("tensor_input0", tensors); - req.infer(); - }, ov::Exception); + ASSERT_THROW( + { + req.set_tensors("tensor_input0", tensors); + req.infer(); + }, + ov::Exception); } } // namespace behavior @@ -76,7 +78,8 @@ namespace { using namespace ov::test::behavior; using namespace ov; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestBatchedTests, +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestBatchedTests, ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), OVInferRequestBatchedTests::getTestCaseName); diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/callback.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/callback.cpp index a54609aaa15872..64152aad1d304c 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/callback.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/callback.cpp @@ -2,20 +2,18 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/callback.hpp" +#include + using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; +const std::vector configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestCallbackTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestCallbackTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestCallbackTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestCallbackTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/cancellation.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/cancellation.cpp index e31ce005428ba6..1746a4ee5b7de6 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/cancellation.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/cancellation.cpp @@ -8,12 +8,12 @@ using namespace ov::test::behavior; namespace { const std::vector configs = { - {}, + {}, }; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestCancellationTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestCancellationTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestCancellationTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestCancellationTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/infer_request_dynamic.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/infer_request_dynamic.cpp index 62f36bb55461eb..1ae1cb74130ec4 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/infer_request_dynamic.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/infer_request_dynamic.cpp @@ -2,37 +2,38 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/infer_request_dynamic.hpp" +#include + using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; - -const std::vector HeteroConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; - -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestDynamicTests, - ::testing::Combine( - ::testing::Values(ngraph::builder::subgraph::makeSplitConvConcat()), - ::testing::Values(std::vector, std::vector>>{{{1, 4, 20, 20}, {1, 10, 18, 18}}, - {{2, 4, 20, 20}, {2, 10, 18, 18}}}), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestDynamicTests::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVInferRequestDynamicTests, - ::testing::Combine( - ::testing::Values(ngraph::builder::subgraph::makeSplitConvConcat()), - ::testing::Values(std::vector, std::vector>>{{{1, 4, 20, 20}, {1, 10, 18, 18}}, - {{2, 4, 20, 20}, {2, 10, 18, 18}}}), - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(HeteroConfigs)), - OVInferRequestDynamicTests::getTestCaseName); +const std::vector configs = {{}}; + +const std::vector HeteroConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; + +INSTANTIATE_TEST_SUITE_P( + smoke_BehaviorTests, + OVInferRequestDynamicTests, + ::testing::Combine(::testing::Values(ngraph::builder::subgraph::makeSplitConvConcat()), + ::testing::Values(std::vector, std::vector>>{ + {{1, 4, 20, 20}, {1, 10, 18, 18}}, + {{2, 4, 20, 20}, {2, 10, 18, 18}}}), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestDynamicTests::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P( + smoke_Hetero_BehaviorTests, + OVInferRequestDynamicTests, + ::testing::Combine(::testing::Values(ngraph::builder::subgraph::makeSplitConvConcat()), + ::testing::Values(std::vector, std::vector>>{ + {{1, 4, 20, 20}, {1, 10, 18, 18}}, + {{2, 4, 20, 20}, {2, 10, 18, 18}}}), + ::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(HeteroConfigs)), + OVInferRequestDynamicTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference.cpp index f3288d328f44f5..2490bcb1a33cc2 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference.cpp @@ -2,19 +2,19 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/inference.hpp" +#include + namespace { using namespace ov::test::behavior; using namespace ov; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestInferenceTests, - ::testing::Combine( - ::testing::Values(tensor_roi::roi_nchw(), tensor_roi::roi_1d()), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestInferenceTests, + ::testing::Combine(::testing::Values(tensor_roi::roi_nchw(), tensor_roi::roi_1d()), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), OVInferRequestInferenceTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference_chaining.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference_chaining.cpp index 87297a4ab90024..14e51f2cfeee5e 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference_chaining.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference_chaining.cpp @@ -3,41 +3,39 @@ // #include "behavior/ov_infer_request/inference_chaining.hpp" + #include "common_test_utils/test_constants.hpp" using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; - -const std::vector HeteroConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; - -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferenceChaining, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferenceChaining::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVInferenceChaining, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(HeteroConfigs)), - OVInferenceChaining::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferenceChainingStatic, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferenceChainingStatic::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVInferenceChainingStatic, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(HeteroConfigs)), - OVInferenceChainingStatic::getTestCaseName); +const std::vector configs = {{}}; + +const std::vector HeteroConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; + +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferenceChaining, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferenceChaining::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + OVInferenceChaining, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(HeteroConfigs)), + OVInferenceChaining::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferenceChainingStatic, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferenceChainingStatic::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + OVInferenceChainingStatic, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(HeteroConfigs)), + OVInferenceChainingStatic::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/io_tensor.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/io_tensor.cpp index a6d6fc10fd635f..9949e943999239 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/io_tensor.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/io_tensor.cpp @@ -2,22 +2,20 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/io_tensor.hpp" +#include + using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; +const std::vector configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestIOTensorTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestIOTensorTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestIOTensorTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestIOTensorTest::getTestCaseName); std::vector prcs = { ov::element::boolean, @@ -40,30 +38,28 @@ std::vector prcs = { const std::vector emptyConfigs = {{}}; -const std::vector HeteroConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; +const std::vector HeteroConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; -const std::vector Multiconfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; +const std::vector Multiconfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestCheckTensorPrecision, - ::testing::Combine( - ::testing::ValuesIn(prcs), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(emptyConfigs)), +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestCheckTensorPrecision, + ::testing::Combine(::testing::ValuesIn(prcs), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(emptyConfigs)), OVInferRequestCheckTensorPrecision::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVInferRequestCheckTensorPrecision, - ::testing::Combine( - ::testing::ValuesIn(prcs), - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(HeteroConfigs)), +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + OVInferRequestCheckTensorPrecision, + ::testing::Combine(::testing::ValuesIn(prcs), + ::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(HeteroConfigs)), OVInferRequestCheckTensorPrecision::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, OVInferRequestCheckTensorPrecision, - ::testing::Combine( - ::testing::ValuesIn(prcs), - ::testing::Values(ov::test::utils::DEVICE_MULTI), - ::testing::ValuesIn(Multiconfigs)), +INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, + OVInferRequestCheckTensorPrecision, + ::testing::Combine(::testing::ValuesIn(prcs), + ::testing::Values(ov::test::utils::DEVICE_MULTI), + ::testing::ValuesIn(Multiconfigs)), OVInferRequestCheckTensorPrecision::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/multithreading.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/multithreading.cpp index 98347aba2e4142..3607e851ff6db4 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/multithreading.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/multithreading.cpp @@ -2,22 +2,20 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/multithreading.hpp" +#include + using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; +const std::vector configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestMultithreadingTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestMultithreadingTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestMultithreadingTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestMultithreadingTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/wait.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/wait.cpp index a4914fc899b134..06733733a7b7dd 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/wait.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/wait.cpp @@ -2,21 +2,19 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/wait.hpp" +#include + using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; +const std::vector configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestWaitTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestWaitTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestWaitTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestWaitTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/life_time.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/life_time.cpp index ca3a5b27901ccf..a415fa490608a9 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/life_time.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/life_time.cpp @@ -8,12 +8,14 @@ using namespace ov::test::behavior; namespace { -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVHoldersTest, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - OVHoldersTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVHoldersTest, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + OVHoldersTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVHoldersTestOnImportedNetwork, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), - OVHoldersTestOnImportedNetwork::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVHoldersTestOnImportedNetwork, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), + OVHoldersTestOnImportedNetwork::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp index 0f05a09f4da99d..bfc64eb0454962 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp @@ -16,8 +16,10 @@ const std::vector inproperties = { INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVPropertiesIncorrectTests, - ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE, ov::test::utils::DEVICE_HETERO, - ov::test::utils::DEVICE_MULTI, ov::test::utils::DEVICE_BATCH), + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE, + ov::test::utils::DEVICE_HETERO, + ov::test::utils::DEVICE_MULTI, + ov::test::utils::DEVICE_BATCH), ::testing::ValuesIn(inproperties)), OVPropertiesIncorrectTests::getTestCaseName); diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp index 03658e2e4fed81..c17f0cfca2c6ee 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp @@ -7,19 +7,17 @@ using namespace LayerTestsDefinitions; namespace { - static const std::vector precisionsTemplate = { - ov::element::f32, - }; +static const std::vector precisionsTemplate = { + ov::element::f32, +}; - static const std::vector batchSizesTemplate = { - 1, 2 - }; +static const std::vector batchSizesTemplate = {1, 2}; - INSTANTIATE_TEST_SUITE_P(smoke_Behavior_CachingSupportCase_Template, LoadNetworkCacheTestBase, - ::testing::Combine( - ::testing::ValuesIn(LoadNetworkCacheTestBase::getStandardFunctions()), - ::testing::ValuesIn(precisionsTemplate), - ::testing::ValuesIn(batchSizesTemplate), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), - LoadNetworkCacheTestBase::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Behavior_CachingSupportCase_Template, + LoadNetworkCacheTestBase, + ::testing::Combine(::testing::ValuesIn(LoadNetworkCacheTestBase::getStandardFunctions()), + ::testing::ValuesIn(precisionsTemplate), + ::testing::ValuesIn(batchSizesTemplate), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), + LoadNetworkCacheTestBase::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/core_integration.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/core_integration.cpp index 55be786c2a6ffa..858ba1f0d7b254 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/core_integration.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/core_integration.cpp @@ -2,12 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include +#include "behavior/plugin/core_integration.hpp" + #include +#include #include -#include "behavior/plugin/core_integration.hpp" - using namespace BehaviorTestsDefinitions; namespace { @@ -16,54 +16,54 @@ namespace { // IE Class Common tests with // -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassBasicTestP, IEClassBasicTestP, - ::testing::Values(std::make_pair("openvino_template_plugin", ov::test::utils::DEVICE_TEMPLATE))); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassBasicTestP, + IEClassBasicTestP, + ::testing::Values(std::make_pair("openvino_template_plugin", + ov::test::utils::DEVICE_TEMPLATE))); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassNetworkTestP, IEClassNetworkTestP, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassNetworkTestP, + IEClassNetworkTestP, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); // // IE Class GetMetric // -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_SUPPORTED_CONFIG_KEYS, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); - -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_SUPPORTED_METRICS, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_SUPPORTED_CONFIG_KEYS, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_AVAILABLE_DEVICES, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_SUPPORTED_METRICS, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_FULL_DEVICE_NAME, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_AVAILABLE_DEVICES, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_OPTIMIZATION_CAPABILITIES, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_FULL_DEVICE_NAME, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_RANGE_FOR_ASYNC_INFER_REQUESTS, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_OPTIMIZATION_CAPABILITIES, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_ThrowUnsupported, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_RANGE_FOR_ASYNC_INFER_REQUESTS, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetConfigTest, IEClassGetConfigTest_ThrowUnsupported, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_ThrowUnsupported, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetAvailableDevices, IEClassGetAvailableDevices, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetConfigTest, + IEClassGetConfigTest_ThrowUnsupported, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetAvailableDevices, + IEClassGetAvailableDevices, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); // // IE Class SetConfig @@ -117,9 +117,9 @@ TEST_F(IEClassSetConfigTestHETERO, smoke_SetConfigNoThrow) { // IE Class GetConfig // -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetConfigTest, IEClassGetConfigTest, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetConfigTest, + IEClassGetConfigTest, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); class IEClassGetConfigTestTEMPLATE : public BehaviorTestsUtils::IEClassNetworkTest, public BehaviorTestsUtils::IEPluginTestBase { @@ -137,7 +137,7 @@ TEST_F(IEClassGetConfigTestTEMPLATE, smoke_GetConfigNoThrow) { ASSERT_NO_THROW(p = ie.GetMetric(deviceName, METRIC_KEY(SUPPORTED_CONFIG_KEYS))); auto configValues = p.as>(); - for (auto &&confKey : configValues) { + for (auto&& confKey : configValues) { if (CONFIG_KEY(DEVICE_ID) == confKey) { auto defaultDeviceID = ie.GetConfig(deviceName, CONFIG_KEY(DEVICE_ID)).as(); std::cout << CONFIG_KEY(DEVICE_ID) << " : " << defaultDeviceID << std::endl; @@ -153,13 +153,13 @@ TEST_F(IEClassGetConfigTestTEMPLATE, smoke_GetConfigNoThrow) { // IE Class Query network -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassQueryNetworkTest, IEClassQueryNetworkTest, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassQueryNetworkTest, + IEClassQueryNetworkTest, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); // IE Class Load network -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassLoadNetworkTest, IEClassLoadNetworkTest, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_IEClassLoadNetworkTest, + IEClassLoadNetworkTest, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +} // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/life_time.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/life_time.cpp index 0bc6c5ca1f32a3..b505320e1e0991 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/life_time.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/life_time.cpp @@ -8,7 +8,7 @@ using namespace BehaviorTestsDefinitions; namespace { -const std::vector> orders = { +const std::vector> orders = { // 0 - plugin // 1 - executable_network // 2 - infer_request @@ -17,23 +17,23 @@ const std::vector> orders = { {1, 0, 2}, {1, 2, 0}, {2, 0, 1}, - {2, 1, 0} -}; - -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, HoldersTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(orders)), - HoldersTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, HoldersTestImportNetwork, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), - ::testing::ValuesIn(orders)), - HoldersTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, HoldersTestOnImportedNetwork, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), - HoldersTestOnImportedNetwork::getTestCaseName); + {2, 1, 0}}; + +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + HoldersTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(orders)), + HoldersTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + HoldersTestImportNetwork, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), + ::testing::ValuesIn(orders)), + HoldersTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + HoldersTestOnImportedNetwork, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), + HoldersTestOnImportedNetwork::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/preprocessing.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/preprocessing.cpp index adc17a6d4035d8..ea8d9a2e62217e 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/preprocessing.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/preprocessing.cpp @@ -10,33 +10,30 @@ using namespace BehaviorTestsDefinitions; namespace { -const std::vector inputPrecisions = { - InferenceEngine::Precision::U8, - InferenceEngine::Precision::FP32 -}; - -const std::vector> configs = { - {} -}; - -INSTANTIATE_TEST_SUITE_P(smoke_Behavior_PreprocessingPrecisionConvertTestsViaSetInput, PreprocessingPrecisionConvertTest, - ::testing::Combine( - ::testing::ValuesIn(inputPrecisions), - ::testing::Values(4), // Number of input tensor channels - ::testing::Values(true), // Use SetInput - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - PreprocessingPrecisionConvertTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_Behavior_PreprocessingPrecisionConvertTestsViaGetBlob, PreprocessingPrecisionConvertTest, - ::testing::Combine( - ::testing::ValuesIn(inputPrecisions), - ::testing::Values(4), // Number of input tensor channels (blob_copy only supports 4d and 5d tensors) - ::testing::Values(false), // use GetBlob - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - PreprocessingPrecisionConvertTest::getTestCaseName); +const std::vector inputPrecisions = {InferenceEngine::Precision::U8, + InferenceEngine::Precision::FP32}; + +const std::vector> configs = {{}}; + +INSTANTIATE_TEST_SUITE_P(smoke_Behavior_PreprocessingPrecisionConvertTestsViaSetInput, + PreprocessingPrecisionConvertTest, + ::testing::Combine(::testing::ValuesIn(inputPrecisions), + ::testing::Values(4), // Number of input tensor channels + ::testing::Values(true), // Use SetInput + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + PreprocessingPrecisionConvertTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_Behavior_PreprocessingPrecisionConvertTestsViaGetBlob, + PreprocessingPrecisionConvertTest, + ::testing::Combine(::testing::ValuesIn(inputPrecisions), + ::testing::Values(4), // Number of input tensor channels (blob_copy only + // supports 4d and 5d tensors) + ::testing::Values(false), // use GetBlob + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + PreprocessingPrecisionConvertTest::getTestCaseName); } // namespace -#endif // ENABLE_GAPI_PREPROCESSING +#endif // ENABLE_GAPI_PREPROCESSING diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/set_preprocess.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/set_preprocess.cpp index 42f7e9fb7d929e..e570c6fc0f6d12 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/set_preprocess.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/set_preprocess.cpp @@ -8,49 +8,40 @@ using namespace BehaviorTestsDefinitions; namespace { -const std::vector netPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16 -}; +const std::vector netPrecisions = {InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16}; -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; const std::vector> multiConfigs = { - {{ InferenceEngine::MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES, - ov::test::utils::DEVICE_TEMPLATE }} -}; + {{InferenceEngine::MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES, ov::test::utils::DEVICE_TEMPLATE}}}; const std::vector> heteroConfigs = { - {{ "TARGET_FALLBACK", ov::test::utils::DEVICE_TEMPLATE }} -}; + {{"TARGET_FALLBACK", ov::test::utils::DEVICE_TEMPLATE}}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestPreprocessTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestPreprocessTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestPreprocessTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestPreprocessTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, InferRequestPreprocessTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_MULTI), - ::testing::ValuesIn(multiConfigs)), - InferRequestPreprocessTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, + InferRequestPreprocessTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_MULTI), + ::testing::ValuesIn(multiConfigs)), + InferRequestPreprocessTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, InferRequestPreprocessTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(heteroConfigs)), - InferRequestPreprocessTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + InferRequestPreprocessTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(heteroConfigs)), + InferRequestPreprocessTest::getTestCaseName); -const std::vector ioPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::U8 -}; +const std::vector ioPrecisions = {InferenceEngine::Precision::FP32, + InferenceEngine::Precision::U8}; const std::vector netLayouts = { InferenceEngine::Layout::NCHW, }; @@ -60,18 +51,18 @@ const std::vector ioLayouts = { InferenceEngine::Layout::NHWC, }; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestPreprocessConversionTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::ValuesIn(ioPrecisions), - ::testing::ValuesIn(ioPrecisions), - ::testing::ValuesIn(netLayouts), - ::testing::ValuesIn(ioLayouts), - ::testing::ValuesIn(ioLayouts), - ::testing::Bool(), - ::testing::Bool(), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestPreprocessConversionTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestPreprocessConversionTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(netLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::Bool(), + ::testing::Bool(), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestPreprocessConversionTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/synthetic.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/synthetic.cpp index c3e82400793055..6a152b6bdcd615 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/synthetic.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/synthetic.cpp @@ -14,71 +14,97 @@ using namespace HeteroTests; // this tests load plugin by library name: this is not available during static linkage #ifndef OPENVINO_STATIC_LIBRARY -INSTANTIATE_TEST_SUITE_P(smoke_manyTargetInputs, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions( - [] {return ngraph::builder::subgraph::makeConvPool2Relu2();}, {"Conv_1"}, true))), - HeteroSyntheticTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_SingleMajorNode, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::_singleMajorNodeFunctions)), - HeteroSyntheticTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(nightly_RandomMajorNodes, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::_randomMajorNodeFunctions)), - HeteroSyntheticTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + smoke_manyTargetInputs, + HeteroSyntheticTest, + ::testing::Combine(::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions( + [] { + return ngraph::builder::subgraph::makeConvPool2Relu2(); + }, + {"Conv_1"}, + true))), + HeteroSyntheticTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P( + smoke_SingleMajorNode, + HeteroSyntheticTest, + ::testing::Combine(::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::_singleMajorNodeFunctions)), + HeteroSyntheticTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P( + nightly_RandomMajorNodes, + HeteroSyntheticTest, + ::testing::Combine(::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::_randomMajorNodeFunctions)), + HeteroSyntheticTest::getTestCaseName); static std::vector()>> dynamicBuilders = { - [] {return ngraph::builder::subgraph::makeConvPoolReluNonZero();}, + [] { + return ngraph::builder::subgraph::makeConvPoolReluNonZero(); + }, }; -INSTANTIATE_TEST_SUITE_P(smoke_NonZeroMajorNode_dynamic, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions( - dynamicBuilders.front(), {"nonZero_1"}))), - HeteroSyntheticTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_NonZeroMajorNode_dynamic_batch, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions( - dynamicBuilders.front(), {"nonZero_1"}, true))), - HeteroSyntheticTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_SingleMajorNode_dynamic, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::singleMajorNodeFunctions( - dynamicBuilders))), - HeteroSyntheticTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(nightly_RandomMajorNodes_dynamic, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::randomMajorNodeFunctions( - dynamicBuilders))), - HeteroSyntheticTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_SingleMajorNode_dynamic_batch, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::singleMajorNodeFunctions( - dynamicBuilders, true))), - HeteroSyntheticTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(nightly_RandomMajorNodes_dynamic_batch, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::randomMajorNodeFunctions( - dynamicBuilders, true))), - HeteroSyntheticTest::getTestCaseName); - -#endif // !OPENVINO_STATIC_LIBRARY +INSTANTIATE_TEST_SUITE_P( + smoke_NonZeroMajorNode_dynamic, + HeteroSyntheticTest, + ::testing::Combine( + ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions(dynamicBuilders.front(), + {"nonZero_1"}))), + HeteroSyntheticTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P( + smoke_NonZeroMajorNode_dynamic_batch, + HeteroSyntheticTest, + ::testing::Combine( + ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn( + HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions(dynamicBuilders.front(), {"nonZero_1"}, true))), + HeteroSyntheticTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P( + smoke_SingleMajorNode_dynamic, + HeteroSyntheticTest, + ::testing::Combine( + ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::singleMajorNodeFunctions(dynamicBuilders))), + HeteroSyntheticTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P( + nightly_RandomMajorNodes_dynamic, + HeteroSyntheticTest, + ::testing::Combine( + ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::randomMajorNodeFunctions(dynamicBuilders))), + HeteroSyntheticTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P( + smoke_SingleMajorNode_dynamic_batch, + HeteroSyntheticTest, + ::testing::Combine(::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::singleMajorNodeFunctions(dynamicBuilders, + true))), + HeteroSyntheticTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P( + nightly_RandomMajorNodes_dynamic_batch, + HeteroSyntheticTest, + ::testing::Combine(::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::randomMajorNodeFunctions(dynamicBuilders, + true))), + HeteroSyntheticTest::getTestCaseName); + +#endif // !OPENVINO_STATIC_LIBRARY } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/version.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/version.cpp index 173c63f3d790ec..7fa154c1b86b1a 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/version.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/version.cpp @@ -8,12 +8,11 @@ using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, VersionTest, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - VersionTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + VersionTest, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + VersionTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp index d6528bd9f73f78..9aff6a6bcdfb32 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "single_layer_tests/convolution.hpp" + #include -#include "single_layer_tests/convolution.hpp" #include "common_test_utils/test_constants.hpp" using namespace LayerTestsDefinitions; @@ -13,128 +14,108 @@ namespace { // ! [test_convolution:declare_parameters] const std::vector netPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16, + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16, }; /* ============= 2D Convolution ============= */ -const std::vector> kernels = {{3, 3}, - {3, 5}}; -const std::vector> strides = {{1, 1}, - {1, 3}}; -const std::vector> padBegins = {{0, 0}, - {0, 3}}; -const std::vector> padEnds = {{0, 0}, - {0, 3}}; -const std::vector> dilations = {{1, 1}, - {3, 1}}; +const std::vector> kernels = {{3, 3}, {3, 5}}; +const std::vector> strides = {{1, 1}, {1, 3}}; +const std::vector> padBegins = {{0, 0}, {0, 3}}; +const std::vector> padEnds = {{0, 0}, {0, 3}}; +const std::vector> dilations = {{1, 1}, {3, 1}}; const std::vector numOutChannels = {1, 5}; -const std::vector padTypes = { - ngraph::op::PadType::EXPLICIT, - ngraph::op::PadType::VALID -}; - -const auto conv2DParams_ExplicitPadding = ::testing::Combine( - ::testing::ValuesIn(kernels), - ::testing::ValuesIn(strides), - ::testing::ValuesIn(padBegins), - ::testing::ValuesIn(padEnds), - ::testing::ValuesIn(dilations), - ::testing::ValuesIn(numOutChannels), - ::testing::Values(ngraph::op::PadType::EXPLICIT) -); +const std::vector padTypes = {ngraph::op::PadType::EXPLICIT, ngraph::op::PadType::VALID}; + +const auto conv2DParams_ExplicitPadding = ::testing::Combine(::testing::ValuesIn(kernels), + ::testing::ValuesIn(strides), + ::testing::ValuesIn(padBegins), + ::testing::ValuesIn(padEnds), + ::testing::ValuesIn(dilations), + ::testing::ValuesIn(numOutChannels), + ::testing::Values(ngraph::op::PadType::EXPLICIT)); // ! [test_convolution:declare_parameters] -const auto conv2DParams_AutoPadValid = ::testing::Combine( - ::testing::ValuesIn(kernels), - ::testing::ValuesIn(strides), - ::testing::Values(std::vector({0, 0})), - ::testing::Values(std::vector({0, 0})), - ::testing::ValuesIn(dilations), - ::testing::ValuesIn(numOutChannels), - ::testing::Values(ngraph::op::PadType::VALID) -); +const auto conv2DParams_AutoPadValid = ::testing::Combine(::testing::ValuesIn(kernels), + ::testing::ValuesIn(strides), + ::testing::Values(std::vector({0, 0})), + ::testing::Values(std::vector({0, 0})), + ::testing::ValuesIn(dilations), + ::testing::ValuesIn(numOutChannels), + ::testing::Values(ngraph::op::PadType::VALID)); // ! [test_convolution:instantiate] -INSTANTIATE_TEST_SUITE_P(Convolution2D_ExplicitPadding, ConvolutionLayerTest, - ::testing::Combine( - conv2DParams_ExplicitPadding, - ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({1, 3, 30, 30})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), +INSTANTIATE_TEST_SUITE_P(Convolution2D_ExplicitPadding, + ConvolutionLayerTest, + ::testing::Combine(conv2DParams_ExplicitPadding, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 30, 30})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), ConvolutionLayerTest::getTestCaseName); // ! [test_convolution:instantiate] -INSTANTIATE_TEST_SUITE_P(Convolution2D_AutoPadValid, ConvolutionLayerTest, - ::testing::Combine( - conv2DParams_AutoPadValid, - ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({1, 3, 30, 30})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), +INSTANTIATE_TEST_SUITE_P(Convolution2D_AutoPadValid, + ConvolutionLayerTest, + ::testing::Combine(conv2DParams_AutoPadValid, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 30, 30})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), ConvolutionLayerTest::getTestCaseName); /* ============= 3D Convolution ============= */ -const std::vector> kernels3d = {{3, 3, 3}, - {3, 5, 3}}; -const std::vector> paddings3d = {{0, 0, 0}, - {0, 2, 0}}; - -const std::vector> strides3d = {{1, 1, 1}, - {1, 2, 1}}; -const std::vector> dilations3d = {{1, 1, 1}, - {1, 2, 1}}; - -const auto conv3DParams_ExplicitPadding = ::testing::Combine( - ::testing::ValuesIn(kernels3d), - ::testing::ValuesIn(strides3d), - ::testing::ValuesIn(paddings3d), - ::testing::ValuesIn(paddings3d), - ::testing::ValuesIn(dilations3d), - ::testing::Values(5), - ::testing::Values(ngraph::op::PadType::EXPLICIT) -); -const auto conv3DParams_AutoPadValid = ::testing::Combine( - ::testing::ValuesIn(kernels3d), - ::testing::ValuesIn(strides3d), - ::testing::Values(std::vector({0, 0, 0})), - ::testing::Values(std::vector({0, 0, 0})), - ::testing::ValuesIn(dilations3d), - ::testing::Values(5), - ::testing::Values(ngraph::op::PadType::VALID) -); - -INSTANTIATE_TEST_SUITE_P(smoke_Convolution3D_ExplicitPadding, ConvolutionLayerTest, - ::testing::Combine( - conv3DParams_ExplicitPadding, - ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({1, 3, 10, 10, 10})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), +const std::vector> kernels3d = {{3, 3, 3}, {3, 5, 3}}; +const std::vector> paddings3d = {{0, 0, 0}, {0, 2, 0}}; + +const std::vector> strides3d = {{1, 1, 1}, {1, 2, 1}}; +const std::vector> dilations3d = {{1, 1, 1}, {1, 2, 1}}; + +const auto conv3DParams_ExplicitPadding = ::testing::Combine(::testing::ValuesIn(kernels3d), + ::testing::ValuesIn(strides3d), + ::testing::ValuesIn(paddings3d), + ::testing::ValuesIn(paddings3d), + ::testing::ValuesIn(dilations3d), + ::testing::Values(5), + ::testing::Values(ngraph::op::PadType::EXPLICIT)); +const auto conv3DParams_AutoPadValid = ::testing::Combine(::testing::ValuesIn(kernels3d), + ::testing::ValuesIn(strides3d), + ::testing::Values(std::vector({0, 0, 0})), + ::testing::Values(std::vector({0, 0, 0})), + ::testing::ValuesIn(dilations3d), + ::testing::Values(5), + ::testing::Values(ngraph::op::PadType::VALID)); + +INSTANTIATE_TEST_SUITE_P(smoke_Convolution3D_ExplicitPadding, + ConvolutionLayerTest, + ::testing::Combine(conv3DParams_ExplicitPadding, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 10, 10, 10})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), ConvolutionLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(nightly_Convolution3D_AutoPadValid, ConvolutionLayerTest, - ::testing::Combine( - conv3DParams_AutoPadValid, - ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({1, 3, 10, 10, 10})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), +INSTANTIATE_TEST_SUITE_P(nightly_Convolution3D_AutoPadValid, + ConvolutionLayerTest, + ::testing::Combine(conv3DParams_AutoPadValid, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 10, 10, 10})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), ConvolutionLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp index d476ff03b974bc..1c2bfa338e78ed 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp @@ -2,130 +2,130 @@ // SPDX-License-Identifier: Apache-2.0 // -#include #include "single_layer_tests/eltwise.hpp" + +#include + #include "common_test_utils/test_constants.hpp" using namespace ov::test::subgraph; namespace { std::vector> inShapesStatic = { - {{2}}, - {{2, 200}}, - {{10, 200}}, - {{1, 10, 100}}, - {{4, 4, 16}}, - {{1, 1, 1, 3}}, - {{2, 17, 5, 4}, {1, 17, 1, 1}}, - {{2, 17, 5, 1}, {1, 17, 1, 4}}, - {{1, 2, 4}}, - {{1, 4, 4}}, - {{1, 4, 4, 1}}, - {{1, 1, 1, 1, 1, 1, 3}}, - {{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}, + {{2}}, + {{2, 200}}, + {{10, 200}}, + {{1, 10, 100}}, + {{4, 4, 16}}, + {{1, 1, 1, 3}}, + {{2, 17, 5, 4}, {1, 17, 1, 1}}, + {{2, 17, 5, 1}, {1, 17, 1, 4}}, + {{1, 2, 4}}, + {{1, 4, 4}}, + {{1, 4, 4, 1}}, + {{1, 1, 1, 1, 1, 1, 3}}, + {{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}, }; std::vector> inShapesDynamic = { - {{{ngraph::Dimension(1, 10), 200}, {{2, 200}, {1, 200}}}, - {{ngraph::Dimension(1, 10), 200}, {{2, 200}, {5, 200}}}}, + {{{ngraph::Dimension(1, 10), 200}, {{2, 200}, {1, 200}}}, {{ngraph::Dimension(1, 10), 200}, {{2, 200}, {5, 200}}}}, }; std::vector netPrecisions = { - ov::element::f32, - ov::element::f16, - ov::element::i32, + ov::element::f32, + ov::element::f16, + ov::element::i32, }; std::vector secondaryInputTypes = { - ngraph::helpers::InputLayerType::CONSTANT, - ngraph::helpers::InputLayerType::PARAMETER, + ngraph::helpers::InputLayerType::CONSTANT, + ngraph::helpers::InputLayerType::PARAMETER, }; std::vector secondaryInputTypesDynamic = { - ngraph::helpers::InputLayerType::PARAMETER, + ngraph::helpers::InputLayerType::PARAMETER, }; std::vector opTypes = { - ov::test::utils::OpType::SCALAR, - ov::test::utils::OpType::VECTOR, + ov::test::utils::OpType::SCALAR, + ov::test::utils::OpType::VECTOR, }; std::vector opTypesDynamic = { - ov::test::utils::OpType::VECTOR, + ov::test::utils::OpType::VECTOR, }; -std::vector eltwiseOpTypes = { - ngraph::helpers::EltwiseTypes::ADD, - ngraph::helpers::EltwiseTypes::MULTIPLY, - ngraph::helpers::EltwiseTypes::SUBTRACT, - ngraph::helpers::EltwiseTypes::DIVIDE, - ngraph::helpers::EltwiseTypes::FLOOR_MOD, - ngraph::helpers::EltwiseTypes::SQUARED_DIFF, - ngraph::helpers::EltwiseTypes::POWER, - ngraph::helpers::EltwiseTypes::MOD -}; +std::vector eltwiseOpTypes = {ngraph::helpers::EltwiseTypes::ADD, + ngraph::helpers::EltwiseTypes::MULTIPLY, + ngraph::helpers::EltwiseTypes::SUBTRACT, + ngraph::helpers::EltwiseTypes::DIVIDE, + ngraph::helpers::EltwiseTypes::FLOOR_MOD, + ngraph::helpers::EltwiseTypes::SQUARED_DIFF, + ngraph::helpers::EltwiseTypes::POWER, + ngraph::helpers::EltwiseTypes::MOD}; std::vector eltwiseOpTypesDynamic = { - ngraph::helpers::EltwiseTypes::ADD, - ngraph::helpers::EltwiseTypes::MULTIPLY, - ngraph::helpers::EltwiseTypes::SUBTRACT, + ngraph::helpers::EltwiseTypes::ADD, + ngraph::helpers::EltwiseTypes::MULTIPLY, + ngraph::helpers::EltwiseTypes::SUBTRACT, }; ov::test::Config additional_config = {}; -const auto multiply_params = ::testing::Combine( - ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(inShapesStatic)), - ::testing::ValuesIn(eltwiseOpTypes), - ::testing::ValuesIn(secondaryInputTypes), - ::testing::ValuesIn(opTypes), - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(additional_config)); - -const auto multiply_params_dynamic = ::testing::Combine( - ::testing::ValuesIn(inShapesDynamic), - ::testing::ValuesIn(eltwiseOpTypesDynamic), - ::testing::ValuesIn(secondaryInputTypesDynamic), - ::testing::ValuesIn(opTypesDynamic), - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(additional_config)); - -INSTANTIATE_TEST_SUITE_P(smoke_CompareWithRefs_static, EltwiseLayerTest, multiply_params, EltwiseLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_CompareWithRefs_dynamic, EltwiseLayerTest, multiply_params_dynamic, EltwiseLayerTest::getTestCaseName); - +const auto multiply_params = + ::testing::Combine(::testing::ValuesIn(ov::test::static_shapes_to_test_representation(inShapesStatic)), + ::testing::ValuesIn(eltwiseOpTypes), + ::testing::ValuesIn(secondaryInputTypes), + ::testing::ValuesIn(opTypes), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(additional_config)); + +const auto multiply_params_dynamic = ::testing::Combine(::testing::ValuesIn(inShapesDynamic), + ::testing::ValuesIn(eltwiseOpTypesDynamic), + ::testing::ValuesIn(secondaryInputTypesDynamic), + ::testing::ValuesIn(opTypesDynamic), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(additional_config)); + +INSTANTIATE_TEST_SUITE_P(smoke_CompareWithRefs_static, + EltwiseLayerTest, + multiply_params, + EltwiseLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_CompareWithRefs_dynamic, + EltwiseLayerTest, + multiply_params_dynamic, + EltwiseLayerTest::getTestCaseName); std::vector> inShapesSingleThread = { - {{1, 2, 3, 4}}, - {{2, 2, 2, 2}}, - {{2, 1, 2, 1, 2, 2}}, + {{1, 2, 3, 4}}, + {{2, 2, 2, 2}}, + {{2, 1, 2, 1, 2, 2}}, }; std::vector eltwiseOpTypesSingleThread = { - ngraph::helpers::EltwiseTypes::ADD, - ngraph::helpers::EltwiseTypes::POWER, + ngraph::helpers::EltwiseTypes::ADD, + ngraph::helpers::EltwiseTypes::POWER, }; -ov::AnyMap additional_config_single_thread = { - {"CPU_THREADS_NUM", "1"} -}; +ov::AnyMap additional_config_single_thread = {{"CPU_THREADS_NUM", "1"}}; -const auto single_thread_params = ::testing::Combine( - ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(inShapesSingleThread)), - ::testing::ValuesIn(eltwiseOpTypesSingleThread), - ::testing::ValuesIn(secondaryInputTypes), - ::testing::ValuesIn(opTypes), - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(additional_config_single_thread)); +const auto single_thread_params = + ::testing::Combine(::testing::ValuesIn(ov::test::static_shapes_to_test_representation(inShapesSingleThread)), + ::testing::ValuesIn(eltwiseOpTypesSingleThread), + ::testing::ValuesIn(secondaryInputTypes), + ::testing::ValuesIn(opTypes), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(additional_config_single_thread)); INSTANTIATE_TEST_SUITE_P(smoke_SingleThread, EltwiseLayerTest, single_thread_params, EltwiseLayerTest::getTestCaseName); - -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp index 7e2fff0a97fae2..576490fa79d8de 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp @@ -15,45 +15,45 @@ const std::vector netPrecisions = { InferenceEngine::Precision::FP32, }; -INSTANTIATE_TEST_SUITE_P( - smoke_ReshapeCheckDynBatch, ReshapeLayerTest, - ::testing::Combine( - ::testing::Values(true), ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({30, 30, 30, 30})), - ::testing::Values(std::vector({30, 30, 30, 30})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(std::map({}))), - ReshapeLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_ReshapeCheck, ReshapeLayerTest, - ::testing::Combine( - ::testing::Values(true), ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({10, 10, 10, 10})), - ::testing::Values(std::vector({10, 0, 100})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(std::map({}))), - ReshapeLayerTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P( - smoke_ReshapeCheckNegative, ReshapeLayerTest, - ::testing::Combine( - ::testing::Values(true), ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({10, 10, 10, 10})), - ::testing::Values(std::vector({10, -1, 100})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(std::map({}))), - ReshapeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ReshapeCheckDynBatch, + ReshapeLayerTest, + ::testing::Combine(::testing::Values(true), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(std::map({}))), + ReshapeLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_ReshapeCheck, + ReshapeLayerTest, + ::testing::Combine(::testing::Values(true), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({10, 10, 10, 10})), + ::testing::Values(std::vector({10, 0, 100})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(std::map({}))), + ReshapeLayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_ReshapeCheckNegative, + ReshapeLayerTest, + ::testing::Combine(::testing::Values(true), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({10, 10, 10, 10})), + ::testing::Values(std::vector({10, -1, 100})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(std::map({}))), + ReshapeLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp index bc97e14db8e0fd..83c03b7a881e3b 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "single_layer_tests/softmax.hpp" + #include -#include "single_layer_tests/softmax.hpp" #include "common_test_utils/test_constants.hpp" using namespace ov::test::subgraph; @@ -12,164 +13,140 @@ using namespace ov::test::subgraph; namespace { const std::vector netPrecisions = { - ov::element::f32, - ov::element::f16, + ov::element::f32, + ov::element::f16, }; const std::vector inputStaticShape2D = { - {1, 100}, - {100, 1}, - {10, 10}, + {1, 100}, + {100, 1}, + {10, 10}, }; const std::vector inputDynamicShape2D = { - {{ngraph::Dimension::dynamic(), 10}, {{1, 10}, {2, 10}, {10, 10}}}, - {{ngraph::Dimension(1, 10), 10}, {{1, 10}, {2, 10}, {10, 10}}}, - {{10, ngraph::Dimension::dynamic()}, {{10, 1}, {10, 5}, {10, 10}}}, - {{ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic()}, {{1, 10}, {2, 10}, {10, 10}}} -}; - -const std::vector axis2D = { - -2, -1, 0, 1 -}; - -const auto params2D_static = testing::Combine( - testing::ValuesIn(netPrecisions), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape2D)), - testing::ValuesIn(axis2D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); - -const auto params2D_dynamic = testing::Combine( - testing::ValuesIn(netPrecisions), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(inputDynamicShape2D), - testing::ValuesIn(axis2D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); - -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax2D_static, - SoftMax8LayerTest, - params2D_static, - SoftMax8LayerTest::getTestCaseName -); - -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax2D_dynamic, - SoftMax8LayerTest, - params2D_dynamic, - SoftMax8LayerTest::getTestCaseName -); + {{ngraph::Dimension::dynamic(), 10}, {{1, 10}, {2, 10}, {10, 10}}}, + {{ngraph::Dimension(1, 10), 10}, {{1, 10}, {2, 10}, {10, 10}}}, + {{10, ngraph::Dimension::dynamic()}, {{10, 1}, {10, 5}, {10, 10}}}, + {{ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic()}, {{1, 10}, {2, 10}, {10, 10}}}}; + +const std::vector axis2D = {-2, -1, 0, 1}; + +const auto params2D_static = + testing::Combine(testing::ValuesIn(netPrecisions), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape2D)), + testing::ValuesIn(axis2D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); + +const auto params2D_dynamic = testing::Combine(testing::ValuesIn(netPrecisions), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(inputDynamicShape2D), + testing::ValuesIn(axis2D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); + +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax2D_static, + SoftMax8LayerTest, + params2D_static, + SoftMax8LayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax2D_dynamic, + SoftMax8LayerTest, + params2D_dynamic, + SoftMax8LayerTest::getTestCaseName); const std::vector inputStaticShape4D = { - {1, 100, 1, 1}, - {50, 100, 4, 1}, - {2, 100, 10, 1}, + {1, 100, 1, 1}, + {50, 100, 4, 1}, + {2, 100, 10, 1}, }; const std::vector inputDynamicShape4D = { - {{ngraph::Dimension::dynamic(), 100, ngraph::Dimension(1, 10), 1}, {{1, 100, 1, 1}, {100, 100, 5, 1}}}, - {{ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic()}, - {{1, 100, 1, 1}, {50, 100, 4, 1}, {2, 100, 10, 1}}}, + {{ngraph::Dimension::dynamic(), 100, ngraph::Dimension(1, 10), 1}, {{1, 100, 1, 1}, {100, 100, 5, 1}}}, + {{ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic()}, + {{1, 100, 1, 1}, {50, 100, 4, 1}, {2, 100, 10, 1}}}, }; const std::vector netPrecisions4D = { - ov::element::f32, + ov::element::f32, }; const std::vector axis4D = {0, 1, 2, 3, -1, -2, -3, -4}; -const auto params4Dstatic = testing::Combine( - testing::ValuesIn(netPrecisions4D), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape4D)), - testing::ValuesIn(axis4D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); - -const auto params4Ddynamic = testing::Combine( - testing::ValuesIn(netPrecisions4D), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(inputDynamicShape4D), - testing::ValuesIn(axis4D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); - -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax4D_static, - SoftMax8LayerTest, - params4Dstatic, - SoftMax8LayerTest::getTestCaseName -); - -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax4D_dynamic, - SoftMax8LayerTest, - params4Ddynamic, - SoftMax8LayerTest::getTestCaseName -); - +const auto params4Dstatic = + testing::Combine(testing::ValuesIn(netPrecisions4D), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape4D)), + testing::ValuesIn(axis4D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); + +const auto params4Ddynamic = testing::Combine(testing::ValuesIn(netPrecisions4D), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(inputDynamicShape4D), + testing::ValuesIn(axis4D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); + +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax4D_static, SoftMax8LayerTest, params4Dstatic, SoftMax8LayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax4D_dynamic, + SoftMax8LayerTest, + params4Ddynamic, + SoftMax8LayerTest::getTestCaseName); const std::vector inputStaticShape5D = { - {1, 100, 1, 1, 1}, - {50, 100, 4, 1, 1}, - {2, 100, 10, 1, 1}, + {1, 100, 1, 1, 1}, + {50, 100, 4, 1, 1}, + {2, 100, 10, 1, 1}, }; const std::vector inputDynamicShape5D = { - {{ngraph::Dimension::dynamic(), 100, ngraph::Dimension(1, 10), 1, 1}, {{1, 100, 1, 1, 1}, {100, 100, 5, 1, 1}}}, - {{ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic()}, - {{1, 100, 1, 1, 1}, {50, 100, 4, 1, 1}, {2, 100, 10, 1, 1}}}, + {{ngraph::Dimension::dynamic(), 100, ngraph::Dimension(1, 10), 1, 1}, {{1, 100, 1, 1, 1}, {100, 100, 5, 1, 1}}}, + {{ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic()}, + {{1, 100, 1, 1, 1}, {50, 100, 4, 1, 1}, {2, 100, 10, 1, 1}}}, }; const std::vector netPrecisions5D = { - ov::element::f32, + ov::element::f32, }; const std::vector axis5D = {0, 1, 2, 3, 4, -1, -2, -3, -4, -5}; -const auto params5Dstatic = testing::Combine( - testing::ValuesIn(netPrecisions5D), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape5D)), - testing::ValuesIn(axis5D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); - -const auto params5Ddynamic = testing::Combine( - testing::ValuesIn(netPrecisions5D), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(inputDynamicShape5D), - testing::ValuesIn(axis5D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); - -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax5D_static, - SoftMax8LayerTest, - params5Dstatic, - SoftMax8LayerTest::getTestCaseName -); - -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax5D_dynamic, - SoftMax8LayerTest, - params5Ddynamic, - SoftMax8LayerTest::getTestCaseName -); +const auto params5Dstatic = + testing::Combine(testing::ValuesIn(netPrecisions5D), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape5D)), + testing::ValuesIn(axis5D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); + +const auto params5Ddynamic = testing::Combine(testing::ValuesIn(netPrecisions5D), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(inputDynamicShape5D), + testing::ValuesIn(axis5D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); + +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax5D_static, SoftMax8LayerTest, params5Dstatic, SoftMax8LayerTest::getTestCaseName); + +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax5D_dynamic, + SoftMax8LayerTest, + params5Ddynamic, + SoftMax8LayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/split.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/split.cpp index 337138773ce74d..064f1b5150274f 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/split.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/split.cpp @@ -2,27 +2,28 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "single_layer_tests/split.hpp" + #include -#include "single_layer_tests/split.hpp" #include "common_test_utils/test_constants.hpp" using namespace LayerTestsDefinitions; namespace { -INSTANTIATE_TEST_SUITE_P(smoke_NumSplitsCheck, SplitLayerTest, - ::testing::Combine( - ::testing::Values(1, 2, 3, 5, 6, 10, 30), - ::testing::Values(0, 1, 2, 3), - ::testing::Values(InferenceEngine::Precision::FP32), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({30, 30, 30, 30})), - ::testing::Values(std::vector({})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), - SplitLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NumSplitsCheck, + SplitLayerTest, + ::testing::Combine(::testing::Values(1, 2, 3, 5, 6, 10, 30), + ::testing::Values(0, 1, 2, 3), + ::testing::Values(InferenceEngine::Precision::FP32), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), + SplitLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp b/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp index df225ad0ca1410..3086055af575ad 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp @@ -2,22 +2,22 @@ // SPDX-License-Identifier: Apache-2.0 // #include "base_reference_cnn_test.hpp" -#include "functional_test_utils/ov_plugin_cache.hpp" -#include "shared_test_classes/base/layer_test_utils.hpp" #include +#include "functional_test_utils/ov_plugin_cache.hpp" +#include "ie_ngraph_utils.hpp" #include "openvino/core/type/element_type.hpp" #include "openvino/runtime/allocator.hpp" #include "openvino/runtime/tensor.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" #include "transformations/utils/utils.hpp" -#include "ie_ngraph_utils.hpp" using namespace ov; namespace reference_tests { -ReferenceCNNTest::ReferenceCNNTest(): targetDevice("TEMPLATE") { +ReferenceCNNTest::ReferenceCNNTest() : targetDevice("TEMPLATE") { core = test::utils::PluginCache::get().core(targetDevice); legacy_core = PluginCache::get().ie(targetDevice); } @@ -43,22 +43,25 @@ void ReferenceCNNTest::LoadNetworkLegacy() { auto inputInfo = legacy_network.getInputsInfo(); auto outputInfo = legacy_network.getOutputsInfo(); for (const auto& param : function->get_parameters()) { - inputInfo[param->get_friendly_name()]->setPrecision(InferenceEngine::details::convertPrecision(param->get_element_type())); + inputInfo[param->get_friendly_name()]->setPrecision( + InferenceEngine::details::convertPrecision(param->get_element_type())); } for (const auto& result : function->get_results()) { outputInfo[ov::op::util::create_ie_output_name(result->input_value(0))]->setPrecision( - InferenceEngine::details::convertPrecision(result->get_element_type())); + InferenceEngine::details::convertPrecision(result->get_element_type())); } legacy_exec_network = legacy_core->LoadNetwork(legacy_network, targetDevice); } void ReferenceCNNTest::FillInputs() { const auto& params = function->get_parameters(); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(0, 255); for (const auto& param : params) { auto elem_count = shape_size(param->get_output_tensor(0).get_shape()); - InferenceEngine::TensorDesc d(InferenceEngine::Precision::FP32, param->get_output_tensor(0).get_shape(), InferenceEngine::Layout::NCHW); + InferenceEngine::TensorDesc d(InferenceEngine::Precision::FP32, + param->get_output_tensor(0).get_shape(), + InferenceEngine::Layout::NCHW); auto blob = make_blob_with_precision(d); blob->allocate(); @@ -98,7 +101,6 @@ void ReferenceCNNTest::InferLegacy() { legacy_infer_request.Infer(); } - void ReferenceCNNTest::Validate() { for (const auto& result : function->get_results()) { auto name = ov::op::util::create_ie_output_name(result->input_value(0)); diff --git a/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp b/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp index 0b58dc517d807d..ea5c3465dbb31b 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp @@ -20,7 +20,7 @@ using namespace reference_tests; namespace { struct RefPreprocessParams { - RefPreprocessParams(const std::string& val): name(val) {} + RefPreprocessParams(const std::string& val) : name(val) {} std::function()> function; std::vector inputs; std::vector expected; @@ -52,11 +52,10 @@ class ReferencePreprocessTest : public testing::TestWithParam create_simple_function(element::Type type, const PartialShape& shape) { auto data1 = std::make_shared(type, shape); @@ -95,11 +94,16 @@ static RefPreprocessParams simple_mean_scale() { res.function = []() { auto f = create_simple_function(element::f32, Shape{1, 3, 2, 2}); auto p = PrePostProcessor(f); - p.input().preprocess().mean(1.f).scale(2.f); p.build(); + p.input().preprocess().mean(1.f).scale(2.f); + p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1., 3., 5., 7., 9., 11., 13., 15., 17., 19., 21., 23.}); - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11.}); + res.inputs.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1., 3., 5., 7., 9., 11., 13., 15., 17., 19., 21., 23.}); + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11.}); return res; } @@ -108,12 +112,17 @@ static RefPreprocessParams scale_then_mean() { res.function = []() { auto f = create_simple_function(element::f32, Shape{1, 3, 2, 2}); auto p = PrePostProcessor(f); - p.input().preprocess().scale(2.0f).mean(2.0f); p.build(); + p.input().preprocess().scale(2.0f).mean(2.0f); + p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 100., 200.}); - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{-1., 0, 1., 2., 3., 4., 5., 6., 7., 8., 48., 98.}); + res.inputs.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 100., 200.}); + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{-1., 0, 1., 2., 3., 4., 5., 6., 7., 8., 48., 98.}); return res; } @@ -122,13 +131,13 @@ static RefPreprocessParams convert_only() { res.function = []() { auto f = create_simple_function(element::f32, Shape{1, 1, 2, 2}); auto p = PrePostProcessor(f); + p.input().tensor().set_element_type(element::i16); p.input() - .tensor().set_element_type(element::i16); - p.input().preprocess() - .convert_element_type(element::f32) - .scale(3.f) - .convert_element_type(element::u8) - .convert_element_type(element::f32); + .preprocess() + .convert_element_type(element::f32) + .scale(3.f) + .convert_element_type(element::u8) + .convert_element_type(element::f32); p.build(); return f; }; @@ -142,19 +151,17 @@ static RefPreprocessParams convert_element_type_and_scale() { res.function = []() { auto f = create_simple_function(element::u8, Shape{1, 3, 2, 2}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_element_type(element::i16); - p.input().preprocess() - .convert_element_type(element::f32) - .scale(2.f) - .convert_element_type(element::u8); + p.input().tensor().set_element_type(element::i16); + p.input().preprocess().convert_element_type(element::f32).scale(2.f).convert_element_type(element::u8); p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 3, 2, 2}, element::i16, + res.inputs.emplace_back(Shape{1, 3, 2, 2}, + element::i16, std::vector{2, 3, 6, 8, 10, 12, 14, 16, 18, 20, 10000, 200}); - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, std::vector{1, 1, 3, 4, 5, 6, 7, 8, 9, 10, (uint8_t)5000, 100}); return res; } @@ -164,8 +171,7 @@ static RefPreprocessParams tensor_element_type_and_scale() { res.function = []() { auto f = create_simple_function(element::i8, Shape{1, 3, 1, 1}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_element_type(element::f32); + p.input().tensor().set_element_type(element::f32); p.input().preprocess().scale(2.0f).convert_element_type(element::i8); p.build(); return f; @@ -206,7 +212,7 @@ static RefPreprocessParams test_multiple() { p1.input().preprocess().scale(2.f); p1.input().preprocess().mean({1.f, 2.f, 3.f}); p1.input().preprocess().scale({2.f, 3.f, 4.f}); - p1.input().preprocess().custom([](const Output &node) { + p1.input().preprocess().custom([](const Output& node) { auto abs = std::make_shared(node); abs->set_friendly_name(node.get_node_shared_ptr()->get_friendly_name() + "/abs"); return abs; @@ -227,9 +233,7 @@ static RefPreprocessParams test_2_inputs_basic() { auto f = create_n_inputs(2, element::f32, Shape{1, 3, 1, 1}); auto p = PrePostProcessor(f); p.input(0).preprocess().mean(1.f); - p.input("tensor_input2").preprocess() - .mean(1.f) - .scale(2.0f); + p.input("tensor_input2").preprocess().mean(1.f).scale(2.0f); p.build(); return f; }; @@ -246,8 +250,7 @@ static RefPreprocessParams mean_scale_vector_tensor_layout() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 3, 2, 1}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_layout("NC??"); + p.input().tensor().set_layout("NC??"); p.input().preprocess().mean({1.f, 2.f, 3.f}).scale({2.f, 3.f, 4.f}); p.build(); return f; @@ -263,8 +266,7 @@ static RefPreprocessParams mean_scale_dynamic_layout() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 2, 1, 3}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_layout("N...C"); + p.input().tensor().set_layout("N...C"); p.input().preprocess().mean({1.f, 2.f, 3.f}).scale({2.f, 3.f, 4.f}); p.build(); return f; @@ -280,8 +282,7 @@ static RefPreprocessParams resize_to_network_height() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 2, 1, 1}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_spatial_dynamic_shape(); + p.input().tensor().set_spatial_dynamic_shape(); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_LINEAR); p.input().model().set_layout("NHWC"); p.build(); @@ -297,15 +298,15 @@ static RefPreprocessParams resize_to_network_width() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{Dimension::dynamic(), 1, 2, 2}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_spatial_dynamic_shape(); + p.input().tensor().set_spatial_dynamic_shape(); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_LINEAR); p.input().model().set_layout("NCHW"); p.build(); return f; }; - res.inputs.emplace_back(element::f32, Shape{1, 1, 2, 6}, std::vector{0., 1., 2., 3., 4., 5., - 0., 1., 2., 3., 4., 5.}); + res.inputs.emplace_back(element::f32, + Shape{1, 1, 2, 6}, + std::vector{0., 1., 2., 3., 4., 5., 0., 1., 2., 3., 4., 5.}); res.expected.emplace_back(Shape{1, 1, 2, 2}, element::f32, std::vector{1., 4., 1., 4.}); return res; } @@ -315,8 +316,7 @@ static RefPreprocessParams resize_from_spatial_dims() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{Dimension::dynamic(), 1, 1, 1}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_spatial_static_shape(1, 4); + p.input().tensor().set_spatial_static_shape(1, 4); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_CUBIC); p.input().model().set_layout("NCHW"); p.build(); @@ -332,17 +332,13 @@ static RefPreprocessParams resize_i8() { res.function = []() { auto f = create_simple_function(element::i8, PartialShape{1, 3, 1, 1}); auto p = PrePostProcessor(f); - p.input() - .tensor() - .set_spatial_dynamic_shape(); + p.input().tensor().set_spatial_dynamic_shape(); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_LINEAR); p.input().model().set_layout("NCHW"); p.build(); return f; }; - res.inputs.emplace_back(element::i8, Shape{1, 3, 2, 2}, std::vector{0, 0, 0, 0, - 1, 1, 1, 1, - 2, 2, 2, 2}); + res.inputs.emplace_back(element::i8, Shape{1, 3, 2, 2}, std::vector{0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2}); res.expected.emplace_back(Shape{1, 3, 1, 1}, element::i8, std::vector{0, 1, 2}); return res; } @@ -352,8 +348,7 @@ static RefPreprocessParams resize_to_network_width_height() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 1, 4, 4}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_spatial_static_shape(5, 5); + p.input().tensor().set_spatial_static_shape(5, 5); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_NEAREST); p.input().model().set_layout("...HW"); p.build(); @@ -382,8 +377,7 @@ static RefPreprocessParams resize_to_specified_width_height() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 1, Dimension::dynamic(), Dimension::dynamic()}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_spatial_dynamic_shape(); + p.input().tensor().set_spatial_dynamic_shape(); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_NEAREST, 4, 4); p.input().model().set_layout("...HW"); p.build(); @@ -419,13 +413,34 @@ static RefPreprocessParams convert_layout_nhwc_to_nchw() { p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::u8, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::u8, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -441,13 +456,34 @@ static RefPreprocessParams convert_layout_nhwc_to_nchw_fully_dynamic() { p.build(); return f; }; - res.inputs.emplace_back(element::u8, Shape{1, 2, 2, 3}, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(element::u8, + Shape{1, 2, 2, 3}, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -461,13 +497,34 @@ static RefPreprocessParams convert_layout_hwc_to_nchw() { p.build(); return f; }; - res.inputs.emplace_back(Shape{2, 2, 3}, element::u8, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{2, 2, 3}, + element::u8, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -481,13 +538,34 @@ static RefPreprocessParams convert_layout_hwc_to_nchw_fully_dynamic() { p.build(); return f; }; - res.inputs.emplace_back(element::u8, Shape{2, 2, 3}, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(element::u8, + Shape{2, 2, 3}, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -502,13 +580,34 @@ static RefPreprocessParams convert_layout_nhwc_to_net_no_tensor_shape() { p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::u8, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::u8, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -521,13 +620,34 @@ static RefPreprocessParams convert_layout_by_dims() { p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::u8, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::u8, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -536,18 +656,41 @@ static RefPreprocessParams convert_layout_by_dims_multi() { res.function = []() { auto f = create_simple_function(element::f32, {1, 3, 2, 2}); auto p = PrePostProcessor(f); - p.input().preprocess().convert_layout({0, 1, 3, 2}) // NHWC->NHCW - .convert_layout({0, 2, 1, 3}); // NHCW->NCHW + p.input() + .preprocess() + .convert_layout({0, 1, 3, 2}) // NHWC->NHCW + .convert_layout({0, 2, 1, 3}); // NHCW->NCHW p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::f32, std::vector{1, 2, 3, // [H=0, W=0] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::f32, + std::vector{1, + 2, + 3, // [H=0, W=0] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -557,19 +700,42 @@ static RefPreprocessParams convert_layout_by_dims_multi_layout() { auto f = create_simple_function(element::f32, {1, 3, 2, 2}); auto p = PrePostProcessor(f); p.input().tensor().set_layout("N??C"); - p.input().preprocess().convert_layout({0, 1, 3, 2}) // NHWC->NHCW - .mean({1, 2, 2}) // Apply means to 'C' channel - .convert_layout({0, 2, 1, 3}); // NHCW->NCHW + p.input() + .preprocess() + .convert_layout({0, 1, 3, 2}) // NHWC->NHCW + .mean({1, 2, 2}) // Apply means to 'C' channel + .convert_layout({0, 2, 1, 3}); // NHCW->NCHW p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::f32, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1-1, 4-1, 7-1, 10-1, // R - 2-2, 5-2, 8-2, 11-2, // G - 3-2, 6-2, 9-2, 12-2}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::f32, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1 - 1, + 4 - 1, + 7 - 1, + 10 - 1, // R + 2 - 2, + 5 - 2, + 8 - 2, + 11 - 2, // G + 3 - 2, + 6 - 2, + 9 - 2, + 12 - 2}); // B return res; } @@ -578,13 +744,8 @@ static RefPreprocessParams resize_and_convert_layout() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 2, 2, 2}); auto p = PrePostProcessor(f); - p.input() - .tensor() - .set_layout("NCHW") - .set_spatial_dynamic_shape(); - p.input().preprocess() - .resize(ResizeAlgorithm::RESIZE_LINEAR) - .convert_layout(); + p.input().tensor().set_layout("NCHW").set_spatial_dynamic_shape(); + p.input().preprocess().resize(ResizeAlgorithm::RESIZE_LINEAR).convert_layout(); p.input().model().set_layout("NHWC"); p.build(); return f; @@ -611,16 +772,13 @@ static RefPreprocessParams resize_and_convert_layout() { static RefPreprocessParams convert_color_nv12_to_bgr_two_planes() { RefPreprocessParams res("convert_color_nv12_to_bgr_two_planes"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::u8, PartialShape{1, 4, 4, 3}); auto p = PrePostProcessor(f); - p.input() - .tensor() - .set_color_format(ColorFormat::NV12_TWO_PLANES); - p.input().preprocess() - .convert_color(ColorFormat::BGR); + p.input().tensor().set_color_format(ColorFormat::NV12_TWO_PLANES); + p.input().preprocess().convert_color(ColorFormat::BGR); p.build(); return f; }; @@ -650,16 +808,13 @@ static RefPreprocessParams convert_color_nv12_to_bgr_two_planes() { static RefPreprocessParams convert_color_nv12_single_plane() { RefPreprocessParams res("convert_color_nv12_single_plane"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 4, 4, 3}); auto p = PrePostProcessor(f); - p.input() - .tensor() - .set_color_format(ColorFormat::NV12_SINGLE_PLANE); - p.input().preprocess() - .convert_color(ColorFormat::RGB); + p.input().tensor().set_color_format(ColorFormat::NV12_SINGLE_PLANE); + p.input().preprocess().convert_color(ColorFormat::RGB); p.build(); return f; }; @@ -685,21 +840,22 @@ static RefPreprocessParams convert_color_nv12_single_plane() { static RefPreprocessParams convert_color_nv12_layout_resize() { RefPreprocessParams res("convert_color_nv12_layout_resize"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 3, 2, 2}); auto p = PrePostProcessor(f); p.input() - .tensor() - .set_color_format(ColorFormat::NV12_SINGLE_PLANE) - .set_element_type(element::u8) - .set_spatial_dynamic_shape(); - p.input().preprocess() - .convert_color(ColorFormat::RGB) - .convert_layout() - .convert_element_type(element::f32) - .resize(ResizeAlgorithm::RESIZE_NEAREST); + .tensor() + .set_color_format(ColorFormat::NV12_SINGLE_PLANE) + .set_element_type(element::u8) + .set_spatial_dynamic_shape(); + p.input() + .preprocess() + .convert_color(ColorFormat::RGB) + .convert_layout() + .convert_element_type(element::f32) + .resize(ResizeAlgorithm::RESIZE_NEAREST); p.input().model().set_layout("NCHW"); p.build(); return f; @@ -725,18 +881,13 @@ static RefPreprocessParams convert_color_nv12_layout_resize() { static RefPreprocessParams element_type_before_convert_color_nv12() { RefPreprocessParams res("element_type_before_convert_color_nv12"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 2, 2, 3}); auto p = PrePostProcessor(f); - p.input() - .tensor() - .set_element_type(element::u8) - .set_color_format(ColorFormat::NV12_TWO_PLANES); - p.input().preprocess() - .convert_element_type(element::f32) - .convert_color(ColorFormat::RGB); + p.input().tensor().set_element_type(element::u8).set_color_format(ColorFormat::NV12_TWO_PLANES); + p.input().preprocess().convert_element_type(element::f32).convert_color(ColorFormat::RGB); p.input().model().set_layout("NHWC"); p.build(); return f; @@ -758,8 +909,8 @@ static RefPreprocessParams element_type_before_convert_color_nv12() { static RefPreprocessParams convert_color_i420_to_bgr_three_planes() { RefPreprocessParams res("convert_color_i420_to_bgr_three_planes"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::u8, PartialShape{1, 4, 4, 3}); auto p = PrePostProcessor(f); @@ -798,8 +949,8 @@ static RefPreprocessParams convert_color_i420_to_bgr_three_planes() { static RefPreprocessParams convert_color_i420_single_plane() { RefPreprocessParams res("convert_color_i420_single_plane"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 4, 4, 3}); auto p = PrePostProcessor(f); @@ -850,10 +1001,10 @@ static RefPreprocessParams set_shape_custom_crop() { std::vector input_values(shape_size(input_shape)); std::iota(input_values.begin(), input_values.end(), 0.f); res.inputs.emplace_back(element::f32, input_shape, input_values); - res.expected.emplace_back(Shape{2, 2, 2, 2}, element::f32, std::vector{ 85, 86, 89, 90, - 101, 102, 105, 106, - 149, 150, 153, 154, - 165, 166, 169, 170}); + res.expected.emplace_back( + Shape{2, 2, 2, 2}, + element::f32, + std::vector{85, 86, 89, 90, 101, 102, 105, 106, 149, 150, 153, 154, 165, 166, 169, 170}); return res; } @@ -871,11 +1022,8 @@ static RefPreprocessParams set_shape_with_resize() { auto input_size = 1 * 2 * 2 * 3; std::vector input_values(input_size); std::iota(input_values.begin(), input_values.end(), 0.f); - res.inputs.emplace_back(element::f32, Shape{1, 2, 2, 3}, std::vector {1, 2, 3, - 1, 2, 3, - 1, 2, 3, - 1, 2, 3}); - res.expected.emplace_back(Shape{1, 3, 1, 1}, element::f32, std::vector{ 1, 2, 3}); + res.inputs.emplace_back(element::f32, Shape{1, 2, 2, 3}, std::vector{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3}); + res.expected.emplace_back(Shape{1, 3, 1, 1}, element::f32, std::vector{1, 2, 3}); return res; } @@ -893,10 +1041,10 @@ static RefPreprocessParams preprocess_crop_basic() { std::vector input_values(shape_size(input_shape)); std::iota(input_values.begin(), input_values.end(), 0.f); res.inputs.emplace_back(element::f32, input_shape, input_values); - res.expected.emplace_back(Shape{2, 2, 2, 2}, element::f32, std::vector{ 85, 86, 89, 90, - 101, 102, 105, 106, - 149, 150, 153, 154, - 165, 166, 169, 170}); + res.expected.emplace_back( + Shape{2, 2, 2, 2}, + element::f32, + std::vector{85, 86, 89, 90, 101, 102, 105, 106, 149, 150, 153, 154, 165, 166, 169, 170}); return res; } @@ -923,12 +1071,10 @@ static RefPreprocessParams postprocess_2_inputs_basic() { res.function = []() { auto f = create_n_inputs(2, element::f32, Shape{1, 3, 1, 2}); auto p = PrePostProcessor(f); - p.output("tensor_output1") - .model().set_layout("NCHW"); + p.output("tensor_output1").model().set_layout("NCHW"); p.output("tensor_output1").postprocess().convert_layout(); p.output("tensor_output1").tensor().set_layout("NHWC"); - p.output("tensor_output2") - .postprocess().convert_element_type(); + p.output("tensor_output2").postprocess().convert_element_type(); p.output("tensor_output2").tensor().set_element_type(element::u8); p.build(); return f; @@ -945,18 +1091,38 @@ static RefPreprocessParams post_convert_layout_by_dims() { res.function = []() { auto f = create_simple_function(element::u8, {1, 2, 2, 3}); auto p = PrePostProcessor(f); - p.output() - .postprocess().convert_layout({0, 3, 1, 2}); + p.output().postprocess().convert_layout({0, 3, 1, 2}); p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::u8, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::u8, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -965,18 +1131,39 @@ static RefPreprocessParams post_convert_layout_by_dims_multi() { res.function = []() { auto f = create_simple_function(element::f32, {1, 2, 2, 3}); auto p = PrePostProcessor(f); - p.output().postprocess().convert_layout({0, 1, 3, 2}); // NHWC->NHCW; - p.output().postprocess().convert_layout({0, 2, 1, 3}); // NHCW->NCHW; + p.output().postprocess().convert_layout({0, 1, 3, 2}); // NHWC->NHCW; + p.output().postprocess().convert_layout({0, 2, 1, 3}); // NHCW->NCHW; p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::f32, std::vector{1, 2, 3, // [H=0, W=0] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::f32, + std::vector{1, + 2, + 3, // [H=0, W=0] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -985,16 +1172,13 @@ static RefPreprocessParams pre_and_post_processing() { res.function = []() { auto f = create_n_inputs(2, element::f32, Shape{1, 3, 1, 2}); auto p = PrePostProcessor(f); - p.input(0) - .tensor().set_element_type(element::u8); + p.input(0).tensor().set_element_type(element::u8); p.input(0).preprocess().convert_element_type(element::f32).mean(1.f); p.input(1).preprocess().scale(2.f); - p.output("tensor_output1") - .model().set_layout("NCHW"); + p.output("tensor_output1").model().set_layout("NCHW"); p.output("tensor_output1").postprocess().convert_layout(); p.output("tensor_output1").tensor().set_layout("NHWC"); - p.output("tensor_output2") - .postprocess().convert_element_type(); + p.output("tensor_output2").postprocess().convert_element_type(); p.output("tensor_output2").tensor().set_element_type(element::u8); p.build(); return f; @@ -1056,18 +1240,15 @@ static RefPreprocessParams reverse_channels_nchw() { static RefPreprocessParams color_cut_last_channel() { RefPreprocessParams res("color_cut_last_channel"); - auto input_tensor = reference_tests::Tensor(Shape{1, 2, 2, 4}, element::f32, std::vector{1, 2, 3, 4, - 5, 6, 7, 8, - 3, 4, 5, 6, - 6, 7, 8, 9}); - auto exp_3_channels = reference_tests::Tensor(Shape{1, 2, 2, 3}, element::f32, std::vector{1, 2, 3, - 5, 6, 7, - 3, 4, 5, - 6, 7, 8}); - auto inv_3_channels = reference_tests::Tensor(Shape{1, 2, 2, 3}, element::f32, std::vector{3, 2, 1, - 7, 6, 5, - 5, 4, 3, - 8, 7, 6}); + auto input_tensor = reference_tests::Tensor(Shape{1, 2, 2, 4}, + element::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, 6, 7, 8, 9}); + auto exp_3_channels = reference_tests::Tensor(Shape{1, 2, 2, 3}, + element::f32, + std::vector{1, 2, 3, 5, 6, 7, 3, 4, 5, 6, 7, 8}); + auto inv_3_channels = reference_tests::Tensor(Shape{1, 2, 2, 3}, + element::f32, + std::vector{3, 2, 1, 7, 6, 5, 5, 4, 3, 8, 7, 6}); res.function = []() { auto f = create_n_inputs(4, element::f32, Shape{1, 2, 2, 3}); auto prep = PrePostProcessor(f); @@ -1096,7 +1277,8 @@ static RefPreprocessParams reverse_channels_dyn_layout() { auto f = create_simple_function(element::f32, PartialShape{1, 1, 3, 2}); auto p = PrePostProcessor(f); p.input().tensor().set_color_format(ColorFormat::BGR).set_layout("...CN"); - p.input().preprocess().convert_color(ColorFormat::RGB); p.build(); + p.input().preprocess().convert_color(ColorFormat::RGB); + p.build(); return f; }; @@ -1108,10 +1290,9 @@ static RefPreprocessParams reverse_channels_dyn_layout() { static RefPreprocessParams reverse_dyn_shape() { RefPreprocessParams res("reverse_dyn_shape"); res.function = []() { - auto f = create_simple_function(element::u8, PartialShape{Dimension::dynamic(), - Dimension::dynamic(), - Dimension::dynamic(), - Dimension::dynamic()}); + auto f = create_simple_function( + element::u8, + PartialShape{Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic()}); auto p = PrePostProcessor(f); p.input().tensor().set_layout("NCHW"); p.input().preprocess().reverse_channels(); @@ -1119,18 +1300,21 @@ static RefPreprocessParams reverse_dyn_shape() { return f; }; - res.inputs.emplace_back(element::u8, Shape{2, 2, 1, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); - res.expected.emplace_back(Shape{2, 2, 1, 3}, element::u8, std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); + res.inputs.emplace_back(element::u8, + Shape{2, 2, 1, 3}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); + res.expected.emplace_back(Shape{2, 2, 1, 3}, + element::u8, + std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); return res; } static RefPreprocessParams reverse_dyn_channels() { RefPreprocessParams res("reverse_dyn_channels"); res.function = []() { - auto f = create_simple_function(element::u8, PartialShape{Dimension::dynamic(), - 2, - Dimension::dynamic(), - Dimension::dynamic()}); + auto f = + create_simple_function(element::u8, + PartialShape{Dimension::dynamic(), 2, Dimension::dynamic(), Dimension::dynamic()}); auto p = PrePostProcessor(f); p.input().tensor().set_layout("NCHW"); p.input().preprocess().reverse_channels(); @@ -1138,8 +1322,12 @@ static RefPreprocessParams reverse_dyn_channels() { return f; }; - res.inputs.emplace_back(element::u8, Shape{2, 2, 1, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); - res.expected.emplace_back(Shape{2, 2, 1, 3}, element::u8, std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); + res.inputs.emplace_back(element::u8, + Shape{2, 2, 1, 3}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); + res.expected.emplace_back(Shape{2, 2, 1, 3}, + element::u8, + std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); return res; } @@ -1154,63 +1342,66 @@ static RefPreprocessParams reverse_fully_dyn_shape() { return f; }; - res.inputs.emplace_back(element::u8, Shape{2, 2, 1, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); - res.expected.emplace_back(Shape{2, 2, 1, 3}, element::u8, std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); + res.inputs.emplace_back(element::u8, + Shape{2, 2, 1, 3}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); + res.expected.emplace_back(Shape{2, 2, 1, 3}, + element::u8, + std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); return res; } std::vector allPreprocessTests() { - return std::vector { - simple_mean_scale(), - scale_then_mean(), - convert_only(), - convert_element_type_and_scale(), - tensor_element_type_and_scale(), - custom_preprocessing(), - test_multiple(), - test_2_inputs_basic(), - mean_scale_vector_tensor_layout(), - mean_scale_dynamic_layout(), - resize_to_network_height(), - resize_to_network_width(), - resize_from_spatial_dims(), - resize_i8(), - resize_to_network_width_height(), - resize_to_specified_width_height(), - convert_layout_nhwc_to_nchw(), - convert_layout_nhwc_to_nchw_fully_dynamic(), - convert_layout_nhwc_to_net_no_tensor_shape(), - convert_layout_by_dims(), - convert_layout_by_dims_multi(), - convert_layout_by_dims_multi_layout(), - convert_layout_hwc_to_nchw(), - convert_layout_hwc_to_nchw_fully_dynamic(), - resize_and_convert_layout(), - convert_color_nv12_to_bgr_two_planes(), - convert_color_nv12_single_plane(), - convert_color_nv12_layout_resize(), - element_type_before_convert_color_nv12(), - convert_color_i420_to_bgr_three_planes(), - convert_color_i420_single_plane(), - preprocess_crop_basic(), - preprocess_crop_2axis_dynamic(), - set_shape_custom_crop(), - set_shape_with_resize(), - postprocess_2_inputs_basic(), - post_convert_layout_by_dims(), - post_convert_layout_by_dims_multi(), - pre_and_post_processing(), - rgb_to_bgr(), - bgr_to_rgb(), - color_cut_last_channel(), - reverse_channels_nchw(), - reverse_channels_dyn_layout(), - reverse_dyn_shape(), - reverse_dyn_channels(), - reverse_fully_dyn_shape() - }; + return std::vector{simple_mean_scale(), + scale_then_mean(), + convert_only(), + convert_element_type_and_scale(), + tensor_element_type_and_scale(), + custom_preprocessing(), + test_multiple(), + test_2_inputs_basic(), + mean_scale_vector_tensor_layout(), + mean_scale_dynamic_layout(), + resize_to_network_height(), + resize_to_network_width(), + resize_from_spatial_dims(), + resize_i8(), + resize_to_network_width_height(), + resize_to_specified_width_height(), + convert_layout_nhwc_to_nchw(), + convert_layout_nhwc_to_nchw_fully_dynamic(), + convert_layout_nhwc_to_net_no_tensor_shape(), + convert_layout_by_dims(), + convert_layout_by_dims_multi(), + convert_layout_by_dims_multi_layout(), + convert_layout_hwc_to_nchw(), + convert_layout_hwc_to_nchw_fully_dynamic(), + resize_and_convert_layout(), + convert_color_nv12_to_bgr_two_planes(), + convert_color_nv12_single_plane(), + convert_color_nv12_layout_resize(), + element_type_before_convert_color_nv12(), + convert_color_i420_to_bgr_three_planes(), + convert_color_i420_single_plane(), + preprocess_crop_basic(), + preprocess_crop_2axis_dynamic(), + set_shape_custom_crop(), + set_shape_with_resize(), + postprocess_2_inputs_basic(), + post_convert_layout_by_dims(), + post_convert_layout_by_dims_multi(), + pre_and_post_processing(), + rgb_to_bgr(), + bgr_to_rgb(), + color_cut_last_channel(), + reverse_channels_nchw(), + reverse_channels_dyn_layout(), + reverse_dyn_shape(), + reverse_dyn_channels(), + reverse_fully_dyn_shape()}; } -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferencePreprocessTest, +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferencePreprocessTest, ::testing::ValuesIn(allPreprocessTests()), ReferencePreprocessTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp b/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp index 574b8f618be473..a8ba3ea35534ea 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp @@ -26,7 +26,7 @@ class ReferencePreprocessLegacyTest : public testing::Test, public ReferenceCNNT } }; -} // namespace +} // namespace static std::shared_ptr create_simple_function(element::Type type, const PartialShape& shape) { auto data1 = std::make_shared(type, shape); @@ -49,7 +49,7 @@ TEST_F(ReferencePreprocessLegacyTest, mean) { auto f2 = create_simple_function(element::f32, Shape{1, 3, 2, 2}); legacy_network = InferenceEngine::CNNNetwork(f2); - auto &preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); + auto& preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); preProcess.init(3); preProcess[0]->meanValue = 1; preProcess[1]->meanValue = 1; @@ -69,7 +69,7 @@ TEST_F(ReferencePreprocessLegacyTest, mean_scale) { auto f2 = create_simple_function(element::f32, Shape{1, 3, 20, 20}); legacy_network = InferenceEngine::CNNNetwork(f2); - auto &preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); + auto& preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); preProcess.init(3); preProcess[0]->meanValue = 0; preProcess[1]->meanValue = 0; @@ -92,7 +92,7 @@ TEST_F(ReferencePreprocessLegacyTest, resize) { p.input().model().set_layout("NCHW"); p.build(); - auto &preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); + auto& preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); preProcess.setResizeAlgorithm(InferenceEngine::ResizeAlgorithm::RESIZE_BILINEAR); Exec(); } @@ -120,7 +120,7 @@ TEST_F(ReferencePreprocessLegacyTest, bgrx_to_bgr) { {1, 4, h, w}, InferenceEngine::Layout::NHWC); legacy_network.getInputsInfo().begin()->second->setLayout(InferenceEngine::NHWC); - auto &preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); + auto& preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); preProcess.setColorFormat(InferenceEngine::ColorFormat::BGRX); legacy_input_blobs["input1"] = InferenceEngine::make_shared_blob(rgbx_plane_desc, rgbx_input.data()); @@ -150,7 +150,7 @@ TEST_F(ReferencePreprocessLegacyTest, rgbx_to_bgr) { {1, 4, h, w}, InferenceEngine::Layout::NHWC); legacy_network.getInputsInfo().begin()->second->setLayout(InferenceEngine::NHWC); - auto &preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); + auto& preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); preProcess.setColorFormat(InferenceEngine::ColorFormat::RGBX); legacy_input_blobs["input1"] = InferenceEngine::make_shared_blob(rgbx_plane_desc, rgbx_input.data()); diff --git a/src/plugins/template/tests/functional/subgraph_reference/preprocess_opencv.cpp b/src/plugins/template/tests/functional/subgraph_reference/preprocess_opencv.cpp index 4aea7d4173c9b4..099cea661b5f6c 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/preprocess_opencv.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/preprocess_opencv.cpp @@ -4,18 +4,17 @@ #ifdef OPENCV_TEMPLATE_TESTS -#include +# include +# include -#include -#include +# include +# include +# include +# include +# include -#include -#include -#include -#include - -#include "base_reference_test.hpp" -#include "ngraph_functions/builders.hpp" +# include "base_reference_test.hpp" +# include "ngraph_functions/builders.hpp" using namespace ov; using namespace ov::preprocess; @@ -31,8 +30,8 @@ class PreprocessOpenCVReferenceTest : public testing::Test, public CommonReferen /// \brief Test class with counting deviated pixels /// -/// OpenCV contains custom implementation for 8U and 16U (all calculations -/// are done in INTs instead of FLOATs), so deviation in 1 color step +/// OpenCV contains custom implementation for 8U and 16U (all calculations +/// are done in INTs instead of FLOATs), so deviation in 1 color step /// between pixels is expected class PreprocessOpenCVReferenceTest_8U : public PreprocessOpenCVReferenceTest { public: @@ -44,11 +43,13 @@ class PreprocessOpenCVReferenceTest_8U : public PreprocessOpenCVReferenceTest { // Less than 2% of deviations with 1 color step. 2% is experimental value // For very precise (acceptable) float calculations - 1.4% deviation with G-API/OpenCV is observed LayerTestsDefinitions::NV12TestUtils::ValidateColors(refOutData[0].data(), - actualOutData[0].data(), refOutData[0].get_size(), 0.02); + actualOutData[0].data(), + refOutData[0].get_size(), + 0.02); } }; -} // namespace +} // namespace static std::shared_ptr create_simple_function(element::Type type, const PartialShape& shape) { auto data1 = std::make_shared(type, shape); @@ -69,12 +70,12 @@ TEST_F(PreprocessOpenCVReferenceTest, convert_rgb_gray_fp32) { auto input_shape = Shape{1, input_height, input_width, 3}; auto model_shape = Shape{1, input_height, input_width, 1}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(-5, 300); for (std::size_t i = 0; i < shape_size(input_shape); i++) input_img[i] = static_cast(distrib(random)); - + function = create_simple_function(element::f32, model_shape); inputData.clear(); @@ -84,7 +85,7 @@ TEST_F(PreprocessOpenCVReferenceTest, convert_rgb_gray_fp32) { p.input().preprocess().convert_color(ColorFormat::GRAY); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -102,8 +103,8 @@ TEST_F(PreprocessOpenCVReferenceTest, convert_bgr_gray_fp32) { auto input_shape = Shape{1, input_height, input_width, 3}; auto model_shape = Shape{1, input_height, input_width, 1}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(-5, 300); for (std::size_t i = 0; i < shape_size(input_shape); i++) input_img[i] = static_cast(distrib(random)); @@ -117,7 +118,7 @@ TEST_F(PreprocessOpenCVReferenceTest, convert_bgr_gray_fp32) { p.input().preprocess().convert_color(ColorFormat::GRAY); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -136,8 +137,8 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_rgb_gray_u8) { auto input_shape = Shape{1, input_height, input_width, 3}; auto model_shape = Shape{1, input_height, input_width, 1}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(0, 255); for (std::size_t i = 0; i < shape_size(input_shape); i++) input_img[i] = static_cast(distrib(random)); @@ -151,7 +152,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_rgb_gray_u8) { p.input().preprocess().convert_color(ColorFormat::GRAY); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -169,10 +170,10 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_bgr_gray_u8) { auto input_shape = Shape{1, input_height, input_width, 3}; auto model_shape = Shape{1, input_height, input_width, 1}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(0, 255); - for (std::size_t i = 0; i < shape_size(input_shape); i++) + for (std::size_t i = 0; i < shape_size(input_shape); i++) input_img[i] = static_cast(distrib(random)); function = create_simple_function(element::u8, model_shape); @@ -184,7 +185,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_bgr_gray_u8) { p.input().preprocess().convert_color(ColorFormat::GRAY); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -198,8 +199,8 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_bgr_gray_u8) { } TEST_F(PreprocessOpenCVReferenceTest_8U, convert_i420_full_color_range) { - size_t height = 64; // 64/2 = 32 values for R - size_t width = 64; // 64/2 = 32 values for G + size_t height = 64; // 64/2 = 32 values for R + size_t width = 64; // 64/2 = 32 values for G int b_step = 5; int b_dim = 255 / b_step + 1; @@ -217,14 +218,12 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_i420_full_color_range) { p.input().preprocess().convert_color(ColorFormat::BGR); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), ov20_input_yuv.data()); // Calculate reference expected values from OpenCV - cv::Mat picYV12 = cv::Mat(static_cast(full_height) * 3 / 2, - static_cast(width), - CV_8UC1, - ov20_input_yuv.data()); + cv::Mat picYV12 = + cv::Mat(static_cast(full_height) * 3 / 2, static_cast(width), CV_8UC1, ov20_input_yuv.data()); cv::Mat picBGR; cv::cvtColor(picYV12, picBGR, CV_YUV2BGR_I420); refOutData.emplace_back(param->get_element_type(), func_shape, picBGR.data); @@ -234,8 +233,8 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_i420_full_color_range) { } TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_full_color_range) { - size_t height = 64; // 64/2 = 32 values for R - size_t width = 64; // 64/2 = 32 values for G + size_t height = 64; // 64/2 = 32 values for R + size_t width = 64; // 64/2 = 32 values for G int b_step = 5; int b_dim = 255 / b_step + 1; @@ -253,14 +252,12 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_full_color_range) { p.input().preprocess().convert_color(ColorFormat::BGR); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), ov20_input_yuv.data()); // Calculate reference expected values from OpenCV - cv::Mat picYV12 = cv::Mat(static_cast(full_height) * 3 / 2, - static_cast(width), - CV_8UC1, - ov20_input_yuv.data()); + cv::Mat picYV12 = + cv::Mat(static_cast(full_height) * 3 / 2, static_cast(width), CV_8UC1, ov20_input_yuv.data()); cv::Mat picBGR; cv::cvtColor(picYV12, picBGR, CV_YUV2BGR_NV12); refOutData.emplace_back(param->get_element_type(), func_shape, picBGR.data); @@ -270,7 +267,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_full_color_range) { } TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_colored) { - auto input_yuv = std::vector {235, 81, 235, 81, 109, 184}; + auto input_yuv = std::vector{235, 81, 235, 81, 109, 184}; auto func_shape = Shape{1, 2, 2, 3}; function = create_simple_function(element::u8, func_shape); @@ -281,7 +278,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_colored) { p.input().preprocess().convert_color(ColorFormat::BGR); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_yuv.data()); // Calculate reference expected values from OpenCV @@ -296,7 +293,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_colored) { TEST_F(PreprocessOpenCVReferenceTest, resize_u8_simple_linear) { auto input_shape = Shape{1, 1, 2, 2}; auto func_shape = Shape{1, 1, 1, 1}; - auto input_img = std::vector {5, 5, 5, 4}; + auto input_img = std::vector{5, 5, 5, 4}; function = create_simple_function(element::u8, func_shape); inputData.clear(); @@ -307,7 +304,7 @@ TEST_F(PreprocessOpenCVReferenceTest, resize_u8_simple_linear) { p.input().model().set_layout("NCHW"); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -326,8 +323,8 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, resize_u8_large_picture_linear) { const size_t func_width = 31; auto input_shape = Shape{1, 1, input_height, input_width}; auto func_shape = Shape{1, 1, func_height, func_width}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(0, 255); for (std::size_t i = 0; i < shape_size(input_shape); i++) { auto v = distrib(random); @@ -343,7 +340,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, resize_u8_large_picture_linear) { p.input().model().set_layout("NCHW"); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -364,8 +361,8 @@ TEST_F(PreprocessOpenCVReferenceTest, resize_f32_large_picture_linear) { const size_t func_width = 31; auto input_shape = Shape{1, 1, input_height, input_width}; auto func_shape = Shape{1, 1, func_height, func_width}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(0, 255); for (std::size_t i = 0; i < shape_size(input_shape); i++) { input_img[i] = static_cast(distrib(random)); @@ -380,7 +377,7 @@ TEST_F(PreprocessOpenCVReferenceTest, resize_f32_large_picture_linear) { p.input().model().set_layout("NCHW"); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -400,7 +397,7 @@ TEST_F(PreprocessOpenCVReferenceTest, DISABLED_resize_f32_large_picture_cubic_sm auto input_shape = Shape{1, 1, input_height, input_width}; auto func_shape = Shape{1, 1, func_height, func_width}; auto element_type = element::f32; - auto input_img = std::vector {1.f, 2.f, 3.f, 4.f, 4.f, 3.f, 2.f, 1.f, 1.f, 2.f, 3.f, 4.f, 4.f, 3.f, 2.f, 1.f}; + auto input_img = std::vector{1.f, 2.f, 3.f, 4.f, 4.f, 3.f, 2.f, 1.f, 1.f, 2.f, 3.f, 4.f, 4.f, 3.f, 2.f, 1.f}; function = create_simple_function(element_type, func_shape); auto p = PrePostProcessor(function); p.input().tensor().set_spatial_static_shape(input_height, input_width); @@ -419,4 +416,4 @@ TEST_F(PreprocessOpenCVReferenceTest, DISABLED_resize_f32_large_picture_cubic_sm Exec(); } -#endif // OPENCV_TEMPLATE_TESTS +#endif // OPENCV_TEMPLATE_TESTS From 215a2f435b88e9298d6e33380842b347b97bd515 Mon Sep 17 00:00:00 2001 From: Anastasiia Pnevskaia Date: Tue, 19 Sep 2023 19:04:24 +0200 Subject: [PATCH 30/46] tf.Graph decoder accuracy fixes (#19903) * Fixed outputs passing from decoder. * Fixed get_variable method. * Code style. * Removed xfails from precommit models. * Minor fix. * Comment fixed. * Added test. --- .../frontend/tensorflow/graph_iterator.py | 16 +++++--- .../frontend/tensorflow/node_decoder.py | 14 ++++--- .../src/openvino/frontend/tensorflow/utils.py | 2 +- src/frontends/tensorflow/src/input_model.cpp | 30 +++++++++----- .../tensorflow/src/translate_session.cpp | 17 +++++--- .../ovc_python_api_tests/test_tf.py | 40 +++++++++++++++++++ .../tf_hub_tests/precommit_models | 6 +-- 7 files changed, 95 insertions(+), 30 deletions(-) diff --git a/src/bindings/python/src/openvino/frontend/tensorflow/graph_iterator.py b/src/bindings/python/src/openvino/frontend/tensorflow/graph_iterator.py index ac7bb04958a3e4..29dc6b1ad58973 100644 --- a/src/bindings/python/src/openvino/frontend/tensorflow/graph_iterator.py +++ b/src/bindings/python/src/openvino/frontend/tensorflow/graph_iterator.py @@ -40,6 +40,10 @@ def get_input_names(self) -> list: return [] inp_ops = filter(lambda op: op.type == "Placeholder", self.m_graph.get_operations()) inp_names = [] + if hasattr(self.m_graph, 'inputs') and self.m_graph.inputs: + for inp in self.m_graph.inputs: + inp_names.append(inp.op.name) + return inp_names for inp in inp_ops: assert isinstance(inp, tf.Operation), "Unknown node type. Expected tf.Operation, got {}".format(type(inp)) assert hasattr(inp, "node_def") and isinstance(inp.node_def, tf.compat.v1.NodeDef), \ @@ -58,11 +62,13 @@ def get_output_names(self) -> list: # Note: used only for the library functions if not self.m_inner_graph: return [] - # tf.Graph has ordered outputs which are stored in 'outputs' field, - # but using this field results in mismatch of outputs in inner graph and outputs in outer graph - # during the injection of subgraph. - # For this reason only nodes without outputs are considered graph outputs here - # as this approach does not lead to conflicts. + + if hasattr(self.m_graph, 'outputs') and self.m_graph.outputs: + outputs = [] + for out in self.m_graph.outputs: + outputs.append(out.name) + return outputs + # If graph has no 'outputs' field, find nodes without outputs and consider them graph outputs. # The order of outputs is important and wrong order may lead to conversion error. non_outputs = set() for op in self.m_graph.get_operations(): diff --git a/src/bindings/python/src/openvino/frontend/tensorflow/node_decoder.py b/src/bindings/python/src/openvino/frontend/tensorflow/node_decoder.py index 0ecffc4040abe6..4fab05c17de380 100644 --- a/src/bindings/python/src/openvino/frontend/tensorflow/node_decoder.py +++ b/src/bindings/python/src/openvino/frontend/tensorflow/node_decoder.py @@ -54,6 +54,7 @@ def __init__(self, operation: tf.Operation, share_weights: bool, inner_graph: bo self.m_operation = operation self.m_inner_graph = inner_graph self.m_data_type = None + self.m_parsed_content = None # Copies value from inner buffer of TF_Operation to NodeDef class. self.m_node_def = self.m_operation.node_def @@ -87,11 +88,11 @@ def __init__(self, operation: tf.Operation, share_weights: bool, inner_graph: bo if self.m_operation.type == "Placeholder": self.m_data_type = tf.dtypes.DType(self.m_node_def.attr["dtype"].type).name - if self.m_data_type == "resource" and not self.m_inner_graph: + if not self.m_inner_graph: variable_value = TFGraphNodeDecoder.get_variable(self.m_operation) if variable_value is not None: # does not copy data - self.m_parsed_content = variable_value.value().__array__() + self.m_parsed_content = variable_value.__array__() if isinstance(self.m_parsed_content, bytes): self.m_data_type = "string" @@ -103,7 +104,7 @@ def get_op_name(self) -> str: def get_op_type(self) -> str: if self.m_operation.type == "Placeholder": type_attr = tf.dtypes.DType(self.m_node_def.attr["dtype"].type) - if type_attr.name == "resource" and not self.m_inner_graph: + if not self.m_inner_graph and self.m_parsed_content is not None: if TFGraphNodeDecoder.get_variable(self.m_operation) is not None: return "Const" raise Exception("Could not get variable for resource Placeholder {0}".format(self.m_operation.name)) @@ -116,10 +117,11 @@ def get_variable(operation): return None for var_tensor, op_tensor in tf_graph.captures: if operation.outputs[0].name == op_tensor.name: - resource_name = var_tensor._name + if var_tensor.dtype.name != 'resource': + return var_tensor for variable_value in operation.graph.variables: - if variable_value.name == resource_name: - return variable_value + if id(variable_value.handle) == id(var_tensor): + return variable_value.value() return None return None diff --git a/src/bindings/python/src/openvino/frontend/tensorflow/utils.py b/src/bindings/python/src/openvino/frontend/tensorflow/utils.py index 056e0904b4c22f..f4ac5b0a121565 100644 --- a/src/bindings/python/src/openvino/frontend/tensorflow/utils.py +++ b/src/bindings/python/src/openvino/frontend/tensorflow/utils.py @@ -339,7 +339,7 @@ def create_tf_graph_iterator(input_model, placeholder_shapes, placeholder_data_t if hasattr(input_model, 'outputs') and hasattr(input_model, 'structured_outputs') and \ isinstance(input_model.structured_outputs, dict): external_names = sorted(list(input_model.structured_outputs.keys())) - internal_names = sorted([tensor.name for tensor in input_model.outputs]) + internal_names = [tensor.name for tensor in input_model.outputs] if len(external_names) == len(internal_names): for external_name, internal_name in zip(external_names, internal_names): output_names_map = output_names_map or {} diff --git a/src/frontends/tensorflow/src/input_model.cpp b/src/frontends/tensorflow/src/input_model.cpp index 9ed378b9373762..6e2103ca463a10 100644 --- a/src/frontends/tensorflow/src/input_model.cpp +++ b/src/frontends/tensorflow/src/input_model.cpp @@ -259,15 +259,26 @@ void InputModel::InputModelTFImpl::load_places() { return; } - // treat terminal nodes as the models outputs for the frozen TF1 format - std::set op_names_without_consumers; - std::set_difference(all_op_names.begin(), - all_op_names.end(), - op_names_with_consumers.begin(), - op_names_with_consumers.end(), - std::inserter(op_names_without_consumers, op_names_without_consumers.begin())); - - for (const auto& output_name : op_names_without_consumers) { + auto out_names = m_graph_iterator->get_output_names(); + if (!out_names.size()) { + // treat terminal nodes as the models outputs for the frozen TF1 format + std::set op_names_without_consumers; + std::set_difference(all_op_names.begin(), + all_op_names.end(), + op_names_with_consumers.begin(), + op_names_with_consumers.end(), + std::inserter(op_names_without_consumers, op_names_without_consumers.begin())); + for (const auto& output_name : op_names_without_consumers) { + auto output_place = std::make_shared(m_input_model, + ov::PartialShape({}), + ov::element::dynamic, + std::vector{output_name}); + m_tensor_places[output_name] = output_place; + m_outputs.push_back(output_place); + } + return; + } + for (const auto& output_name : out_names) { auto output_place = std::make_shared(m_input_model, ov::PartialShape({}), ov::element::dynamic, @@ -312,7 +323,6 @@ std::vector> InputModel::InputModelTFImpl::topologicall // TODO: implement logic to check direct cycles in the graph // and break them // probably not only NextIteration can generate cycles - for (const auto& output_place : m_outputs) { FRONT_END_GENERAL_CHECK(output_place->get_names().size() > 0, "TensorPlace must have at least one name."); auto output_place_name = output_place->get_names()[0]; diff --git a/src/frontends/tensorflow/src/translate_session.cpp b/src/frontends/tensorflow/src/translate_session.cpp index ebb0dee99923fa..933bc0d900eba5 100644 --- a/src/frontends/tensorflow/src/translate_session.cpp +++ b/src/frontends/tensorflow/src/translate_session.cpp @@ -25,17 +25,24 @@ std::vector reorder_ops_by_names(const std::vector& names, const "[TensorFlow Frontend] Internal error: cannot perform reordering of operations. The number " "of names mismatches the number of operations."); std::vector resulted_ops(ops.size(), nullptr); + for (const auto& op : ops) { const auto& op_name = op->get_friendly_name(); auto iter = std::find(names.begin(), names.end(), op_name); FRONT_END_GENERAL_CHECK(iter != names.end(), "[TensorFlow Frontend] Internal error: cannot perform reordering of operations. The " "requested name is not found among operations."); - auto ind = std::distance(names.begin(), iter); - FRONT_END_GENERAL_CHECK(resulted_ops[ind] == nullptr, - "[TensorFlow Frontend] Internal error: incorrect reordering of operations. " - "Found two operations that are mapped to the same name."); - resulted_ops[ind] = op; + } + + size_t ind = 0; + for (const auto& name : names) { + for (const auto& op : ops) { + if (op->get_friendly_name() == name) { + resulted_ops[ind] = op; + ind++; + break; + } + } } return resulted_ops; }; diff --git a/tests/layer_tests/ovc_python_api_tests/test_tf.py b/tests/layer_tests/ovc_python_api_tests/test_tf.py index 75e0d641c42fec..a311666eb83bf3 100644 --- a/tests/layer_tests/ovc_python_api_tests/test_tf.py +++ b/tests/layer_tests/ovc_python_api_tests/test_tf.py @@ -860,6 +860,46 @@ def __call__(self, input): assert CommonLayerTest().compare_ie_results_with_framework(ov_infer, {"Identity:0": fw_infer}, eps) assert CommonLayerTest().compare_ie_results_with_framework(ov_infer, {"Identity:0": 3.2}, eps) + def test_unnamed_variable(self, ie_device, precision, ir_version, temp_dir): + import tensorflow as tf + tf.compat.v1.reset_default_graph() + + from openvino.tools.ovc import convert_model + from openvino.runtime import compile_model + + class LayerModel(tf.Module): + def __init__(self): + super(LayerModel, self).__init__() + self.var1 = tf.Variable([1.6, 3.8]) + self.var2 = tf.Variable(-0.5) + + + @tf.function + def sub_function(self, input): + return (input + self.var1) * self.var2 + + @tf.function(input_signature=[tf.TensorSpec([2], tf.float32)]) + def __call__(self, input): + return self.sub_function(input) + + if precision == 'FP32': + eps = 1e-4 + else: + eps = 5e-2 + + test_input = np.array([2.0, 5.0]).astype(np.float32) + + # Convert model to OV + fw_model = LayerModel() + ov_model = convert_model(fw_model) + cmp_model = compile_model(ov_model) + + # Check model inference + ov_infer = cmp_model(test_input, ie_device) + fw_infer = fw_model(test_input).numpy() + + assert CommonLayerTest().compare_ie_results_with_framework(ov_infer, {"Identity:0": fw_infer}, eps) + assert CommonLayerTest().compare_ie_results_with_framework(ov_infer, {"Identity:0": [-1.8, -4.4]}, eps) class TFConvertTest(unittest.TestCase): @pytest.mark.nightly diff --git a/tests/model_hub_tests/tf_hub_tests/precommit_models b/tests/model_hub_tests/tf_hub_tests/precommit_models index f9be334761d23c..3be4384dd1c576 100644 --- a/tests/model_hub_tests/tf_hub_tests/precommit_models +++ b/tests/model_hub_tests/tf_hub_tests/precommit_models @@ -6,13 +6,13 @@ imagenet/mobilenet_v2_100_224/feature_vector,https://tfhub.dev/google/imagenet/m efficientnet/lite0/classification,https://tfhub.dev/tensorflow/efficientnet/lite0/classification/2?tf-hub-format=compressed movenet/multipose/lightning,https://tfhub.dev/google/movenet/multipose/lightning/1?tf-hub-format=compressed imagenet/efficientnet_v2_imagenet1k_b0/feature_vector,https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet1k_b0/feature_vector/2?tf-hub-format=compressed -imagenet/mobilenet_v1_100_224/classification,https://tfhub.dev/google/imagenet/mobilenet_v1_100_224/classification/5?tf-hub-format=compressed,skip,119718 - Accuracy issue +imagenet/mobilenet_v1_100_224/classification,https://tfhub.dev/google/imagenet/mobilenet_v1_100_224/classification/5?tf-hub-format=compressed magenta/arbitrary-image-stylization-v1-256,https://tfhub.dev/google/magenta/arbitrary-image-stylization-v1-256/2?tf-hub-format=compressed -small_bert/bert_en_uncased_L-4_H-256_A-4,https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-4_H-256_A-4/2?tf-hub-format=compressed,skip,119718 - Accuracy issue +small_bert/bert_en_uncased_L-4_H-256_A-4,https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-4_H-256_A-4/2?tf-hub-format=compressed movinet/a5/base/kinetics-600/classification,https://tfhub.dev/tensorflow/movinet/a5/base/kinetics-600/classification/3?tf-hub-format=compressed # secure notebook models unet/industrial/class_1,https://tfhub.dev/nvidia/unet/industrial/class_1/1?tf-hub-format=compressed movenet/singlepose/thunder,https://tfhub.dev/google/movenet/singlepose/thunder/4?tf-hub-format=compressed esrgan-tf2,https://tfhub.dev/captain-pool/esrgan-tf2/1?tf-hub-format=compressed -film,https://tfhub.dev/google/film/1?tf-hub-format=compressed,skip,119718 - Accuracy issue +film,https://tfhub.dev/google/film/1?tf-hub-format=compressed planet/vision/classifier/planet_v2,https://tfhub.dev/google/planet/vision/classifier/planet_v2/1?tf-hub-format=compressed \ No newline at end of file From 00bc4436a98d53e0ca168571554a28d083084ced Mon Sep 17 00:00:00 2001 From: Evgenya Nugmanova Date: Tue, 19 Sep 2023 22:13:19 +0400 Subject: [PATCH 31/46] Allow avoiding Constant casting / printing VisualizeTree (#19845) * Avoid Constant casting / printing when OV_VISUALIZE_TREE_CONST_MAX_ELEMENTS==0 Cast only requested amount of elements in Constant::cast_vector<> * Refactor * Revert style back * Fix signed/unsigned comparison * test * Style * Style --- src/core/include/openvino/op/constant.hpp | 80 +++++++++++++---------- src/core/src/pass/visualize_tree.cpp | 67 +++++++------------ src/core/tests/constant.cpp | 40 ++++++++++++ 3 files changed, 108 insertions(+), 79 deletions(-) diff --git a/src/core/include/openvino/op/constant.hpp b/src/core/include/openvino/op/constant.hpp index 00e48a7f392951..3c2d048e0db7bf 100644 --- a/src/core/include/openvino/op/constant.hpp +++ b/src/core/include/openvino/op/constant.hpp @@ -295,10 +295,11 @@ class OPENVINO_API Constant : public Op { /// \brief Return the Constant's value as a vector cast to type T /// - /// \tparam T Type to which data vector's entries will be cast. + /// \tparam T Type to which data vector's entries will be cast. + /// \param num_elements (Optional) Number of elements to cast. In default case returns all elements /// \return Constant's data vector. template - std::vector cast_vector() const { + std::vector cast_vector(int64_t num_elements = -1) const { auto source_type = get_element_type(); std::vector rc; using Type_t = element::Type_t; @@ -306,54 +307,58 @@ class OPENVINO_API Constant : public Op { # pragma warning(push) # pragma warning(disable : 4244) #endif + size_t num_elements_in_constant = shape_size(m_shape); + size_t num_elements_to_cast = + (num_elements < 0 ? num_elements_in_constant + : std::min(static_cast(num_elements), num_elements_in_constant)); switch (source_type) { case Type_t::boolean: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::bf16: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::f16: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::f32: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::f64: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::i4: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::i8: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::i16: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::i32: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::i64: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::u1: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::u4: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::u8: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::u16: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::u32: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; case Type_t::u64: - cast_vector(rc); + cast_vector(rc, num_elements_to_cast); break; default: OPENVINO_THROW("unsupported type"); @@ -438,15 +443,19 @@ class OPENVINO_API Constant : public Op { typename std::enable_if::type = true> - void cast_vector(std::vector& output_vector) const { + void cast_vector(std::vector& output_vector, size_t num_elements) const { // this function is workaround for waring during windows building // build complains for vector creation based on iterators // which point on different type than destination vector::value_type using IN_T = fundamental_type_for; auto source_vector = get_vector(); - output_vector.reserve(source_vector.size()); + auto output_size = std::min(num_elements, source_vector.size()); + output_vector.reserve(output_size); - std::transform(source_vector.begin(), source_vector.end(), std::back_inserter(output_vector), [](IN_T c) { + std::transform(source_vector.begin(), + source_vector.begin() + output_size, + std::back_inserter(output_vector), + [](IN_T c) { #ifdef __clang__ # pragma clang diagnostic push # ifdef __has_warning @@ -465,12 +474,13 @@ class OPENVINO_API Constant : public Op { # pragma warning(disable : 4018) # pragma warning(disable : 4804) #endif - if (!std::is_same::value) { - OPENVINO_ASSERT(!std::numeric_limits::is_signed || std::numeric_limits::lowest() <= c, - "Cannot cast vector from constant. Some values are outside the range."); - OPENVINO_ASSERT(std::numeric_limits::max() >= c, - "Cannot cast vector from constant. Some values are outside the range."); - } + if (!std::is_same::value) { + OPENVINO_ASSERT( + !std::numeric_limits::is_signed || std::numeric_limits::lowest() <= c, + "Cannot cast vector from constant. Some values are outside the range."); + OPENVINO_ASSERT(std::numeric_limits::max() >= c, + "Cannot cast vector from constant. Some values are outside the range."); + } #if defined(__clang__) # pragma clang diagnostic pop #elif defined(__GNUC__) @@ -478,16 +488,16 @@ class OPENVINO_API Constant : public Op { #elif defined(_MSC_VER) # pragma warning(pop) #endif - return static_cast(c); - }); + return static_cast(c); + }); } template ::type = true> - void cast_vector(std::vector& output) const { + void cast_vector(std::vector& output, size_t num_elements) const { using IN_T = fundamental_type_for; - const auto element_number = shape_size(m_shape); + const auto element_number = std::min(num_elements, shape_size(m_shape)); const auto source_begin = get_data_ptr(); const auto source_end = std::next(source_begin, (element_number + 7) / 8); const auto round_element_no = element_number % 8 ? element_number - element_number % 8 + 8 : element_number; @@ -504,9 +514,9 @@ class OPENVINO_API Constant : public Op { template ::type = true> - void cast_vector(std::vector& output) const { + void cast_vector(std::vector& output, size_t num_elements) const { using IN_T = fundamental_type_for; - const auto element_number = shape_size(m_shape); + const auto element_number = std::min(num_elements, shape_size(m_shape)); const auto source_begin = get_data_ptr(); const auto source_end = std::next(source_begin, (element_number + 1) / 2); const auto round_element_no = element_number % 2 ? element_number + 1 : element_number; @@ -522,9 +532,9 @@ class OPENVINO_API Constant : public Op { template ::type = true> - void cast_vector(std::vector& output) const { + void cast_vector(std::vector& output, size_t num_elements) const { using IN_T = fundamental_type_for; - const auto element_number = shape_size(m_shape); + const auto element_number = std::min(num_elements, shape_size(m_shape)); const auto source_begin = get_data_ptr(); const auto source_end = std::next(source_begin, (element_number + 1) / 2); const auto round_element_no = element_number % 2 ? element_number + 1 : element_number; diff --git a/src/core/src/pass/visualize_tree.cpp b/src/core/src/pass/visualize_tree.cpp index 58622688b47c3e..9aa4adf2378940 100644 --- a/src/core/src/pass/visualize_tree.cpp +++ b/src/core/src/pass/visualize_tree.cpp @@ -213,8 +213,6 @@ ov::pass::VisualizeTree::VisualizeTree(const std::string& file_name, node_modifi void ov::pass::VisualizeTree::add_node_arguments(std::shared_ptr node, std::unordered_map& height_maps, size_t& fake_node_ctr) { - static const int const_max_elements = ov::util::getenv_int("OV_VISUALIZE_TREE_CONST_MAX_ELEMENTS", 7); - size_t arg_index = 0; for (auto input_value : node->input_values()) { auto arg = input_value.get_node_shared_ptr(); @@ -227,7 +225,7 @@ void ov::pass::VisualizeTree::add_node_arguments(std::shared_ptr node, "style=\"dashed\"", color, std::string("label=\"") + get_node_name(arg) + std::string("\n") + - get_constant_value(arg, const_max_elements) + std::string("\"")}; + get_constant_value(arg) + std::string("\"")}; if (m_node_modifiers && !arg->output(0).get_rt_info().empty()) { m_node_modifiers(*arg, attributes); @@ -280,13 +278,7 @@ std::string ov::pass::VisualizeTree::add_attributes(std::shared_ptr node) static std::string pretty_partial_shape(const ov::PartialShape& shape) { std::stringstream ss; - - if (shape.rank().is_dynamic()) { - ss << "?"; - } else { - ss << shape; - } - + ss << shape; return ss.str(); } @@ -327,21 +319,11 @@ static std::string pretty_min_max_denormal_value(const std::vector& values) { } template -static std::string pretty_value(const std::vector& values, size_t max_elements, bool allow_obfuscate = false) { +static std::string pretty_value(const std::vector& values, bool allow_obfuscate = false) { std::stringstream ss; for (size_t i = 0; i < values.size(); ++i) { - if (i < max_elements) { - if (i != 0 && i % 8 == 0) { - ss << std::endl; - } - } else { - bool all_same = std::all_of(values.begin(), values.end(), [&](const T& el) { - return el == values[0]; - }); - ss << "..." << (all_same ? " same" : ""); - break; - } - + if (i != 0 && i % 8 == 0) + ss << std::endl; const auto& value = values[i]; if (i > 0) ss << ", "; @@ -361,46 +343,46 @@ static std::string pretty_value(const std::vector& values, size_t max_element return ss.str(); } -static std::string get_value(const std::shared_ptr& constant, - size_t max_elements, - bool allow_obfuscate = false) { +static std::string get_value(const std::shared_ptr& constant, bool allow_obfuscate = false) { + static const int max_elements = ov::util::getenv_int("OV_VISUALIZE_TREE_CONST_MAX_ELEMENTS", 7); std::stringstream ss; + ss << "[ "; switch (constant->get_output_element_type(0)) { case ov::element::Type_t::undefined: - ss << "[ undefined value ]"; - break; case ov::element::Type_t::dynamic: - ss << "[ dynamic value ]"; - break; case ov::element::Type_t::u1: - ss << "[ u1 value ]"; - break; case ov::element::Type_t::u4: - ss << "[ u4 value ]"; - break; case ov::element::Type_t::i4: - ss << "[ i4 value ]"; + ss << constant->get_output_element_type(0).get_type_name() << " value"; break; case ov::element::Type_t::bf16: case ov::element::Type_t::f16: case ov::element::Type_t::f32: case ov::element::Type_t::f64: - ss << "[" << pretty_value(constant->cast_vector(), max_elements, allow_obfuscate) << "]"; + ss << pretty_value(constant->cast_vector(max_elements), allow_obfuscate); break; case ov::element::Type_t::i8: case ov::element::Type_t::i16: case ov::element::Type_t::i32: case ov::element::Type_t::i64: - ss << "[" << pretty_value(constant->cast_vector(), max_elements, allow_obfuscate) << "]"; + ss << pretty_value(constant->cast_vector(max_elements), allow_obfuscate); break; case ov::element::Type_t::boolean: case ov::element::Type_t::u8: case ov::element::Type_t::u16: case ov::element::Type_t::u32: case ov::element::Type_t::u64: - ss << "[" << pretty_value(constant->cast_vector(), max_elements, allow_obfuscate) << "]"; + ss << pretty_value(constant->cast_vector(max_elements), allow_obfuscate); break; } + const auto num_elements_in_constant = static_cast(shape_size(constant->get_shape())); + if (num_elements_in_constant == 0) + ss << "empty"; + else if (max_elements == 0) + ss << "suppressed"; + else if (num_elements_in_constant > max_elements) + ss << ", ..."; + ss << " ]"; return ss.str(); } @@ -418,12 +400,9 @@ static std::string get_bounds_and_label_info(const ov::Output output) if (size == 0) { label << "empty"; } else { - static const int const_max_elements = ov::util::getenv_int("OV_VISUALIZE_TREE_CONST_MAX_ELEMENTS", 7); - label << " lower: " - << (lower ? get_value(std::make_shared(lower), const_max_elements, true) : "NONE"); - label << " upper: " - << (upper ? get_value(std::make_shared(upper), const_max_elements, true) : "NONE"); - label << " label: " << (value_label.empty() ? "NONE" : pretty_value(value_label, const_max_elements)); + label << " lower: " << (lower ? get_value(std::make_shared(lower), true) : "NONE"); + label << " upper: " << (upper ? get_value(std::make_shared(upper), true) : "NONE"); + label << " label: " << (value_label.empty() ? "NONE" : pretty_value(value_label)); } return label.str(); } diff --git a/src/core/tests/constant.cpp b/src/core/tests/constant.cpp index 810affda0a6c36..45ad60d153627a 100644 --- a/src/core/tests/constant.cpp +++ b/src/core/tests/constant.cpp @@ -1779,3 +1779,43 @@ TEST(constant, lazy_bitwise_identical) { // '10' times is guaranteed to be faster here (typical value is ~200'000) EXPECT_GT(bitwise_check_count_only, bitwise_check_count * 10); } + +TEST(constant, cast_vector) { + std::vector types = {element::boolean, + element::bf16, + element::f16, + element::f32, + element::f64, + element::i4, + element::i8, + element::i16, + element::i32, + element::i64, + element::u1, + element::u4, + element::u8, + element::u16, + element::u32, + element::u64}; + std::vector data = {0, 1, 0, 0, 1, 1, 0, 1}; + std::vector expected_partial_data = {0, 1, 0, 0, 1, 1}; + + for (const auto& type : types) { + const auto& constant = op::v0::Constant::create(type, Shape{data.size()}, data); + + const auto& default_casted = constant->cast_vector(); + EXPECT_EQ(default_casted, data) << "Constant::cast_vector failed default casting for type " << type; + + int64_t num_elements_for_partial_casting = static_cast(expected_partial_data.size()); + const auto& partially_casted = constant->cast_vector(num_elements_for_partial_casting); + EXPECT_EQ(partially_casted, expected_partial_data) + << "Constant::cast_vector failed partial casting for type " << type; + + int64_t num_elements_for_over_casting = static_cast(data.size()) + 10; + const auto& over_casted = constant->cast_vector(num_elements_for_over_casting); + EXPECT_EQ(over_casted, data) << "Constant::cast_vector failed for partial casting for type " << type; + + EXPECT_TRUE(constant->cast_vector(0).empty()) + << "Constant::cast_vector failed empty casting for type " << type; + } +} From 52e57e1777e30c370ed9dab6982143bb1a968687 Mon Sep 17 00:00:00 2001 From: Ilya Churaev Date: Tue, 19 Sep 2023 22:26:57 +0400 Subject: [PATCH 32/46] Disable clang-format for legacy C API (#19944) --- src/bindings/c/src/CMakeLists.txt | 9 +++++---- src/bindings/c/src/common.h | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/bindings/c/src/CMakeLists.txt b/src/bindings/c/src/CMakeLists.txt index 737dcc3d272a1e..e491424cb27afb 100644 --- a/src/bindings/c/src/CMakeLists.txt +++ b/src/bindings/c/src/CMakeLists.txt @@ -8,11 +8,12 @@ set(TARGET_NAME openvino_c) ov_deprecated_no_errors() add_definitions(-DIN_OV_COMPONENT) -file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) -file(GLOB_RECURSE HEADERS ${OpenVINO_C_API_SOURCE_DIR}/include/*.h) +file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) +file(GLOB_RECURSE LEGACY_HEADERS ${OpenVINO_C_API_SOURCE_DIR}/include/c_api/*.h) +file(GLOB_RECURSE HEADERS ${OpenVINO_C_API_SOURCE_DIR}/include/openvino/*.h) # create library -add_library(${TARGET_NAME} ${HEADERS} ${SOURCES}) +add_library(${TARGET_NAME} ${LEGACY_HEADERS} ${HEADERS} ${SOURCES}) add_library(openvino::runtime::c ALIAS ${TARGET_NAME}) target_link_libraries(${TARGET_NAME} PRIVATE openvino openvino::util) @@ -24,7 +25,7 @@ if(NOT BUILD_SHARED_LIBS) target_compile_definitions(${TARGET_NAME} PUBLIC OPENVINO_STATIC_LIBRARY) endif() -ov_add_clang_format_target(${TARGET_NAME}_clang FOR_TARGETS ${TARGET_NAME}) +ov_add_clang_format_target(${TARGET_NAME}_clang FOR_SOURCES ${HEADERS} ${SOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) diff --git a/src/bindings/c/src/common.h b/src/bindings/c/src/common.h index 92e024a7123d65..ff2e0bcac07312 100644 --- a/src/bindings/c/src/common.h +++ b/src/bindings/c/src/common.h @@ -17,7 +17,7 @@ #define CATCH_IE_EXCEPTION(StatusCode, ExceptionType) \ catch (const InferenceEngine::ExceptionType&) { \ return ov_status_e::StatusCode; \ - } \ + } #define CATCH_OV_EXCEPTION(StatusCode, ExceptionType) \ catch (const ov::ExceptionType&) { \ @@ -42,7 +42,7 @@ CATCH_IE_EXCEPTION(INFER_CANCELLED, InferCancelled) \ catch (...) { \ return ov_status_e::UNKNOW_EXCEPTION; \ - } \ + } #define GET_PROPERTY_FROM_ARGS_LIST \ std::string property_key = va_arg(args_ptr, char*); \ From b3ee79520f067ee4104bba4e3a886b3c9e096593 Mon Sep 17 00:00:00 2001 From: Anastasia Kuporosova Date: Tue, 19 Sep 2023 23:35:38 +0200 Subject: [PATCH 33/46] [PyOV][Docs] Add docs for if-op (#19899) * [PyOV][Docs] Add docs for if-op * code style * add rtypes * add dots --- .../python/src/pyopenvino/graph/ops/if.cpp | 178 ++++++++++++++++-- .../openvino/op/util/multi_subgraph_base.hpp | 12 +- 2 files changed, 171 insertions(+), 19 deletions(-) diff --git a/src/bindings/python/src/pyopenvino/graph/ops/if.cpp b/src/bindings/python/src/pyopenvino/graph/ops/if.cpp index 13de82c7acd3aa..d1eb84eb014d46 100644 --- a/src/bindings/python/src/pyopenvino/graph/ops/if.cpp +++ b/src/bindings/python/src/pyopenvino/graph/ops/if.cpp @@ -19,7 +19,17 @@ void regclass_graph_op_If(py::module m) { py::class_, ov::Node> cls(m, "if_op"); cls.doc() = "openvino.impl.op.If wraps ov::op::v0::If"; cls.def(py::init<>()); - cls.def(py::init&>(), py::arg("execution_condition")); + cls.def(py::init&>(), + py::arg("execution_condition"), + R"( + Constructs If with condition. + + :param execution_condition: condition node. + :type execution_condition: openvino.runtime.Output + + :rtype: openvino.impl.op.If + )"); + cls.def(py::init([](const std::shared_ptr& execution_condition) { if (MultiSubgraphHelpers::is_constant_or_parameter(execution_condition)) { return std::make_shared(execution_condition->output(0)); @@ -29,18 +39,114 @@ void regclass_graph_op_If(py::module m) { return std::make_shared(); } }), - py::arg("execution_condition")); - cls.def("get_else_body", &ov::op::v8::If::get_else_body); - cls.def("set_then_body", &ov::op::v8::If::set_then_body, py::arg("body")); - cls.def("set_else_body", &ov::op::v8::If::set_else_body, py::arg("body")); + py::arg("execution_condition"), + R"( + Constructs If with condition. + + :param execution_condition: condition node. + :type execution_condition: openvino.runtime.Node + + :rtype: openvino.impl.op.If + )"); + + cls.def("get_else_body", + &ov::op::v8::If::get_else_body, + R"( + Gets else_body as Model object. + + :return: else_body as Model object. + :rtype: openvino.Model + )"); + + cls.def("set_then_body", + &ov::op::v8::If::set_then_body, + py::arg("body"), + R"( + Sets new Model object as new then_body. + + :param body: new body for 'then' branch. + :type body: openvino.Model + + :rtype: None + )"); + + cls.def("set_else_body", + &ov::op::v8::If::set_else_body, + py::arg("body"), + R"( + Sets new Model object as new else_body. + + :param body: new body for 'else' branch. + :type body: openvino.Model + + :rtype: None + )"); + cls.def("set_input", &ov::op::v8::If::set_input, py::arg("value"), py::arg("then_parameter"), - py::arg("else_parameter")); - cls.def("set_output", &ov::op::v8::If::set_output, py::arg("then_result"), py::arg("else_result")); - cls.def("get_function", &ov::op::util::MultiSubGraphOp::get_function, py::arg("index")); - cls.def("set_function", &ov::op::util::MultiSubGraphOp::set_function, py::arg("index"), py::arg("func")); + py::arg("else_parameter"), + R"( + Sets new input to the operation associated with parameters of each sub-graphs. + + :param value: input to operation. + :type value: openvino.runtime.Output + + :param then_result: parameter for then_body or nullptr. + :type then_result: openvino.runtime.Node + + :param else_result: parameter for else_body or nullptr. + :type else_result: openvino.runtime.Node + + :rtype: None + )"); + + cls.def("set_output", + &ov::op::v8::If::set_output, + py::arg("then_result"), + py::arg("else_result"), + R"( + Sets new output from the operation associated with results of each sub-graphs. + + :param then_result: result from then_body. + :type then_result: openvino.runtime.Node + + :param else_result: result from else_body. + :type else_result: openvino.runtime.Node + + :return: output from operation. + :rtype: openvino.runtime.Output + )"); + + cls.def("get_function", + &ov::op::util::MultiSubGraphOp::get_function, + py::arg("index"), + R"( + Gets internal sub-graph by index in MultiSubGraphOp. + + :param index: sub-graph's index in op. + :type index: int + + :return: Model with sub-graph. + :rtype: openvino.Model + )"); + + cls.def("set_function", + &ov::op::util::MultiSubGraphOp::set_function, + py::arg("index"), + py::arg("func"), + R"( + Adds sub-graph to MultiSubGraphOp. + + :param index: index of new sub-graph. + :type index: int + + :param func: func new sub_graph as a Model. + :type func: openvino.Model + + :rtype: None + )"); cls.def( "set_input_descriptions", @@ -48,7 +154,20 @@ void regclass_graph_op_If(py::module m) { self->set_input_descriptions(index, MultiSubgraphHelpers::list_to_input_descriptor(inputs)); }, py::arg("index"), - py::arg("inputs")); + py::arg("inputs"), + R"( + Sets list with connections between operation inputs and internal sub-graph parameters. + + :param index: index of internal sub-graph. + :type index: int + + :param inputs: list of input descriptions. + :type inputs: list[Union[openvino.runtime.op.util.MergedInputDescription, + openvino.runtime.op.util.InvariantInputDescription, + openvino.runtime.op.util.SliceInputDescription]] + + :rtype: None + )"); cls.def( "set_output_descriptions", @@ -56,7 +175,19 @@ void regclass_graph_op_If(py::module m) { self->set_output_descriptions(index, MultiSubgraphHelpers::list_to_output_descriptor(outputs)); }, py::arg("index"), - py::arg("outputs")); + py::arg("outputs"), + R"( + Sets list with connections between operation outputs and internal sub-graph parameters. + + :param index: index of internal sub-graph. + :type index: int + + :param outputs: list of output descriptions. + :type outputs: list[Union[openvino.runtime.op.util.BodyOutputDescription, + openvino.runtime.op.util.ConcatOutputDescription]] + + :rtype: None + )"); cls.def( "get_output_descriptions", @@ -69,7 +200,17 @@ void regclass_graph_op_If(py::module m) { return result; }, - py::arg("index")); + py::arg("index"), + R"( + Gets list with connections between operation outputs and internal sub-graph parameters. + + :param index: index of internal sub-graph. + :type index: int + + :return: list of output descriptions. + :rtype: list[Union[openvino.runtime.op.util.BodyOutputDescription, + openvino.runtime.op.util.ConcatOutputDescription]] + )"); cls.def( "get_input_descriptions", @@ -82,7 +223,18 @@ void regclass_graph_op_If(py::module m) { return result; }, - py::arg("index")); + py::arg("index"), + R"( + Gets list with connections between operation inputs and internal sub-graph parameters. + + :param index: index of internal sub-graph. + :type index: int + + :return: list of input descriptions. + :rtype: list[Union[openvino.runtime.op.util.MergedInputDescription, + openvino.runtime.op.util.InvariantInputDescription, + openvino.runtime.op.util.SliceInputDescription]] + )"); cls.def("__repr__", [](const ov::op::v8::If& self) { std::stringstream shapes_ss; diff --git a/src/core/include/openvino/op/util/multi_subgraph_base.hpp b/src/core/include/openvino/op/util/multi_subgraph_base.hpp index dbdb7b7d724b67..d4ee8eae9ca536 100644 --- a/src/core/include/openvino/op/util/multi_subgraph_base.hpp +++ b/src/core/include/openvino/op/util/multi_subgraph_base.hpp @@ -212,7 +212,7 @@ class OPENVINO_API MultiSubGraphOp : public Op { virtual void set_function(int index, const std::shared_ptr& func) { m_bodies[index] = func; } - /// \brief Gets vector with connections beewtwen operation inputs + /// \brief Gets vector with connections between operation inputs /// and internal sub-graph parameters /// /// \param index index of internal sub-graph @@ -220,7 +220,7 @@ class OPENVINO_API MultiSubGraphOp : public Op { const MultiSubgraphInputDescriptionVector& get_input_descriptions(int index) const { return m_input_descriptions[index]; } - /// \brief Gets vector with connections beewtwen operation inputs + /// \brief Gets vector with connections between operation inputs /// and internal sub-graph parameters /// /// \param index index of internal sub-graph @@ -228,7 +228,7 @@ class OPENVINO_API MultiSubGraphOp : public Op { MultiSubgraphInputDescriptionVector& get_input_descriptions(int index) { return m_input_descriptions[index]; } - /// \brief Gets vector with connections beewtwen operation outputs + /// \brief Gets vector with connections between operation outputs /// and internal sub-graph results /// /// \param index index of internal sub-graph @@ -236,7 +236,7 @@ class OPENVINO_API MultiSubGraphOp : public Op { const MultiSubgraphOutputDescriptionVector& get_output_descriptions(int index) const { return m_output_descriptions[index]; } - /// \brief Gets vector with connections beewtwen operation outputs + /// \brief Gets vector with connections between operation outputs /// and internal sub-graph results /// /// \param index index of internal sub-graph @@ -244,7 +244,7 @@ class OPENVINO_API MultiSubGraphOp : public Op { MultiSubgraphOutputDescriptionVector& get_output_descriptions(int index) { return m_output_descriptions[index]; } - /// \brief Sets vector with connections beewtwen operation inputs + /// \brief Sets vector with connections between operation inputs /// and internal sub-graph parameters /// /// \param index index of internal sub-graph @@ -253,7 +253,7 @@ class OPENVINO_API MultiSubGraphOp : public Op { m_input_descriptions[index] = inputs; } - /// \brief Sets vector with connections beewtwen operation outputs + /// \brief Sets vector with connections between operation outputs /// and internal sub-graph results /// /// \param index index of internal sub-graph From 631d6d398063b00b574771fe0aadda741d1e7223 Mon Sep 17 00:00:00 2001 From: Ilya Churaev Date: Wed, 20 Sep 2023 03:36:44 +0400 Subject: [PATCH 34/46] Fixed leftovers after migration to new API (#19941) * Fixed leftovers after migration to new API * Fixed tests * Fixed clang format --------- Co-authored-by: Ilya Lavrenov --- src/core/CMakeLists.txt | 5 +- .../openvino/core/dimension_tracker.hpp | 4 +- src/core/dev_api/shape_util.hpp | 5 +- src/core/reference/src/op/if.cpp | 1 - src/core/reference/src/op/loop.cpp | 1 - .../reference/src/op/non_max_suppression.cpp | 2 - src/core/reference/src/op/tensor_iterator.cpp | 1 - src/core/src/node.cpp | 1 - src/core/src/runtime/itensor.cpp | 5 +- src/plugins/template/backend/ops/assign.cpp | 1 - src/plugins/template/backend/ops/if.cpp | 51 +++++++++---------- .../template/backend/ops/interpolate.cpp | 4 +- .../template/backend/ops/read_value.cpp | 1 - .../template/backend/ops/roi_align.cpp | 2 +- .../template/backend/ops/tensor_iterator.cpp | 16 +++--- src/plugins/template/src/plugin.cpp | 6 +-- .../behavior/ov_plugin/remote.cpp | 4 +- .../single_layer_tests/convolution.cpp | 11 ++-- .../single_layer_tests/eltwise.cpp | 44 ++++++++-------- .../single_layer_tests/softmax.cpp | 27 +++++----- .../base_reference_cnn_test.cpp | 1 - .../subgraph_reference/preprocess.cpp | 10 ++-- .../subgraph_reference/preprocess_legacy.cpp | 10 ++-- 23 files changed, 101 insertions(+), 112 deletions(-) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index c12a30d5a6f639..869b9a02c49272 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -12,7 +12,8 @@ set(OV_CORE_DEV_API_PATH ${CMAKE_CURRENT_SOURCE_DIR}/dev_api) file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp) -file(GLOB_RECURSE PUBLIC_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp) +file(GLOB_RECURSE PUBLIC_HEADERS ${OV_CORE_INCLUDE_PATH}/*.hpp) +file(GLOB_RECURSE DEV_HEADERS ${OV_CORE_DEV_API_PATH}/*.hpp) add_subdirectory(builder) add_subdirectory(reference) @@ -94,7 +95,7 @@ ov_abi_free_target(ngraph_obj) ov_ncc_naming_style(FOR_TARGET ngraph_obj SOURCE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include") -ov_add_clang_format_target(ngraph_clang FOR_TARGETS ngraph_obj) +ov_add_clang_format_target(ngraph_clang FOR_SOURCES ${LIBRARY_SRC} ${PUBLIC_HEADERS} ${DEV_HEADERS}) if(NOT BUILD_SHARED_LIBS) target_compile_definitions(ngraph_obj PUBLIC OPENVINO_STATIC_LIBRARY) diff --git a/src/core/dev_api/openvino/core/dimension_tracker.hpp b/src/core/dev_api/openvino/core/dimension_tracker.hpp index 51f85727e2380c..198454cb28c496 100644 --- a/src/core/dev_api/openvino/core/dimension_tracker.hpp +++ b/src/core/dev_api/openvino/core/dimension_tracker.hpp @@ -34,6 +34,7 @@ class OPENVINO_API DimensionTracker { void set_up_for_tracking(ov::Dimension& d); void set_up_for_tracking(ov::Dimension& d, label_t label) const; static void reset_tracking_info(ov::Dimension& d); + private: std::shared_ptr m_table_of_equivalence; }; @@ -44,13 +45,14 @@ using ValTable = std::unordered_map; class OPENVINO_API TableOfEquivalence { public: - explicit TableOfEquivalence(label_t label = 1) : current_label(label) {}; + explicit TableOfEquivalence(label_t label = 1) : current_label(label){}; void set_as_equal(const ov::Dimension& lhs, const ov::Dimension& rhs); bool are_equal(const ov::Dimension& lhs, const ov::Dimension& rhs); const EqTable& get_equivalence_table() const; const ValTable& get_value_equivalence_table() const; label_t get_next_label(); + private: label_t current_label; EqTable dimension_table_of_equivalence; diff --git a/src/core/dev_api/shape_util.hpp b/src/core/dev_api/shape_util.hpp index fb935ed51275d9..10acfcbc80f2fe 100644 --- a/src/core/dev_api/shape_util.hpp +++ b/src/core/dev_api/shape_util.hpp @@ -5,6 +5,7 @@ #pragma once #include "openvino/core/shape.hpp" +#include "openvino/op/util/attr_types.hpp" namespace ov { namespace util { @@ -50,7 +51,7 @@ OPENVINO_API Shape reduce(const Shape& input, const AxisSet& axes); OPENVINO_API Shape reduce(const Shape& input, const AxisSet& axes, const bool keep_dims); /** - * @brief Creates reduced vector from input by removing elements. + * @brief Creates reduced vector from input by removing elements. * * @param input Input vector for reduce calculation. * @param axes Reduction axes. @@ -76,6 +77,6 @@ OPENVINO_API Shape reduce_keep_dims(const Shape& input, const AxisSet& axes); * * @return Result shape from inputs with applied broadcast specification. */ -Shape get_broadcast_shape(const Shape& first, const Shape& second, const op::AutoBroadcastSpec& broadcast_spec); +Shape get_broadcast_shape(const Shape& first, const Shape& second, const ov::op::AutoBroadcastSpec& broadcast_spec); } // namespace util } // namespace ov diff --git a/src/core/reference/src/op/if.cpp b/src/core/reference/src/op/if.cpp index 25a04a7057f106..4bffb99470e32d 100644 --- a/src/core/reference/src/op/if.cpp +++ b/src/core/reference/src/op/if.cpp @@ -35,7 +35,6 @@ void if_reference(const std::vector>& bodies, "Incorrect associating! If has not output with id ", out_descr->m_output_index); auto res = outs_from_body[out_descr->m_body_value_index]; - out[out_descr->m_output_index].set_shape(res.get_shape()); res.copy_to(out[out_descr->m_output_index]); } } diff --git a/src/core/reference/src/op/loop.cpp b/src/core/reference/src/op/loop.cpp index 0582f18f438e59..39ad2c2d4f229f 100644 --- a/src/core/reference/src/op/loop.cpp +++ b/src/core/reference/src/op/loop.cpp @@ -196,7 +196,6 @@ void loop(const std::shared_ptr& func, for (const auto& desc : out_descs) { if (const auto& body_desc = std::dynamic_pointer_cast(desc)) { const auto& res = body_outputs[body_desc->m_body_value_index]; - out[body_desc->m_output_index].set_shape(res.get_shape()); res.copy_to(out[body_desc->m_output_index]); } } diff --git a/src/core/reference/src/op/non_max_suppression.cpp b/src/core/reference/src/op/non_max_suppression.cpp index 1dc7373bc17654..51609fd8059377 100644 --- a/src/core/reference/src/op/non_max_suppression.cpp +++ b/src/core/reference/src/op/non_max_suppression.cpp @@ -372,13 +372,11 @@ void nms_postprocessing(ov::TensorVector& outputs, const std::vector& selected_scores, int64_t valid_outputs, const ov::element::Type selected_scores_type) { - // outputs[0].set_element_type(output_type); outputs[0].set_shape(Shape{static_cast(valid_outputs), 3}); size_t num_of_outputs = outputs.size(); if (num_of_outputs >= 2) { - // outputs[1].set_element_type(selected_scores_type); outputs[1].set_shape(Shape{static_cast(valid_outputs), 3}); } diff --git a/src/core/reference/src/op/tensor_iterator.cpp b/src/core/reference/src/op/tensor_iterator.cpp index 6ac83923f5b9a8..d0466d7cef1044 100644 --- a/src/core/reference/src/op/tensor_iterator.cpp +++ b/src/core/reference/src/op/tensor_iterator.cpp @@ -109,7 +109,6 @@ void tensor_iterator(uint64_t num_iterations, if (const auto& body_desc = std::dynamic_pointer_cast(desc)) { // Copy output values from the last iteration const auto& res = body_outputs[body_desc->m_body_value_index]; - out[body_desc->m_output_index].set_shape(res.get_shape()); res.copy_to(out[body_desc->m_output_index]); } } diff --git a/src/core/src/node.cpp b/src/core/src/node.cpp index 1cce81d2f9fb7d..7f20ce4b991b6c 100644 --- a/src/core/src/node.cpp +++ b/src/core/src/node.cpp @@ -742,7 +742,6 @@ inline void update_output_tensors(ov::TensorVector& output_values, const ngraph: } if (output_values[i]) { // Copy value to the original tensor - output_values[i].set_shape(tensor.get_shape()); tensor.copy_to(output_values[i]); } else { // Tensor is not initialized, so create the new tensor diff --git a/src/core/src/runtime/itensor.cpp b/src/core/src/runtime/itensor.cpp index 9cde89a8cc1091..9149e3cb5c9bf2 100644 --- a/src/core/src/runtime/itensor.cpp +++ b/src/core/src/runtime/itensor.cpp @@ -10,6 +10,7 @@ #include "openvino/runtime/allocator.hpp" #include "openvino/runtime/iremote_tensor.hpp" #include "openvino/runtime/properties.hpp" +#include "shape_util.hpp" namespace ov { @@ -63,8 +64,10 @@ void ITensor::copy_to(const std::shared_ptr& dst) const { " != dst: ", dst->get_element_type(), ")"); - if (dst->get_shape() == ov::Shape{0}) + OPENVINO_SUPPRESS_DEPRECATED_START + if (dst->get_shape() == ov::Shape{0} || ov::util::is_dynamic_shape(dst->get_shape())) dst->set_shape(get_shape()); + OPENVINO_SUPPRESS_DEPRECATED_END OPENVINO_ASSERT(shapes_equal(get_shape(), dst->get_shape()), "Tensor shapes are not equal. (src: ", get_shape(), diff --git a/src/plugins/template/backend/ops/assign.cpp b/src/plugins/template/backend/ops/assign.cpp index 3f4b5f108d5662..b614afd862b395 100644 --- a/src/plugins/template/backend/ops/assign.cpp +++ b/src/plugins/template/backend/ops/assign.cpp @@ -7,7 +7,6 @@ bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { - outputs[0].set_shape(inputs[0].get_shape()); inputs[0].copy_to(outputs[0]); return true; } diff --git a/src/plugins/template/backend/ops/if.cpp b/src/plugins/template/backend/ops/if.cpp index 8795d0bfa789b6..6a64bcd1da1eac 100644 --- a/src/plugins/template/backend/ops/if.cpp +++ b/src/plugins/template/backend/ops/if.cpp @@ -74,14 +74,14 @@ void function(const std::shared_ptr& function, const ov::TensorVector const auto& parameters = function->get_parameters(); const auto& parametersNumber = parameters.size(); const auto& inputsNumber = inputs.size(); - NGRAPH_CHECK(parametersNumber == inputsNumber, - "Got function (", - function->get_friendly_name(), - ") with ", - parametersNumber, - " parameters, but ", - inputsNumber, - " input blobs"); + OPENVINO_ASSERT(parametersNumber == inputsNumber, + "Got function (", + function->get_friendly_name(), + ") with ", + parametersNumber, + " parameters, but ", + inputsNumber, + " input blobs"); for (const auto& parameter : parameters) { const auto& parameterIndex = function->get_parameter_index(parameter); @@ -91,16 +91,16 @@ void function(const std::shared_ptr& function, const ov::TensorVector const auto& input = inputs[parameterIndex]; const auto& inputSize = input.get_byte_size(); - NGRAPH_CHECK(parameterSize == inputSize, - "Got parameter (", - parameter->get_friendly_name(), - ") of size ", - parameterSize, - " bytes, but corresponding input with index ", - parameterIndex, - " has ", - inputSize, - " bytes"); + OPENVINO_ASSERT(parameterSize == inputSize, + "Got parameter (", + parameter->get_friendly_name(), + ") of size ", + parameterSize, + " bytes, but corresponding input with index ", + parameterIndex, + " has ", + inputSize, + " bytes"); } const auto& results = function->get_results(); @@ -120,7 +120,7 @@ void if_reference(const std::vector>& bodies, const std::vector& input_descs, ov::TensorVector& out, const ov::TensorVector& args) { - NGRAPH_CHECK(args.size() > 0, "If operation must have input condition value"); + OPENVINO_ASSERT(args.size() > 0, "If operation must have input condition value"); auto condition_value = args[0].data()[0]; auto branch_index = (condition_value) ? ov::op::v8::If::THEN_BODY_INDEX : ov::op::v8::If::ELSE_BODY_INDEX; @@ -130,18 +130,17 @@ void if_reference(const std::vector>& bodies, auto inputs_size = args.size(); auto output_size = out.size(); for (const auto& input_desc : input_descs[branch_index]) { - NGRAPH_CHECK(inputs_size > input_desc->m_input_index, - "Incorrect associating! If has not input with id ", - input_desc->m_input_index); + OPENVINO_ASSERT(inputs_size > input_desc->m_input_index, + "Incorrect associating! If has not input with id ", + input_desc->m_input_index); inputs_to_body[input_desc->m_body_parameter_index] = args[input_desc->m_input_index]; } function(bodies[branch_index], inputs_to_body, outs_from_body); for (const auto& out_descr : out_descs[branch_index]) { - NGRAPH_CHECK(output_size > out_descr->m_output_index, - "Incorrect associating! If has not output with id ", - out_descr->m_output_index); + OPENVINO_ASSERT(output_size > out_descr->m_output_index, + "Incorrect associating! If has not output with id ", + out_descr->m_output_index); auto res = outs_from_body[out_descr->m_body_value_index]; - out[out_descr->m_output_index].set_shape(res.get_shape()); res.copy_to(out[out_descr->m_output_index]); } diff --git a/src/plugins/template/backend/ops/interpolate.cpp b/src/plugins/template/backend/ops/interpolate.cpp index 16d3a425f5b486..1d1cc4caced291 100644 --- a/src/plugins/template/backend/ops/interpolate.cpp +++ b/src/plugins/template/backend/ops/interpolate.cpp @@ -176,7 +176,7 @@ static void pad_input_data(const uint8_t* data_ptr, const ov::Shape& input_shape, const ov::Shape& padded_input_shape, const std::vector& pads_begin) { - NGRAPH_SUPPRESS_DEPRECATED_START + OPENVINO_SUPPRESS_DEPRECATED_START ov::CoordinateTransform input_transform(input_shape); ov::CoordinateTransform padded_transform(padded_input_shape); @@ -191,7 +191,7 @@ static void pad_input_data(const uint8_t* data_ptr, const uint8_t* src_ptr = data_ptr + type_size * input_transform.index(input_coord); memcpy(dst_ptr, src_ptr, type_size); } - NGRAPH_SUPPRESS_DEPRECATED_END + OPENVINO_SUPPRESS_DEPRECATED_END } namespace v11 { diff --git a/src/plugins/template/backend/ops/read_value.cpp b/src/plugins/template/backend/ops/read_value.cpp index 39d06f29c9ba80..0ab29885702e45 100644 --- a/src/plugins/template/backend/ops/read_value.cpp +++ b/src/plugins/template/backend/ops/read_value.cpp @@ -7,7 +7,6 @@ bool evaluate(const std::shared_ptr& op, ov::TensorVector& outputs, const ov::TensorVector& inputs) { - outputs[0].set_shape(inputs[0].get_shape()); inputs[0].copy_to(outputs[0]); return true; } diff --git a/src/plugins/template/backend/ops/roi_align.cpp b/src/plugins/template/backend/ops/roi_align.cpp index 119c801cfe9fb8..cbbc00a9319c50 100644 --- a/src/plugins/template/backend/ops/roi_align.cpp +++ b/src/plugins/template/backend/ops/roi_align.cpp @@ -24,7 +24,7 @@ bool evaluate(const std::shared_ptr& op, break; } default: { - NGRAPH_CHECK(false, "unsupported PoolingMode "); + OPENVINO_THROW("unsupported PoolingMode "); } } ov::reference::roi_align(inputs[0].data(), diff --git a/src/plugins/template/backend/ops/tensor_iterator.cpp b/src/plugins/template/backend/ops/tensor_iterator.cpp index 8b3fbd62874b27..d7398b5126fcb8 100644 --- a/src/plugins/template/backend/ops/tensor_iterator.cpp +++ b/src/plugins/template/backend/ops/tensor_iterator.cpp @@ -14,14 +14,14 @@ ov::reference::custom_evaluate_function evaluate = const auto& parameters = function->get_parameters(); const auto& parametersNumber = parameters.size(); const auto& inputsNumber = inputs.size(); - NGRAPH_CHECK(parametersNumber == inputsNumber, - "Got function (", - function->get_friendly_name(), - ") with ", - parametersNumber, - " parameters, but ", - inputsNumber, - " input blobs"); + OPENVINO_ASSERT(parametersNumber == inputsNumber, + "Got function (", + function->get_friendly_name(), + ") with ", + parametersNumber, + " parameters, but ", + inputsNumber, + " input blobs"); const auto& results = function->get_results(); outputs.reserve(results.size()); diff --git a/src/plugins/template/src/plugin.cpp b/src/plugins/template/src/plugin.cpp index e1f3f114715222..b1166c4cea12d7 100644 --- a/src/plugins/template/src/plugin.cpp +++ b/src/plugins/template/src/plugin.cpp @@ -29,7 +29,7 @@ ov::template_plugin::Plugin::Plugin() { // TODO: fill with actual device name, backend engine set_device_name("TEMPLATE"); - // create ngraph backend which performs inference using ngraph reference implementations + // create backend which performs inference using openvino reference implementations m_backend = ov::runtime::Backend::create(); // create default stream executor with a given name @@ -177,9 +177,9 @@ ov::SupportedOpsMap ov::template_plugin::Plugin::query_model(const std::shared_p // 1. It is needed to apply all transformations as it is done in compile_model transform_model(model); }, - [&](std::shared_ptr node) { + [&](std::shared_ptr node) { // 2. Сheck whether node is supported - ngraph::OpSet op_super_set; + ov::OpSet op_super_set; #define _OPENVINO_OP_REG(NAME, NAMESPACE) op_super_set.insert(); // clang-format off #include "openvino/opsets/opset1_tbl.hpp" diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/remote.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/remote.cpp index a434775dd4b33c..af2f01a5fd3404 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/remote.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/remote.cpp @@ -20,8 +20,8 @@ std::vector> generate_remote_params() { INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVRemoteTest, - ::testing::Combine(::testing::Values(ngraph::element::f32), - ::testing::Values(::ov::test::utils::DEVICE_TEMPLATE), + ::testing::Combine(::testing::Values(ov::element::f32), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), ::testing::ValuesIn(template_config()), ::testing::ValuesIn(generate_remote_params())), OVRemoteTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp index 9aff6a6bcdfb32..f1d1b2c31e2ec5 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp @@ -26,7 +26,7 @@ const std::vector> padBegins = {{0, 0}, {0, 3}}; const std::vector> padEnds = {{0, 0}, {0, 3}}; const std::vector> dilations = {{1, 1}, {3, 1}}; const std::vector numOutChannels = {1, 5}; -const std::vector padTypes = {ngraph::op::PadType::EXPLICIT, ngraph::op::PadType::VALID}; +const std::vector padTypes = {ov::op::PadType::EXPLICIT, ov::op::PadType::VALID}; const auto conv2DParams_ExplicitPadding = ::testing::Combine(::testing::ValuesIn(kernels), ::testing::ValuesIn(strides), @@ -34,7 +34,7 @@ const auto conv2DParams_ExplicitPadding = ::testing::Combine(::testing::ValuesIn ::testing::ValuesIn(padEnds), ::testing::ValuesIn(dilations), ::testing::ValuesIn(numOutChannels), - ::testing::Values(ngraph::op::PadType::EXPLICIT)); + ::testing::Values(ov::op::PadType::EXPLICIT)); // ! [test_convolution:declare_parameters] const auto conv2DParams_AutoPadValid = ::testing::Combine(::testing::ValuesIn(kernels), @@ -43,7 +43,7 @@ const auto conv2DParams_AutoPadValid = ::testing::Combine(::testing::ValuesIn(ke ::testing::Values(std::vector({0, 0})), ::testing::ValuesIn(dilations), ::testing::ValuesIn(numOutChannels), - ::testing::Values(ngraph::op::PadType::VALID)); + ::testing::Values(ov::op::PadType::VALID)); // ! [test_convolution:instantiate] INSTANTIATE_TEST_SUITE_P(Convolution2D_ExplicitPadding, @@ -85,14 +85,15 @@ const auto conv3DParams_ExplicitPadding = ::testing::Combine(::testing::ValuesIn ::testing::ValuesIn(paddings3d), ::testing::ValuesIn(dilations3d), ::testing::Values(5), - ::testing::Values(ngraph::op::PadType::EXPLICIT)); + ::testing::Values(ov::op::PadType::EXPLICIT)); + const auto conv3DParams_AutoPadValid = ::testing::Combine(::testing::ValuesIn(kernels3d), ::testing::ValuesIn(strides3d), ::testing::Values(std::vector({0, 0, 0})), ::testing::Values(std::vector({0, 0, 0})), ::testing::ValuesIn(dilations3d), ::testing::Values(5), - ::testing::Values(ngraph::op::PadType::VALID)); + ::testing::Values(ov::op::PadType::VALID)); INSTANTIATE_TEST_SUITE_P(smoke_Convolution3D_ExplicitPadding, ConvolutionLayerTest, diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp index 1c2bfa338e78ed..8d034694905bd8 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp @@ -28,7 +28,7 @@ std::vector> inShapesStatic = { }; std::vector> inShapesDynamic = { - {{{ngraph::Dimension(1, 10), 200}, {{2, 200}, {1, 200}}}, {{ngraph::Dimension(1, 10), 200}, {{2, 200}, {5, 200}}}}, + {{{ov::Dimension(1, 10), 200}, {{2, 200}, {1, 200}}}, {{ov::Dimension(1, 10), 200}, {{2, 200}, {5, 200}}}}, }; std::vector netPrecisions = { @@ -37,13 +37,13 @@ std::vector netPrecisions = { ov::element::i32, }; -std::vector secondaryInputTypes = { - ngraph::helpers::InputLayerType::CONSTANT, - ngraph::helpers::InputLayerType::PARAMETER, +std::vector secondaryInputTypes = { + ov::test::utils::InputLayerType::CONSTANT, + ov::test::utils::InputLayerType::PARAMETER, }; -std::vector secondaryInputTypesDynamic = { - ngraph::helpers::InputLayerType::PARAMETER, +std::vector secondaryInputTypesDynamic = { + ov::test::utils::InputLayerType::PARAMETER, }; std::vector opTypes = { @@ -55,19 +55,19 @@ std::vector opTypesDynamic = { ov::test::utils::OpType::VECTOR, }; -std::vector eltwiseOpTypes = {ngraph::helpers::EltwiseTypes::ADD, - ngraph::helpers::EltwiseTypes::MULTIPLY, - ngraph::helpers::EltwiseTypes::SUBTRACT, - ngraph::helpers::EltwiseTypes::DIVIDE, - ngraph::helpers::EltwiseTypes::FLOOR_MOD, - ngraph::helpers::EltwiseTypes::SQUARED_DIFF, - ngraph::helpers::EltwiseTypes::POWER, - ngraph::helpers::EltwiseTypes::MOD}; - -std::vector eltwiseOpTypesDynamic = { - ngraph::helpers::EltwiseTypes::ADD, - ngraph::helpers::EltwiseTypes::MULTIPLY, - ngraph::helpers::EltwiseTypes::SUBTRACT, +std::vector eltwiseOpTypes = {ov::test::utils::EltwiseTypes::ADD, + ov::test::utils::EltwiseTypes::MULTIPLY, + ov::test::utils::EltwiseTypes::SUBTRACT, + ov::test::utils::EltwiseTypes::DIVIDE, + ov::test::utils::EltwiseTypes::FLOOR_MOD, + ov::test::utils::EltwiseTypes::SQUARED_DIFF, + ov::test::utils::EltwiseTypes::POWER, + ov::test::utils::EltwiseTypes::MOD}; + +std::vector eltwiseOpTypesDynamic = { + ov::test::utils::EltwiseTypes::ADD, + ov::test::utils::EltwiseTypes::MULTIPLY, + ov::test::utils::EltwiseTypes::SUBTRACT, }; ov::test::Config additional_config = {}; @@ -108,9 +108,9 @@ std::vector> inShapesSingleThread = { {{2, 1, 2, 1, 2, 2}}, }; -std::vector eltwiseOpTypesSingleThread = { - ngraph::helpers::EltwiseTypes::ADD, - ngraph::helpers::EltwiseTypes::POWER, +std::vector eltwiseOpTypesSingleThread = { + ov::test::utils::EltwiseTypes::ADD, + ov::test::utils::EltwiseTypes::POWER, }; ov::AnyMap additional_config_single_thread = {{"CPU_THREADS_NUM", "1"}}; diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp index 83c03b7a881e3b..6b268c7f59cf04 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp @@ -24,10 +24,10 @@ const std::vector inputStaticShape2D = { }; const std::vector inputDynamicShape2D = { - {{ngraph::Dimension::dynamic(), 10}, {{1, 10}, {2, 10}, {10, 10}}}, - {{ngraph::Dimension(1, 10), 10}, {{1, 10}, {2, 10}, {10, 10}}}, - {{10, ngraph::Dimension::dynamic()}, {{10, 1}, {10, 5}, {10, 10}}}, - {{ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic()}, {{1, 10}, {2, 10}, {10, 10}}}}; + {{ov::Dimension::dynamic(), 10}, {{1, 10}, {2, 10}, {10, 10}}}, + {{ov::Dimension(1, 10), 10}, {{1, 10}, {2, 10}, {10, 10}}}, + {{10, ov::Dimension::dynamic()}, {{10, 1}, {10, 5}, {10, 10}}}, + {{ov::Dimension::dynamic(), ov::Dimension::dynamic()}, {{1, 10}, {2, 10}, {10, 10}}}}; const std::vector axis2D = {-2, -1, 0, 1}; @@ -65,11 +65,8 @@ const std::vector inputStaticShape4D = { }; const std::vector inputDynamicShape4D = { - {{ngraph::Dimension::dynamic(), 100, ngraph::Dimension(1, 10), 1}, {{1, 100, 1, 1}, {100, 100, 5, 1}}}, - {{ngraph::Dimension::dynamic(), - ngraph::Dimension::dynamic(), - ngraph::Dimension::dynamic(), - ngraph::Dimension::dynamic()}, + {{ov::Dimension::dynamic(), 100, ov::Dimension(1, 10), 1}, {{1, 100, 1, 1}, {100, 100, 5, 1}}}, + {{ov::Dimension::dynamic(), ov::Dimension::dynamic(), ov::Dimension::dynamic(), ov::Dimension::dynamic()}, {{1, 100, 1, 1}, {50, 100, 4, 1}, {2, 100, 10, 1}}}, }; @@ -110,12 +107,12 @@ const std::vector inputStaticShape5D = { }; const std::vector inputDynamicShape5D = { - {{ngraph::Dimension::dynamic(), 100, ngraph::Dimension(1, 10), 1, 1}, {{1, 100, 1, 1, 1}, {100, 100, 5, 1, 1}}}, - {{ngraph::Dimension::dynamic(), - ngraph::Dimension::dynamic(), - ngraph::Dimension::dynamic(), - ngraph::Dimension::dynamic(), - ngraph::Dimension::dynamic()}, + {{ov::Dimension::dynamic(), 100, ov::Dimension(1, 10), 1, 1}, {{1, 100, 1, 1, 1}, {100, 100, 5, 1, 1}}}, + {{ov::Dimension::dynamic(), + ov::Dimension::dynamic(), + ov::Dimension::dynamic(), + ov::Dimension::dynamic(), + ov::Dimension::dynamic()}, {{1, 100, 1, 1, 1}, {50, 100, 4, 1, 1}, {2, 100, 10, 1, 1}}}, }; diff --git a/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp b/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp index 3086055af575ad..abdf47a4b8c3b0 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp @@ -6,7 +6,6 @@ #include #include "functional_test_utils/ov_plugin_cache.hpp" -#include "ie_ngraph_utils.hpp" #include "openvino/core/type/element_type.hpp" #include "openvino/runtime/allocator.hpp" #include "openvino/runtime/tensor.hpp" diff --git a/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp b/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp index ea5c3465dbb31b..b4c35bb936a43f 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp @@ -4,15 +4,11 @@ #include -#include -#include -#include -#include -#include #include -#include "../op_reference/base_reference_test.hpp" -#include "ngraph_functions/builders.hpp" +#include "base_reference_test.hpp" +#include "openvino/core/preprocess/pre_post_process.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" using namespace ov; using namespace ov::preprocess; diff --git a/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp b/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp index a8ba3ea35534ea..e691495452d01c 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp @@ -4,15 +4,13 @@ #include -#include -#include -#include -#include -#include #include #include "base_reference_cnn_test.hpp" -#include "ngraph_functions/builders.hpp" +#include "openvino/core/preprocess/pre_post_process.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" +#include "shared_test_classes/single_layer/convert_color_i420.hpp" +#include "shared_test_classes/single_layer/convert_color_nv12.hpp" using namespace ov; using namespace ov::preprocess; From 394e58fafb57e5aab964c4d7a2845ac5e0060fb3 Mon Sep 17 00:00:00 2001 From: Andrew Kwangwoong Park Date: Wed, 20 Sep 2023 08:57:10 +0900 Subject: [PATCH 35/46] [GPU] Fix canonicalization for fused dep's shape (#19667) * [GPU] Fix canonicalization for fused dep's shape Signed-off-by: Andrew Park * Update TC to reproducible on the latest master Signed-off-by: Andrew Park * Fix custom canonicalize shapes for Gather --------- Signed-off-by: Andrew Park --- .../intel_gpu/src/graph/impls/ocl/gather.cpp | 7 +++- .../test_cases/canonicalization_gpu_test.cpp | 39 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/plugins/intel_gpu/src/graph/impls/ocl/gather.cpp b/src/plugins/intel_gpu/src/graph/impls/ocl/gather.cpp index 44842bb4aa8457..e16311614201bb 100644 --- a/src/plugins/intel_gpu/src/graph/impls/ocl/gather.cpp +++ b/src/plugins/intel_gpu/src/graph/impls/ocl/gather.cpp @@ -116,7 +116,12 @@ struct gather_impl : typed_primitive_impl_ocl { out_layout.format = format::adjust_to_rank(out_layout.format, output_pshape.size()); } - return primitive_impl::static_canonicalize_shapes(updated_impl_params); + for (auto& input_layout : updated_impl_params.input_layouts) { + input_layout.set_partial_shape(extend_shape_to_rank_from_end(input_layout.get_partial_shape())); + } + out_layout.set_partial_shape(extend_shape_to_rank_from_end(out_layout.get_partial_shape())); + + return updated_impl_params; } kernel_impl_params canonicalize_shapes(const kernel_impl_params& impl_params) const override { diff --git a/src/plugins/intel_gpu/tests/unit/test_cases/canonicalization_gpu_test.cpp b/src/plugins/intel_gpu/tests/unit/test_cases/canonicalization_gpu_test.cpp index eba4f33c887c6e..400152887e6ce9 100644 --- a/src/plugins/intel_gpu/tests/unit/test_cases/canonicalization_gpu_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/test_cases/canonicalization_gpu_test.cpp @@ -226,6 +226,45 @@ TEST(canonicalization, gather) { } } +struct fusing_gather_eltwise_params { + ov::PartialShape data_shape; + ov::Shape out_shape; + int64_t axis; + int64_t batch_dim; + bool support_neg_ind; +}; + +std::vector> fusing_gather_eltwise_shapes_with_params { + { + {{{}, {}}, {{4624, 4, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {4624, 1, 1, 1}}, {{4624, 1, 1, 1}}}, + {{4624, 4}, {4624}, 1, 0, true} + } +}; + +TEST(canonicalization, fusing_gather_eltwise) { + for (const auto& shapes : fusing_gather_eltwise_shapes_with_params) { + layout input_gather_layout = create_default_layout(shapes.second.data_shape); + layout indices_layout_first = create_default_layout(std::get<0>(shapes.first)[0]); + layout indices_layout_second = create_default_layout(std::get<0>(shapes.first)[0]); + layout input_mul_layout = create_default_layout(std::get<0>(shapes.first)[1]); + + topology topology; + topology.add(input_layout("input", input_gather_layout)); + topology.add(input_layout("indices_first", indices_layout_first)); + topology.add(input_layout("indices_second", indices_layout_second)); + topology.add(input_layout("data", input_mul_layout)); + topology.add(gather("gather_first", input_info("input"), input_info("indices_first"), shapes.second.axis, + shapes.second.out_shape, shapes.second.batch_dim, shapes.second.support_neg_ind)); + topology.add(gather("gather_second", input_info("input"), input_info("indices_second"), shapes.second.axis, + shapes.second.out_shape, shapes.second.batch_dim, shapes.second.support_neg_ind)); + topology.add(eltwise("mul", {input_info("gather_first"), input_info("data")}, eltwise_mode::prod)); + topology.add(eltwise("add", {input_info("gather_second"), input_info("mul")}, eltwise_mode::sum)); + topology.add(reorder("out_reorder", input_info("add"), format::bfyx, data_types::f32)); + + canonicalization_test(topology, "gather_first", std::get<1>(shapes.first), std::get<2>(shapes.first), true); + } +} + struct fusing_gemm_eltwise_params { ov::PartialShape input_gemm_first; ov::PartialShape weights_gemm_first; From 0f18d2a0eaacdc347a2e058d75489a787c05da84 Mon Sep 17 00:00:00 2001 From: Sofya Balandina Date: Wed, 20 Sep 2023 03:05:01 +0100 Subject: [PATCH 36/46] [template] Add device ro props and fix compile_model props test (#19886) --- src/plugins/template/src/plugin.cpp | 11 +++++++++-- .../behavior/ov_executable_network/get_metric.cpp | 2 +- .../src/behavior/ov_plugin/properties_tests.cpp | 14 ++++++-------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/plugins/template/src/plugin.cpp b/src/plugins/template/src/plugin.cpp index b1166c4cea12d7..918bfbfb9b0fe0 100644 --- a/src/plugins/template/src/plugin.cpp +++ b/src/plugins/template/src/plugin.cpp @@ -223,7 +223,9 @@ ov::Any ov::template_plugin::Plugin::get_property(const std::string& name, const ov::device::full_name, ov::device::architecture, ov::device::capabilities, - ov::range_for_async_infer_requests}; + ov::device::type, + ov::range_for_async_infer_requests, + ov::execution_devices}; return ro_properties; }; const auto& default_rw_properties = []() { @@ -259,8 +261,10 @@ ov::Any ov::template_plugin::Plugin::get_property(const std::string& name, const return decltype(ov::device::full_name)::value_type(device_name); } else if (ov::device::architecture == name) { // TODO: return device architecture for device specified by DEVICE_ID config - std::string arch = "TEMPLATE"; + std::string arch = get_device_name(); return decltype(ov::device::architecture)::value_type(arch); + } else if (ov::device::type == name) { + return decltype(ov::device::type)::value_type(ov::device::Type::INTEGRATED); } else if (ov::internal::caching_properties == name) { std::vector caching_properties = {ov::device::architecture}; return decltype(ov::internal::caching_properties)::value_type(caching_properties); @@ -268,6 +272,9 @@ ov::Any ov::template_plugin::Plugin::get_property(const std::string& name, const // TODO: fill actual list of supported capabilities: e.g. Template device supports only FP32 and EXPORT_IMPORT std::vector capabilities = {ov::device::capability::FP32, ov::device::capability::EXPORT_IMPORT}; return decltype(ov::device::capabilities)::value_type(capabilities); + } else if (ov::execution_devices == name) { + std::string dev = get_device_name(); + return decltype(ov::execution_devices)::value_type{dev}; } else if (ov::range_for_async_infer_requests == name) { // TODO: fill with actual values using uint = unsigned int; diff --git a/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_executable_network/get_metric.cpp b/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_executable_network/get_metric.cpp index ea0d0c25ad814c..3448f8d355161f 100644 --- a/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_executable_network/get_metric.cpp +++ b/src/tests/functional/plugin/conformance/test_runner/api_conformance_runner/src/behavior/ov_executable_network/get_metric.cpp @@ -15,7 +15,7 @@ using namespace ov::test::conformance; // INSTANTIATE_TEST_SUITE_P( - ov_compiled_model, OVClassCompiledModelGetPropertyTest, + ov_compiled_model_mandatory, OVClassCompiledModelGetPropertyTest, ::testing::ValuesIn(return_all_possible_device_combination())); // diff --git a/src/tests/functional/plugin/shared/src/behavior/ov_plugin/properties_tests.cpp b/src/tests/functional/plugin/shared/src/behavior/ov_plugin/properties_tests.cpp index b5cbff685b6340..349016b3fd0bed 100644 --- a/src/tests/functional/plugin/shared/src/behavior/ov_plugin/properties_tests.cpp +++ b/src/tests/functional/plugin/shared/src/behavior/ov_plugin/properties_tests.cpp @@ -208,9 +208,7 @@ TEST_P(OVSetPropComplieModleGetPropTests, SetPropertyAndComplieModelWithPropsWor std::vector OVPropertiesTestsWithCompileModelProps::getROMandatoryProperties() { std::vector res; - res.push_back({{ov::PropertyName(ov::model_name.name(), ov::model_name.mutability), nullptr}}); - res.push_back({{ov::PropertyName(ov::device::full_name.name(), ov::model_name.mutability), nullptr}}); - res.push_back({{ov::PropertyName(ov::optimal_number_of_infer_requests.name(), ov::optimal_number_of_infer_requests.mutability), nullptr}}); + res.push_back({{ov::PropertyName(ov::device::full_name.name(), ov::device::full_name.mutability), nullptr}}); res.push_back({{ov::PropertyName(ov::device::architecture.name(), ov::device::architecture.mutability), nullptr}}); res.push_back({{ov::PropertyName(ov::device::type.name(), ov::device::type.mutability), nullptr}}); res.push_back({{ov::PropertyName(ov::execution_devices.name(), ov::execution_devices.mutability), nullptr}}); @@ -286,11 +284,6 @@ std::vector OVPropertiesTestsWithCompileModelProps::getRWMandatoryPr } } - if (props.empty() || std::find(props.begin(), props.end(), ov::enable_mmap.name()) != props.end()) { - res.push_back({ov::enable_mmap(true)}); - res.push_back({ov::enable_mmap(false)}); - } - if (props.empty() || std::find(props.begin(), props.end(), ov::streams::num.name()) != props.end()) { res.push_back({ov::streams::num(3)}); } @@ -332,6 +325,11 @@ std::vector OVPropertiesTestsWithCompileModelProps::getRWOptionalPro } } + if (props.empty() || std::find(props.begin(), props.end(), ov::enable_mmap.name()) != props.end()) { + res.push_back({ov::enable_mmap(true)}); + res.push_back({ov::enable_mmap(false)}); + } + return res; } From 5d8687ae30e394e89ed950baaa9aff9139635de1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Sep 2023 10:31:01 +0400 Subject: [PATCH 37/46] Bump SimenB/github-actions-cpu-cores from 1 to 2 (#19965) Bumps [SimenB/github-actions-cpu-cores](https://github.com/simenb/github-actions-cpu-cores) from 1 to 2. - [Release notes](https://github.com/simenb/github-actions-cpu-cores/releases) - [Commits](https://github.com/simenb/github-actions-cpu-cores/compare/v1...v2) --- updated-dependencies: - dependency-name: SimenB/github-actions-cpu-cores dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/linux_onnxruntime.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux_onnxruntime.yml b/.github/workflows/linux_onnxruntime.yml index 5a96a821e92080..32ab86cb4ddd39 100644 --- a/.github/workflows/linux_onnxruntime.yml +++ b/.github/workflows/linux_onnxruntime.yml @@ -96,7 +96,7 @@ jobs: # - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v1 + uses: SimenB/github-actions-cpu-cores@v2 id: cpu-cores - name: CMake configure From a558ebd4bcfee0972659481ed14ba39dc2e22269 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Sep 2023 10:31:34 +0400 Subject: [PATCH 38/46] Bump actions/checkout from 3 to 4 (#19964) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/linux_onnxruntime.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux_onnxruntime.yml b/.github/workflows/linux_onnxruntime.yml index 32ab86cb4ddd39..178aae4fefac6b 100644 --- a/.github/workflows/linux_onnxruntime.yml +++ b/.github/workflows/linux_onnxruntime.yml @@ -51,7 +51,7 @@ jobs: INSTALL_DIR: ${{ github.workspace }}/install/openvino steps: - name: Clone OpenVINO - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: path: 'openvino' submodules: 'true' From 7fe195a459cd0285ea66335e1f4d735831bfd88f Mon Sep 17 00:00:00 2001 From: Zhang Yi Date: Wed, 20 Sep 2023 14:35:22 +0800 Subject: [PATCH 39/46] [Doc]Update cmake option for MLAS (#19963) * [Doc]Update cmake option for MLAS * Update docs/dev/cmake_options_for_custom_compilation.md Co-authored-by: Ilya Lavrenov --------- Co-authored-by: Ilya Lavrenov --- docs/dev/cmake_options_for_custom_compilation.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/dev/cmake_options_for_custom_compilation.md b/docs/dev/cmake_options_for_custom_compilation.md index 1b4f3b7eb5752b..847997e067d5c3 100644 --- a/docs/dev/cmake_options_for_custom_compilation.md +++ b/docs/dev/cmake_options_for_custom_compilation.md @@ -114,6 +114,9 @@ This document provides description and default values for CMake options that can * `OFF` is default, because it increases binary size. * `SELECTIVE_BUILD` enables [[Conditional compilation|ConditionalCompilation]] feature. * `OFF` is default. +* `ENABLE_MLAS_FOR_CPU` enables MLAS library for CPU plugin + * `ON` is default for x86_64 and AARCH64 platforms + * Affects only OpenVINO CPU plugin ## Building with OpenCV From c67c0663fca88e172cac52553a04a768a36b4984 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Wed, 20 Sep 2023 11:16:15 +0400 Subject: [PATCH 40/46] Use target python packages (#19928) --- src/bindings/python/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/bindings/python/CMakeLists.txt b/src/bindings/python/CMakeLists.txt index a273184c4b8d1d..b46eaaf9883e16 100644 --- a/src/bindings/python/CMakeLists.txt +++ b/src/bindings/python/CMakeLists.txt @@ -33,7 +33,7 @@ function(ov_check_python_build_conditions) endif() # Try to find python3 and its libs - find_host_package(PythonInterp 3 ${find_package_mode}) + find_package(PythonInterp 3 ${find_package_mode}) if(PYTHONINTERP_FOUND) if(PYTHON_VERSION_MINOR GREATER_EQUAL 11) set(pybind11_min_version 2.9.2) @@ -56,14 +56,14 @@ function(ov_check_python_build_conditions) if(EXISTS ${pybind11_tools_dir}) list(APPEND CMAKE_MODULE_PATH ${pybind11_tools_dir}) else() - find_host_package(pybind11 ${pybind11_min_version} QUIET) + find_package(pybind11 ${pybind11_min_version} QUIET) if(pybind11_FOUND) list(APPEND CMAKE_MODULE_PATH "${pybind11_DIR}") endif() endif() # use libraries with the same version as python itself set(PYBIND11_PYTHON_VERSION ${PYTHON_VERSION_STRING}) - find_host_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} EXACT ${find_package_mode}) + find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} EXACT ${find_package_mode}) set(PYTHONLIBSNEW_FOUND ${PYTHONLIBS_FOUND} PARENT_SCOPE) endfunction() # try to find python libraries @@ -71,7 +71,7 @@ function(ov_check_python_build_conditions) if(PYTHONLIBSNEW_FOUND) # clear Python_ADDITIONAL_VERSIONS to find only python library matching PYTHON_EXECUTABLE unset(Python_ADDITIONAL_VERSIONS CACHE) - find_host_package(PythonLibs ${PYTHON_VERSION_STRING} EXACT ${find_package_mode}) + find_package(PythonLibs ${PYTHON_VERSION_STRING} EXACT ${find_package_mode}) endif() if(NOT PYTHONLIBS_FOUND) message(${message_mode} "Python development libraries are not found. OpenVINO Python API will be turned off (ENABLE_PYTHON is OFF)") From 2c88fbf798b43a16bceed64430f6d4d0871a2ac5 Mon Sep 17 00:00:00 2001 From: Ekaterina Aidova Date: Wed, 20 Sep 2023 11:26:18 +0400 Subject: [PATCH 41/46] [PT FE]: support mixed precision in aten::min/max (#19936) * [PT FE]: support mixed precision in aten::min/max * fix eltwise dtype alignment for float16 --- src/frontends/pytorch/src/op/min_max.cpp | 2 + src/frontends/pytorch/src/utils.cpp | 8 ++-- .../pytorch_tests/pytorch_layer_test_class.py | 7 ++-- tests/layer_tests/pytorch_tests/test_add.py | 6 +++ tests/layer_tests/pytorch_tests/test_div.py | 6 +++ .../layer_tests/pytorch_tests/test_min_max.py | 40 ++++++++++++++----- tests/layer_tests/pytorch_tests/test_mul.py | 6 +++ 7 files changed, 57 insertions(+), 18 deletions(-) diff --git a/src/frontends/pytorch/src/op/min_max.cpp b/src/frontends/pytorch/src/op/min_max.cpp index ad5c8224d3e143..c6b63f11e25d9f 100644 --- a/src/frontends/pytorch/src/op/min_max.cpp +++ b/src/frontends/pytorch/src/op/min_max.cpp @@ -33,6 +33,7 @@ OutputVector translate_max(const NodeContext& context) { // torch.max(input, other) if (context.input_is_none(2)) { auto y = context.get_input(1); + align_eltwise_input_types(context, x, y, true); return {context.mark_node(std::make_shared(x, y))}; } // torch.max(input, dim, keepdim), returns values and indicies @@ -62,6 +63,7 @@ OutputVector translate_min(const NodeContext& context) { // torch.min(input, other) if (context.input_is_none(2)) { auto y = context.get_input(1); + align_eltwise_input_types(context, x, y, true); return {context.mark_node(std::make_shared(x, y))}; } // torch.min(input, dim, keepdim), returns values and indicies diff --git a/src/frontends/pytorch/src/utils.cpp b/src/frontends/pytorch/src/utils.cpp index 386ac393d35772..afd9b5ebf85216 100644 --- a/src/frontends/pytorch/src/utils.cpp +++ b/src/frontends/pytorch/src/utils.cpp @@ -422,9 +422,9 @@ void align_eltwise_input_types(const NodeContext& context, Output& lhs, Ou // if div we need to also align float types to highest bitness regardless of scalar if (!align_scalars) lhs_dst_type = element::f32; - rhs_dst_type = element::f32; + rhs_dst_type = lhs_type; } else if (is_rhs_scalar && !lhs_type.is_real() && rhs_type.is_real()) { - lhs_dst_type = element::f32; + lhs_dst_type = rhs_type; // if div we need to also align float types to highest bitness regardless of scalar if (!align_scalars) rhs_dst_type = element::f32; @@ -437,9 +437,9 @@ void align_eltwise_input_types(const NodeContext& context, Output& lhs, Ou } if (!lhs_dst_type.is_real() && rhs_dst_type.is_real()) { - lhs_dst_type = element::f32; + lhs_dst_type = rhs_dst_type; } else if (lhs_dst_type.is_real() && !rhs_dst_type.is_real()) { - rhs_dst_type = element::f32; + rhs_dst_type = lhs_dst_type; } // Align bool to other type if (lhs_dst_type == element::boolean) { diff --git a/tests/layer_tests/pytorch_tests/pytorch_layer_test_class.py b/tests/layer_tests/pytorch_tests/pytorch_layer_test_class.py index 0f5638ea8c8d38..00cdc427056518 100644 --- a/tests/layer_tests/pytorch_tests/pytorch_layer_test_class.py +++ b/tests/layer_tests/pytorch_tests/pytorch_layer_test_class.py @@ -25,7 +25,8 @@ class PytorchLayerTest: "int64": Type.i64, "int16": Type.i16, "int8": Type.i8, - "uint8": Type.u8 + "uint8": Type.u8, + "float16": Type.f16 } @staticmethod @@ -120,8 +121,8 @@ def use_torch_compile_backend(): continue assert ov_type == fw_type, f"dtype validation failed: {ov_type} != {fw_type}" continue - assert torch.tensor(np.array( - ov_tensor)).dtype == fw_tensor.dtype, f"dtype validation failed: {torch.tensor(np.array(ov_tensor)).dtype} != {fw_tensor.dtype}" + ov_tensor_fw_format = torch.tensor(np.array(ov_tensor)) + assert ov_tensor_fw_format.dtype == fw_tensor.dtype, f"dtype validation failed: {ov_tensor_fw_format.dtype} != {fw_tensor.dtype}" # Compare Ie results with Framework results fw_eps = custom_eps if precision == 'FP32' else 5e-2 diff --git a/tests/layer_tests/pytorch_tests/test_add.py b/tests/layer_tests/pytorch_tests/test_add.py index 8c3026a9c2c16d..7cf243b0577bcb 100644 --- a/tests/layer_tests/pytorch_tests/test_add.py +++ b/tests/layer_tests/pytorch_tests/test_add.py @@ -96,6 +96,12 @@ def forward3(self, lhs, rhs): [torch.float32, torch.int32], [torch.float32, torch.int64], [torch.float32, torch.float64], + [torch.float16, torch.uint8], + [torch.uint8, torch.float16], + [torch.float16, torch.int32], + [torch.int32, torch.float16], + [torch.float16, torch.int64], + [torch.int64, torch.float16] ]) @pytest.mark.parametrize(("lhs_shape", "rhs_shape"), [([2, 3], [2, 3]), ([2, 3], []), diff --git a/tests/layer_tests/pytorch_tests/test_div.py b/tests/layer_tests/pytorch_tests/test_div.py index 48eaba1a89bb3f..d6e696b62882d5 100644 --- a/tests/layer_tests/pytorch_tests/test_div.py +++ b/tests/layer_tests/pytorch_tests/test_div.py @@ -98,6 +98,12 @@ def forward3(self, lhs, rhs): [torch.float32, torch.int32], [torch.float32, torch.int64], [torch.float32, torch.float64], + [torch.float16, torch.uint8], + [torch.uint8, torch.float16], + [torch.float16, torch.int32], + [torch.int32, torch.float16], + [torch.float16, torch.int64], + [torch.int64, torch.float16] ]) @pytest.mark.parametrize(("lhs_shape", "rhs_shape"), [([2, 3], [2, 3]), ([2, 3], []), diff --git a/tests/layer_tests/pytorch_tests/test_min_max.py b/tests/layer_tests/pytorch_tests/test_min_max.py index 211cf76d06a472..1d03c837380ed3 100644 --- a/tests/layer_tests/pytorch_tests/test_min_max.py +++ b/tests/layer_tests/pytorch_tests/test_min_max.py @@ -7,19 +7,27 @@ class TestMinMax(PytorchLayerTest): - def _prepare_input(self, second_input=False): + def _prepare_input(self, input_dtype="float32", second_input=False, second_input_dtype="float32"): import numpy as np if not second_input: - return (np.random.randn(1, 3, 10, 10).astype(np.float32),) - return (np.random.randn(1, 3, 10, 10).astype(np.float32), np.random.randn(1, 3, 10, 10).astype(np.float32)) + return (np.random.randn(1, 3, 10, 10).astype(input_dtype),) + return (np.random.randn(1, 3, 10, 10).astype(input_dtype), np.random.randn(1, 3, 10, 10).astype(second_input_dtype)) - def create_model(self, op_type, axes, keep_dims, single_input=True): + def create_model(self, op_type, axes, keep_dims, single_input=True, dtypes=("float32", "float32")): import torch op_types = { 'max': torch.max, 'min': torch.min } + dtypes_map = { + "float32": torch.float32, + "float64": torch.float64, + "int32": torch.int32, + "int64": torch.int64, + "uint8": torch.uint8 + } + op = op_types[op_type] class aten_min_max(torch.nn.Module): @@ -41,17 +49,23 @@ def forward(self, x): return self.op(x, self.axes, self.keep_dims) class aten_min_max_2args(torch.nn.Module): - def __init__(self, op): + def __init__(self, op, l_dtype, r_dtype): super(aten_min_max_2args, self).__init__() self.op = op + self.l_dtype = l_dtype + self.r_dtype = r_dtype def forward(self, x, y): - return self.op(x, y) + return self.op(x.to(self.l_dtype), y.to(self.r_dtype)) ref_net = None if axes is None and keep_dims is None: - model_cls = aten_min_max( - op) if single_input else aten_min_max_2args(op) + if single_input: + model_cls = aten_min_max(op) + else: + l_dtype = dtypes_map[dtypes[0]] + r_dtype = dtypes_map[dtypes[1]] + model_cls = aten_min_max_2args(op, l_dtype, r_dtype) else: model_cls = aten_min_max_3args(op, axes, keep_dims) @@ -66,11 +80,15 @@ def test_reduce_min_max(self, axes, keep_dims, op_type, ie_device, precision, ir single_input=True), ie_device, precision, ir_version) @pytest.mark.parametrize("op_type", ['min', 'max']) + @pytest.mark.parametrize("second_input_dtype", ["float32", "int32", "float64", "int64", "uint8"]) + @pytest.mark.parametrize("first_input_dtype", ["float32", "int32", "float64", "int64", "uint8"]) @pytest.mark.nightly @pytest.mark.precommit - def test_min_max(self, op_type, ie_device, precision, ir_version): - self._test(*self.create_model(op_type, None, None, single_input=False), - ie_device, precision, ir_version, kwargs_to_prepare_input={"second_input": True}) + def test_min_max(self, op_type, first_input_dtype, second_input_dtype, ie_device, precision, ir_version): + self._test(*self.create_model(op_type, None, None, single_input=False, dtypes=(first_input_dtype, second_input_dtype)), + ie_device, precision, ir_version, kwargs_to_prepare_input= + {"second_input": True, "input_dtype": first_input_dtype, "second_input_dtype": second_input_dtype} + ) class TestPrimMax(PytorchLayerTest): diff --git a/tests/layer_tests/pytorch_tests/test_mul.py b/tests/layer_tests/pytorch_tests/test_mul.py index 8e958f095697f0..f22fd7b03bc0cb 100644 --- a/tests/layer_tests/pytorch_tests/test_mul.py +++ b/tests/layer_tests/pytorch_tests/test_mul.py @@ -87,6 +87,12 @@ def forward3(self, lhs, rhs): [torch.float32, torch.int32], [torch.float32, torch.int64], [torch.float32, torch.float64], + [torch.float16, torch.uint8], + [torch.uint8, torch.float16], + [torch.float16, torch.int32], + [torch.int32, torch.float16], + [torch.float16, torch.int64], + [torch.int64, torch.float16] ]) @pytest.mark.parametrize(("lhs_shape", "rhs_shape"), [([2, 3], [2, 3]), ([2, 3], []), From 604aed1384f95b164e6e152dada9c4602029902f Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Wed, 20 Sep 2023 12:24:40 +0400 Subject: [PATCH 42/46] Updated Windows build docs (#17631) --- docs/dev/build_windows.md | 33 +++++---------------------------- docs/dev/static_libaries.md | 2 +- 2 files changed, 6 insertions(+), 29 deletions(-) diff --git a/docs/dev/build_windows.md b/docs/dev/build_windows.md index e63d4830904086..e598fdd33f04e7 100644 --- a/docs/dev/build_windows.md +++ b/docs/dev/build_windows.md @@ -25,29 +25,17 @@ Supported configurations: ```sh git clone https://github.com/openvinotoolkit/openvino.git cd openvino - git submodule update --init --recursive - ``` - (Extra for WoA) To build on Windows on ARM with ARM plugin: - ```sh - git clone https://github.com/openvinotoolkit/openvino_contrib.git - cd openvino_contrib - git submodule update --init --recursive + git submodule update --init ``` 2. Create build directory: ```sh mkdir build && cd build ``` -3. In the `build` directory, run `cmake` to fetch project dependencies and generate a Visual Studio solution. +3. In the `build` directory, run `cmake` to fetch project dependencies and generate a Visual Studio solution: - On Windows x86 64-bits: - ```sh - cmake -G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Release - ``` - - On Windows on ARM for ARM64 architecture: ```sh - cmake -G "Visual Studio 16 2019" -DOPENVINO_EXTRA_MODULES=/modules/arm_plugin -DCMAKE_BUILD_TYPE=Release + cmake -G "Visual Studio 17 2022" ``` > **HINT**: **Generating PDB Files and Debugging Your Build**
    @@ -62,16 +50,8 @@ Supported configurations: ### Additional Build Options -- Internal JIT GEMM implementation is used by default. - -- Threading Building Blocks (TBB) is used by default. To build Inference Engine with OpenMP threading, set the `-DTHREADING=OMP` option. - -- Required versions of TBB and OpenCV packages are downloaded automatically by the CMake-based script. If you want to use the automatically-downloaded packages but you have already installed TBB or OpenCV packages configured in your environment, you may need to clean the `TBBROOT` and `OpenCV_DIR` environment variables before running the `cmake` command; otherwise they won'tnbe downloaded and the build may fail if incompatible versions were installed. - -- If the CMake-based build script can not find and download the OpenCV package that is supported on your platform, or if you want to use a custom build of the OpenCV library, refer to the [Use Custom OpenCV Builds](./cmake_options_for_custom_compilation.md#Building-with-custom-OpenCV) section for details. - - To build the OpenVINO Runtime Python API: - 1. First, install all additional packages (e.g., cython and opencv) listed in the file: + 1. First, install all additional packages (e.g., cython) listed in the file: ```sh pip install -r \src\bindings\python\src\compatibility\openvino\requirements-dev.txt ``` @@ -95,15 +75,12 @@ Supported configurations: pip install build/wheel/openvino-2023.0.0-9612-cp11-cp11-win_arm64.whl ``` -- OpenVINO runtime compilation options: - `-DENABLE_OV_ONNX_FRONTEND=ON` enables the building of the ONNX importer. - ### Building OpenVINO with Ninja* Build System ```sh call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat" cmake -G Ninja -Wno-dev -DCMAKE_BUILD_TYPE=Release .. -cmake --build . --config Release +ninja . ``` ## See also diff --git a/docs/dev/static_libaries.md b/docs/dev/static_libaries.md index e001b6f24c5fc1..e538a37555f558 100644 --- a/docs/dev/static_libaries.md +++ b/docs/dev/static_libaries.md @@ -135,7 +135,7 @@ cmake -DCMAKE_TOOLCHAIN_FILE=/cmake/toolchains/mt.runtime.w * The enabled and tested capabilities of OpenVINO Runtime in a static build: * OpenVINO common runtime - work with `ov::Model`, perform model loading on particular device - * CPU and GNA inference plugins (**GPU and MYRIAD are not enabled**) + * CPU and GNA inference plugins (**GPU is not enabled**) * MULTI, HETERO, AUTO, and BATCH inference modes * IR, ONNX, PDPD, and TF frontends to read `ov::Model` * Static build support for building static libraries only for OpenVINO Runtime libraries. All other third-party prebuilt dependencies remain in the same format: From f53d880b2c9cd08b20eecee59e6e5d296c875154 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Wed, 20 Sep 2023 13:52:05 +0400 Subject: [PATCH 43/46] Updated dependabot config for GHA updates (#19970) --- .github/dependabot.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 74661a77af5794..80e95ea5a9fe73 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -154,6 +154,7 @@ updates: time: "09:00" timezone: "Asia/Dubai" assignees: - - "ilyachur" + - "akashchi" + - "mryzhov" - "ilya-lavrenov" open-pull-requests-limit: 3 From 228ea4474313756b88b2376668aed26aaf037d72 Mon Sep 17 00:00:00 2001 From: Fang Xu Date: Wed, 20 Sep 2023 19:17:48 +0530 Subject: [PATCH 44/46] [CPU] Use omp section instead of task in UpdateNodes logic (#19831) --- src/plugins/intel_cpu/src/graph.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/plugins/intel_cpu/src/graph.cpp b/src/plugins/intel_cpu/src/graph.cpp index aa8acb24267c42..ed18c01c848af1 100644 --- a/src/plugins/intel_cpu/src/graph.cpp +++ b/src/plugins/intel_cpu/src/graph.cpp @@ -1308,17 +1308,16 @@ class UpdateNodes : public UpdateNodesBase { auto startCounter = m_prepareCounter.load(); #pragma omp parallel - #pragma omp single + #pragma omp sections { - #pragma omp task + #pragma omp section { updateDynParams(startCounter, stopIndx); } - #pragma omp task + #pragma omp section { updateShapes(startCounter, stopIndx); } - #pragma omp taskwait } } }; From 85584760476adb9d73172747729f03b381b5eacf Mon Sep 17 00:00:00 2001 From: Aleksandr Voron Date: Wed, 20 Sep 2023 15:57:34 +0200 Subject: [PATCH 45/46] [CPU] [ARM] Enable SoftMax SLT tests on ARM (#19823) --- .../single_layer_tests/classes/softmax.cpp | 75 ++++++++++++++++ .../single_layer_tests/classes/softmax.hpp | 41 +++++++++ .../{ => instances/common}/softmax.cpp | 89 ++----------------- 3 files changed, 122 insertions(+), 83 deletions(-) create mode 100644 src/plugins/intel_cpu/tests/functional/single_layer_tests/classes/softmax.cpp create mode 100644 src/plugins/intel_cpu/tests/functional/single_layer_tests/classes/softmax.hpp rename src/plugins/intel_cpu/tests/functional/single_layer_tests/{ => instances/common}/softmax.cpp (72%) diff --git a/src/plugins/intel_cpu/tests/functional/single_layer_tests/classes/softmax.cpp b/src/plugins/intel_cpu/tests/functional/single_layer_tests/classes/softmax.cpp new file mode 100644 index 00000000000000..ac8a7149f88253 --- /dev/null +++ b/src/plugins/intel_cpu/tests/functional/single_layer_tests/classes/softmax.cpp @@ -0,0 +1,75 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "softmax.hpp" +#include "gtest/gtest.h" +#include "test_utils/cpu_test_utils.hpp" + +using namespace InferenceEngine; +using namespace CPUTestUtils; +using namespace ngraph::helpers; +using namespace ov::test; + +namespace CPULayerTestsDefinitions { + +std::string SoftMaxLayerCPUTest::getTestCaseName(const testing::TestParamInfo& obj) { + CPUSpecificParams cpuParams; + ElementType inType; + SoftMaxConfig config; + std::string targetDevice; + std::tie(inType, config, targetDevice, cpuParams) = obj.param; + + std::ostringstream result; + result << "netPRC=" << inType << "_"; + result << "IS=" << ov::test::utils::partialShape2str({config.inputShape.first}) << "_"; + result << "TS="; + for (const auto& shape : config.inputShape.second) { + result << "("; + result << ov::test::utils::vec2str(shape); + result << ")_"; + } + result << "axis=" << config.axis << "_"; + result << "trgDev=" << targetDevice; + result << CPUTestsBase::getTestCaseName(cpuParams); + + return result.str(); +} + +void SoftMaxLayerCPUTest::SetUp() { + ElementType inType; + SoftMaxConfig config; + CPUSpecificParams cpuParams; + std::tie(inType, config, targetDevice, cpuParams) = this->GetParam(); + + std::tie(inFmts, outFmts, priority, selectedType) = cpuParams; + if (selectedType.empty()) { + selectedType = getPrimitiveType(); + } + + if (inType == ElementType::bf16) { + rel_threshold = 2e-2f; + } + selectedType = makeSelectedTypeStr(selectedType, inType); + init_input_shapes({config.inputShape}); + ov::ParameterVector params; + for (auto&& shape : inputDynamicShapes) { + params.push_back(std::make_shared(inType, shape)); + } + const auto paramOuts = + ngraph::helpers::convert2OutputVector(ngraph::helpers::castOps2Nodes(params)); + + const auto softMax = std::make_shared(paramOuts.at(0), config.axis); + + function = makeNgraphFunction(inType, params, softMax, "SoftMax"); +} + +TEST_P(SoftMaxLayerCPUTest, CompareWithRefs) { + run(); + CheckPluginRelatedResults(compiledModel, "Softmax"); +} + +namespace SoftMax { + +} // namespace SoftMax +} // namespace CPULayerTestsDefinitions diff --git a/src/plugins/intel_cpu/tests/functional/single_layer_tests/classes/softmax.hpp b/src/plugins/intel_cpu/tests/functional/single_layer_tests/classes/softmax.hpp new file mode 100644 index 00000000000000..5465d1c06859c0 --- /dev/null +++ b/src/plugins/intel_cpu/tests/functional/single_layer_tests/classes/softmax.hpp @@ -0,0 +1,41 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include + +#include "shared_test_classes/base/ov_subgraph.hpp" +#include "test_utils/cpu_test_utils.hpp" + +using namespace InferenceEngine; +using namespace CPUTestUtils; +using namespace ov::test; + +namespace CPULayerTestsDefinitions { + +struct SoftMaxConfig { + ov::test::InputShape inputShape; + size_t axis; +}; + +typedef std::tuple + softmaxCPUTestParams; + +class SoftMaxLayerCPUTest : public testing::WithParamInterface, + virtual public SubgraphBaseTest, + public CPUTestsBase { +public: + static std::string getTestCaseName(const testing::TestParamInfo& obj); + +protected: + void SetUp() override; +}; + +namespace SoftMax { + + +} // namespace SoftMax +} // namespace CPULayerTestsDefinitions diff --git a/src/plugins/intel_cpu/tests/functional/single_layer_tests/softmax.cpp b/src/plugins/intel_cpu/tests/functional/single_layer_tests/instances/common/softmax.cpp similarity index 72% rename from src/plugins/intel_cpu/tests/functional/single_layer_tests/softmax.cpp rename to src/plugins/intel_cpu/tests/functional/single_layer_tests/instances/common/softmax.cpp index 70484a14b25c73..03655fd40a536d 100644 --- a/src/plugins/intel_cpu/tests/functional/single_layer_tests/softmax.cpp +++ b/src/plugins/intel_cpu/tests/functional/single_layer_tests/instances/common/softmax.cpp @@ -1,93 +1,17 @@ -// Copyright (C) 2018-2023 Intel Corporation +// Copyright (C) 2023 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -#include - -#include "shared_test_classes/base/ov_subgraph.hpp" +#include "single_layer_tests/classes/softmax.hpp" #include "test_utils/cpu_test_utils.hpp" using namespace InferenceEngine; using namespace CPUTestUtils; +using namespace ngraph::helpers; using namespace ov::test; namespace CPULayerTestsDefinitions { - -struct SoftMaxConfig { - ov::test::InputShape inputShape; - size_t axis; -}; - -typedef std::tuple - softmaxCPUTestParams; - -class SoftMaxLayerCPUTest : public testing::WithParamInterface, - virtual public SubgraphBaseTest, - public CPUTestsBase { -public: - static std::string getTestCaseName(const testing::TestParamInfo& obj) { - CPUSpecificParams cpuParams; - ElementType inType; - SoftMaxConfig config; - std::string targetDevice; - std::tie(inType, config, targetDevice, cpuParams) = obj.param; - - std::ostringstream result; - result << "netPRC=" << inType << "_"; - result << "IS=" << ov::test::utils::partialShape2str({config.inputShape.first}) << "_"; - result << "TS="; - for (const auto& shape : config.inputShape.second) { - result << "("; - result << ov::test::utils::vec2str(shape); - result << ")_"; - } - result << "axis=" << config.axis << "_"; - result << "trgDev=" << targetDevice; - result << CPUTestsBase::getTestCaseName(cpuParams); - - return result.str(); - } - -protected: - void SetUp() override { - ElementType inType; - SoftMaxConfig config; - CPUSpecificParams cpuParams; - std::tie(inType, config, targetDevice, cpuParams) = this->GetParam(); - - std::tie(inFmts, outFmts, priority, selectedType) = cpuParams; - if (selectedType.empty()) { - selectedType = getPrimitiveType(); - } - - if (inType == ElementType::bf16) { - rel_threshold = 2e-2f; - } - selectedType = makeSelectedTypeStr(selectedType, inType); - init_input_shapes({config.inputShape}); - ov::ParameterVector params; - for (auto&& shape : inputDynamicShapes) { - params.push_back(std::make_shared(inType, shape)); - } - const auto paramOuts = - ngraph::helpers::convert2OutputVector(ngraph::helpers::castOps2Nodes(params)); - - const auto softMax = std::make_shared(paramOuts.at(0), config.axis); - - function = makeNgraphFunction(inType, params, softMax, "SoftMax"); - } -}; - -TEST_P(SoftMaxLayerCPUTest, CompareWithRefs) { - run(); - CheckPluginRelatedResults(compiledModel, "Softmax"); -} - -namespace { -// not optimized cpu spec +namespace SoftMax { const auto notOptimizedCPUSpec = CPUSpecificParams{{}, {}, {"ref_any"}, "ref_any"}; const std::vector optimizedConfigsFP32 = { @@ -222,6 +146,5 @@ INSTANTIATE_TEST_SUITE_P(smoke_SoftMax_Unsupported_CPU, SoftMaxLayerCPUTest, UnsupportedParams, SoftMaxLayerCPUTest::getTestCaseName); - -} // namespace -} // namespace CPULayerTestsDefinitions +} // namespace SoftMax +} // namespace CPULayerTestsDefinitions \ No newline at end of file From c1a8380052f777d82c97a3c30f131a3771f3635a Mon Sep 17 00:00:00 2001 From: Evgenya Nugmanova Date: Wed, 20 Sep 2023 18:00:07 +0400 Subject: [PATCH 46/46] Symbolic shape inference and graph optimizations (#19392) * Symbolic shape inference and graph optimizations - Prepares a place in CommonOptimizations pipeline for symbolic optimizations - Introduces symbolic propagation and symbolic optimizations for ChainedMaximum, NopBroadcast and shape sub-graph optimization - Introduces utility runtime info for TableOfEquivalence passing and disabling of value invalidation during shape inference * Executes NgramFusion in a symbolic environment. Relaxes Ngram fusion pattern utilizing symbolic knowledge * Remove debug model visualization * rt_info copying to new Add operation * Fix visualization and place validation in nicer place in symbolic transformation * Fix Slice operation not to propagate labels if input and output dimension is fully dynamic * Covering Vladislav comments * Replace value invalidation followed by validation to revalidation since it does the same thing * Adding back invalidation of cached values to Symbolic Propagation pass * Fix StridedSlice label propagation. Code style * Update src/common/transformations/tests/symbolic_transformations/nop_broadcast.cpp --- .../simplify_shape_of_sub_graph.hpp | 4 + .../chained_maximum.hpp | 26 ++ .../label_optimization.hpp | 37 +++ .../nop_broadcast.hpp | 25 ++ .../symbolic_optimizations.hpp | 50 ++++ .../symbolic_transformations/utils.hpp | 43 +++ .../include/transformations/utils/utils.hpp | 28 +- .../common_optimizations.cpp | 4 +- .../moc_transformations.cpp | 2 +- .../common_optimizations/nop_elimination.cpp | 3 +- .../simplify_shape_of_sub_graph.cpp | 3 + .../chained_maximum.cpp | 50 ++++ .../label_optimization.cpp | 265 ++++++++++++++++++ .../nop_broadcast.cpp | 61 ++++ .../symbolic_optimizations.cpp | 146 ++++++++++ .../symbolic_transformations/utils.cpp | 34 +++ .../src/transformations/utils/utils.cpp | 22 +- .../chained_maximum.cpp | 134 +++++++++ .../label_optimization.cpp | 97 +++++++ .../nop_broadcast.cpp | 111 ++++++++ .../openvino/core/dimension_tracker.hpp | 2 + .../openvino/op/util/symbolic_info.hpp | 54 ++++ .../include/slice_shape_inference.hpp | 3 +- .../include/strided_slice_shape_inference.hpp | 3 +- src/core/src/bound_evaluate.cpp | 19 +- src/core/src/descriptor/tensor.cpp | 3 + src/core/src/dimension_tracker.cpp | 7 +- src/core/src/op/util/symbolic_info.cpp | 83 ++++++ src/core/src/pass/manager.cpp | 3 +- src/core/src/pass/visualize_tree.cpp | 22 ++ src/core/tests/type_prop/slice.cpp | 2 +- .../cpu_opset/common/pass/ngram_fusion.cpp | 50 ++-- .../convert_to_cpu_specific_opset.hpp | 4 +- 33 files changed, 1359 insertions(+), 41 deletions(-) create mode 100644 src/common/transformations/include/transformations/symbolic_transformations/chained_maximum.hpp create mode 100644 src/common/transformations/include/transformations/symbolic_transformations/label_optimization.hpp create mode 100644 src/common/transformations/include/transformations/symbolic_transformations/nop_broadcast.hpp create mode 100644 src/common/transformations/include/transformations/symbolic_transformations/symbolic_optimizations.hpp create mode 100644 src/common/transformations/include/transformations/symbolic_transformations/utils.hpp create mode 100644 src/common/transformations/src/transformations/symbolic_transformations/chained_maximum.cpp create mode 100644 src/common/transformations/src/transformations/symbolic_transformations/label_optimization.cpp create mode 100644 src/common/transformations/src/transformations/symbolic_transformations/nop_broadcast.cpp create mode 100644 src/common/transformations/src/transformations/symbolic_transformations/symbolic_optimizations.cpp create mode 100644 src/common/transformations/src/transformations/symbolic_transformations/utils.cpp create mode 100644 src/common/transformations/tests/symbolic_transformations/chained_maximum.cpp create mode 100644 src/common/transformations/tests/symbolic_transformations/label_optimization.cpp create mode 100644 src/common/transformations/tests/symbolic_transformations/nop_broadcast.cpp create mode 100644 src/core/include/openvino/op/util/symbolic_info.hpp create mode 100644 src/core/src/op/util/symbolic_info.cpp diff --git a/src/common/transformations/include/transformations/common_optimizations/simplify_shape_of_sub_graph.hpp b/src/common/transformations/include/transformations/common_optimizations/simplify_shape_of_sub_graph.hpp index d4ff490bd2c388..7f2e533c5b79ed 100644 --- a/src/common/transformations/include/transformations/common_optimizations/simplify_shape_of_sub_graph.hpp +++ b/src/common/transformations/include/transformations/common_optimizations/simplify_shape_of_sub_graph.hpp @@ -41,7 +41,11 @@ class ov::pass::GroupedGatherElimination : public ov::pass::MatcherPass { class ov::pass::SimplifyShapeOfSubGraph : public ov::pass::ModelPass { public: OPENVINO_RTTI("SimplifyShapeOfSubGraph", "0"); + explicit SimplifyShapeOfSubGraph(bool use_shapes = true) : m_use_shapes(use_shapes){}; bool run_on_model(const std::shared_ptr& m) override; + +private: + bool m_use_shapes; }; /** diff --git a/src/common/transformations/include/transformations/symbolic_transformations/chained_maximum.hpp b/src/common/transformations/include/transformations/symbolic_transformations/chained_maximum.hpp new file mode 100644 index 00000000000000..caa2586ebeeea4 --- /dev/null +++ b/src/common/transformations/include/transformations/symbolic_transformations/chained_maximum.hpp @@ -0,0 +1,26 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ov { +namespace pass { +class TRANSFORMATIONS_API ChainedMaximumOptimization; +} // namespace pass +} // namespace ov + +/** + * @ingroup ie_transformation_common_api + * @brief Optimizes graphs based on value labels / symbols + * Maximum(Maximum(A, B), B) -> Maximum(A, B) + * Maximum(Maximum(A, B), A) -> Maximum(A, B) + */ +class ov::pass::ChainedMaximumOptimization : public ov::pass::MatcherPass { +public: + OPENVINO_RTTI("ChainedMaximumOptimization", "0"); + ChainedMaximumOptimization(); +}; \ No newline at end of file diff --git a/src/common/transformations/include/transformations/symbolic_transformations/label_optimization.hpp b/src/common/transformations/include/transformations/symbolic_transformations/label_optimization.hpp new file mode 100644 index 00000000000000..9260be86d2744a --- /dev/null +++ b/src/common/transformations/include/transformations/symbolic_transformations/label_optimization.hpp @@ -0,0 +1,37 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once +#include +#include +#include + +namespace ov { +namespace pass { +class TRANSFORMATIONS_API ApplyTableOfEquivalence; +class TRANSFORMATIONS_API OptimizeLabelsUsedAsValues; +} // namespace pass +} // namespace ov + +/** + * @ingroup ie_transformation_common_api + * @brief Resets symbols / labels on output shapes and values according to table of symbol / label equivalence. It + * allows to reduce number of labels used in the model and to disambiguate label values. + */ +class ov::pass::ApplyTableOfEquivalence : public ov::pass::ModelPass { +public: + OPENVINO_RTTI("ApplyTableOfEquivalence", "0"); + bool run_on_model(const std::shared_ptr& m) override; +}; + +/** + * @ingroup ie_transformation_common_api + * @brief Collects sources where each symbol / label initially appeared (on shape or shape sub-graph) and attaches all + * value usages of this label to this initial source + */ +class ov::pass::OptimizeLabelsUsedAsValues : public ov::pass::ModelPass { +public: + OPENVINO_RTTI("OptimizeLabelsUsedAsValues", "0"); + bool run_on_model(const std::shared_ptr& m) override; +}; \ No newline at end of file diff --git a/src/common/transformations/include/transformations/symbolic_transformations/nop_broadcast.hpp b/src/common/transformations/include/transformations/symbolic_transformations/nop_broadcast.hpp new file mode 100644 index 00000000000000..c6356277a42e81 --- /dev/null +++ b/src/common/transformations/include/transformations/symbolic_transformations/nop_broadcast.hpp @@ -0,0 +1,25 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ov { +namespace pass { +class TRANSFORMATIONS_API NopBroadcast; +} // namespace pass +} // namespace ov + +/** + * @ingroup ie_transformation_common_api + * @brief Optimizes out Broadcast(data, Maximum(shape, ones)) if labels on data and shape are equal + * Use case with data being empty should not be considered here since original graph has Maximum with ones + */ +class ov::pass::NopBroadcast : public ov::pass::MatcherPass { +public: + OPENVINO_RTTI("NopBroadcast", "0"); + NopBroadcast(); +}; \ No newline at end of file diff --git a/src/common/transformations/include/transformations/symbolic_transformations/symbolic_optimizations.hpp b/src/common/transformations/include/transformations/symbolic_transformations/symbolic_optimizations.hpp new file mode 100644 index 00000000000000..1cf3cf9577dc78 --- /dev/null +++ b/src/common/transformations/include/transformations/symbolic_transformations/symbolic_optimizations.hpp @@ -0,0 +1,50 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include +#include +#include +#include + +namespace ov { +namespace pass { +class TRANSFORMATIONS_API SymbolicOptimizations; +class TRANSFORMATIONS_API SymbolicPropagation; +} // namespace pass +} // namespace ov + +/** + * @ingroup ie_transformation_common_api + * @brief Runs optimizations which are based on symbolic shape inference + */ +class ov::pass::SymbolicOptimizations : public ov::pass::ModelPass { +public: + OPENVINO_RTTI("SymbolicOptimizations", "0"); + explicit SymbolicOptimizations(bool full_run = true); + bool run_on_model(const std::shared_ptr& m) override; + std::shared_ptr get_manager() { + return m_manager; + }; + +private: + std::shared_ptr m_manager; +}; + +/** + * @ingroup ie_transformation_common_api + * @brief Assigns labels / symbols to all tensors on shapes and values. Uses shape inference and other special rules to + * propagate labels / symbols + */ +class ov::pass::SymbolicPropagation : public ov::pass::ModelPass { +public: + OPENVINO_RTTI("SymbolicPropagation"); + SymbolicPropagation(); + bool run_on_model(const std::shared_ptr& m) override; + +private: + std::shared_ptr m_te; +}; diff --git a/src/common/transformations/include/transformations/symbolic_transformations/utils.hpp b/src/common/transformations/include/transformations/symbolic_transformations/utils.hpp new file mode 100644 index 00000000000000..2f3d84dfe825ff --- /dev/null +++ b/src/common/transformations/include/transformations/symbolic_transformations/utils.hpp @@ -0,0 +1,43 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include "openvino/core/descriptor/tensor.hpp" +#include "openvino/core/dimension.hpp" +#include "openvino/core/partial_shape.hpp" +#include "openvino/core/type/element_type.hpp" + +namespace ov { +namespace symbol { +namespace util { + +/// \brief Collects labels from shape. Labels of static dimensions are guaranteed to be ov::no_labels +/// +/// \param shape Shape object to collect labels from +/// \param labels TensorLabel object to collect labels to +/// +/// \return Status of collecting the labels (false if rank is static else true) +TRANSFORMATIONS_API bool get_labels(const ov::PartialShape& shape, ov::TensorLabel& labels); + +/// \brief Collects labels from tensor of Output object +/// +/// \param output Output object to collect labels from +/// \param labels TensorLabel object to collect labels to +/// +/// \return Status of collecting the labels (false if tensor has no labels else true) +TRANSFORMATIONS_API bool get_labels(const ov::Output& output, ov::TensorLabel& labels); + +/// \brief Compares +/// +/// \param lhs TensorLabel object to compare +/// \param rhs TensorLabel object to compare +/// +/// \return true if labels are unique and equal between lhs and rhs else false +TRANSFORMATIONS_API bool are_unique_and_equal_labels(const ov::TensorLabel& lhs, const ov::TensorLabel& rhs); +} // namespace util +} // namespace symbol +} // namespace ov diff --git a/src/common/transformations/include/transformations/utils/utils.hpp b/src/common/transformations/include/transformations/utils/utils.hpp index 1af4dfbf1551e8..9a2036fff1b20d 100644 --- a/src/common/transformations/include/transformations/utils/utils.hpp +++ b/src/common/transformations/include/transformations/utils/utils.hpp @@ -214,11 +214,13 @@ TRANSFORMATIONS_API std::vector> get_node_target_inputs(const std::s TRANSFORMATIONS_API std::shared_ptr node_to_get_shape_value_of_indices_from_shape_node( const std::shared_ptr& shape_node, - const std::vector& indices); + const std::vector& indices, + const std::vector>& copy_rt_info_from = {}); TRANSFORMATIONS_API std::shared_ptr node_to_get_shape_value_of_indices_from_shape_source( const Output& shape_source, - const std::vector& indices); + const std::vector& indices, + const std::vector>& copy_rt_info_from = {}); TRANSFORMATIONS_API bool is_dequantization_subgraph(const Output& node); @@ -230,6 +232,28 @@ TRANSFORMATIONS_API bool is_constant_and_all_values_equal_int(const Output TRANSFORMATIONS_API bool is_on_constant_path(const ov::Output& output); +template +ov::pass::pattern::op::ValuePredicate constant_predicate(std::function&)> predicate) { + return pass::pattern::op::as_value_predicate([=](std::shared_ptr n) -> bool { + if (auto constant = as_type_ptr(n)) { + auto values = constant->cast_vector(); + return predicate(values); + } + return false; + }); +} } // namespace util } // namespace op } // namespace ov + +#define INT_CONSTANT_WITH_PREDICATE(expression) \ + pattern::wrap_type( \ + ov::op::util::constant_predicate([](const std::vector& value) -> bool { \ + return expression; \ + })) + +#define FLOAT_CONSTANT_WITH_PREDICATE(expression) \ + pattern::wrap_type( \ + ov::op::util::constant_predicate([](const std::vector& value) -> bool { \ + return expression; \ + })) diff --git a/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp b/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp index 1638f2c4301e2b..8ad09f95dede3e 100644 --- a/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp +++ b/src/common/transformations/src/transformations/common_optimizations/common_optimizations.cpp @@ -111,6 +111,7 @@ #include "transformations/op_conversions/softmax_decomposition.hpp" #include "transformations/op_conversions/softsign_decomposition.hpp" #include "transformations/op_conversions/unique_decomposition.hpp" +#include "transformations/symbolic_transformations/symbolic_optimizations.hpp" bool ov::pass::CommonOptimizations::run_on_model(const std::shared_ptr& f) { RUN_ON_FUNCTION_SCOPE(CommonOptimizations); @@ -230,7 +231,8 @@ bool ov::pass::CommonOptimizations::run_on_model(const std::shared_ptr(); + REGISTER_PASS(manager, StridesOptimization) + REGISTER_PASS(manager, SymbolicOptimizations) REGISTER_PASS(manager, Validate) manager.run_passes(f); diff --git a/src/common/transformations/src/transformations/common_optimizations/moc_transformations.cpp b/src/common/transformations/src/transformations/common_optimizations/moc_transformations.cpp index 0bdae82810317a..068e1f27a291e9 100644 --- a/src/common/transformations/src/transformations/common_optimizations/moc_transformations.cpp +++ b/src/common/transformations/src/transformations/common_optimizations/moc_transformations.cpp @@ -147,7 +147,7 @@ bool ov::pass::MOCTransformations::run_on_model(const std::shared_ptr REGISTER_PASS(manager, Validate) } REGISTER_PASS(manager, ConvertQuantizeDequantize) - REGISTER_PASS(manager, SimplifyShapeOfSubGraph) + REGISTER_PASS(manager, SimplifyShapeOfSubGraph, m_use_shapes) if (!m_use_shapes) { manager.register_pass(); diff --git a/src/common/transformations/src/transformations/common_optimizations/nop_elimination.cpp b/src/common/transformations/src/transformations/common_optimizations/nop_elimination.cpp index 9cbf24a6dae0e3..9ce5ea86b901ab 100644 --- a/src/common/transformations/src/transformations/common_optimizations/nop_elimination.cpp +++ b/src/common/transformations/src/transformations/common_optimizations/nop_elimination.cpp @@ -833,7 +833,8 @@ ov::pass::NopSliceBeforeGatherElements::NopSliceBeforeGatherElements() { ov::pass::PrepareShapeOpsForEliminationAroundBE::PrepareShapeOpsForEliminationAroundBE() { MATCHER_SCOPE(PrepareShapeOpsForEliminationAroundBE); - auto first_label = pattern::wrap_type(pattern::rank_equals(0)); + auto first_label = pattern::wrap_type( + pattern::rank_equals(0)); auto other_input_label = pattern::any_input(pattern::rank_equals(0)); auto binary_op_label = pattern::wrap_type& f Manager manager; manager.set_per_pass_validation(false); + REGISTER_PASS(manager, PrepareShapeOpsForEliminationAroundBE) REGISTER_PASS(manager, SharedOpOptimization) REGISTER_PASS(manager, EliminateGatherUnsqueeze) // should run after SharedOpOptimization + REGISTER_PASS(manager, NopElimination, m_use_shapes) REGISTER_PASS(manager, GroupedGatherElimination) // GatherNopElimination depends on shape, so it requires shape propagation // if previous transformations has resolved some dynamic shapes. diff --git a/src/common/transformations/src/transformations/symbolic_transformations/chained_maximum.cpp b/src/common/transformations/src/transformations/symbolic_transformations/chained_maximum.cpp new file mode 100644 index 00000000000000..02510be34dcb4a --- /dev/null +++ b/src/common/transformations/src/transformations/symbolic_transformations/chained_maximum.cpp @@ -0,0 +1,50 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/symbolic_transformations/chained_maximum.hpp" + +#include +#include + +#include "itt.hpp" +#include "openvino/core/dimension_tracker.hpp" +#include "transformations/symbolic_transformations/utils.hpp" + +using namespace ov::symbol::util; + +ov::pass::ChainedMaximumOptimization::ChainedMaximumOptimization() { + MATCHER_SCOPE(ChainedMaximumOptimization); + auto A_input = pattern::any_input(); + auto B_input = pattern::any_input(); + auto C_input = pattern::any_input(); + auto first_maximum = pattern::wrap_type({A_input, B_input}); + auto maximum = pattern::wrap_type({first_maximum, C_input}); + + ov::matcher_pass_callback matcher_pass_callback = [=](pattern::Matcher& m) { + const auto& vm = m.get_pattern_value_map(); + + auto A = vm.at(A_input), B = vm.at(B_input), C = vm.at(C_input); + auto output_to_replace = vm.at(first_maximum); + + ov::TensorLabel A_labels, B_labels, C_labels; + bool A_read = get_labels(A, A_labels); + bool B_read = get_labels(B, B_labels); + bool C_read = get_labels(C, C_labels); + + if (!A_read && !B_read && !C_read) + return false; + + if (are_unique_and_equal_labels(A_labels, C_labels)) { + // Matched Maximum(Maximum(A, B), C) with A == C -> Maximum(B, C) + return ov::replace_output_update_name(output_to_replace, B); + } else if (are_unique_and_equal_labels(B_labels, C_labels)) { + // Matched Maximum(Maximum(A, B), C) with B == C -> Maximum(A, C) + return ov::replace_output_update_name(output_to_replace, A); + } + return false; + }; + + auto m = std::make_shared(maximum, matcher_name); + register_matcher(m, matcher_pass_callback); +} diff --git a/src/common/transformations/src/transformations/symbolic_transformations/label_optimization.cpp b/src/common/transformations/src/transformations/symbolic_transformations/label_optimization.cpp new file mode 100644 index 00000000000000..049fd0e72c06c3 --- /dev/null +++ b/src/common/transformations/src/transformations/symbolic_transformations/label_optimization.cpp @@ -0,0 +1,265 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/symbolic_transformations/label_optimization.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "itt.hpp" +#include "openvino/core/rt_info.hpp" +#include "openvino/op/util/multi_subgraph_base.hpp" + +namespace { +void update_label(const ov::EqTable& table, ov::label_t& label) { + if (label != ov::no_label && table.count(label)) { + const auto& alternative_label = *table.at(label)->begin(); + if (alternative_label != ov::no_label) + label = std::min(label, alternative_label); + } +} + +void apply_table_of_equivalence_on_model(const std::shared_ptr& m, const ov::EqTable& table) { + for (const auto& op : m->get_ordered_ops()) { + // handle inner sub-graphs + if (auto multi_subgraph_op = std::dynamic_pointer_cast(op)) + for (const auto& sub_graph : multi_subgraph_op->get_functions()) + if (sub_graph) + apply_table_of_equivalence_on_model(sub_graph, table); + + for (auto& output : op->outputs()) { + // shape relabeling + auto shape = output.get_partial_shape(); + for (auto& d : shape) { + if (d.is_static()) + continue; + auto label = ov::DimensionTracker::get_label(d); + update_label(table, label); + if (label != ov::no_label) + ov::DimensionTracker::set_label(d, label); + } + op->set_output_type(output.get_index(), output.get_element_type(), shape); + // value relabeling + auto value_labels = output.get_tensor().get_value_label(); + for (auto& label : value_labels) + update_label(table, label); + output.get_tensor().set_value_label(value_labels); + } + } +} +} // namespace + +bool ov::pass::ApplyTableOfEquivalence::run_on_model(const std::shared_ptr& m) { + RUN_ON_FUNCTION_SCOPE(ApplyTableOfEquivalence); + if (auto te = ov::table_of_equivalence(m)) + apply_table_of_equivalence_on_model(m, te->get_equivalence_table()); + return false; +} + +// label to source map +using LTS_map = std::unordered_map>; + +namespace { +int64_t get_idx_of_label_in_source(const ov::Output& source, const ov::label_t& label) { + int64_t idx = -1; + if (label == ov::no_label) + return idx; + auto pshape = source.get_partial_shape(); + auto rank = pshape.rank(); + if (rank.is_dynamic()) + return idx; + for (int64_t i = 0; i < rank.get_length(); ++i) { + auto l = ov::DimensionTracker::get_label(pshape[i]); + if (l == label) { + idx = i; + break; + } + } + return idx; +} + +ov::Output alternative_source_from_existing_value(const ov::label_t& label, + const ov::Output& original_output, + LTS_map& label_value_source) { + auto alternative_source = ov::Output(); + if (label_value_source.count(label)) { + alternative_source = label_value_source[label]; + const auto &original_shape = original_output.get_shape(), &alternative_shape = alternative_source.get_shape(); + const auto &original_et = original_output.get_element_type(), + &alternative_et = alternative_source.get_element_type(); + if (alternative_shape != original_shape && (original_shape.empty() || original_shape == ov::Shape{0})) { + auto squeeze = std::make_shared(alternative_source); + ov::copy_runtime_info(original_output.get_node_shared_ptr(), squeeze); + alternative_source = squeeze->output(0); + } else if (alternative_shape != original_shape) { + auto shape = ov::op::v0::Constant::create(ov::element::i64, {original_shape.size()}, original_shape); + auto reshape = std::make_shared(alternative_source, shape, false); + ov::copy_runtime_info(original_output.get_node_shared_ptr(), reshape); + alternative_source = reshape->output(0); + } + if (alternative_et != original_et) { + auto convert = std::make_shared(alternative_source, original_et); + ov::copy_runtime_info(original_output.get_node_shared_ptr(), convert); + alternative_source = convert->output(0); + } + } + return alternative_source; +} + +ov::Output alternative_source_from_shape_source(const LTS_map& label_shape_source, + const ov::label_t& label, + const ov::Output& original_output, + LTS_map& label_value_source) { + auto alternative_source = ov::Output(); + if (label_shape_source.count(label)) { + // replacing via constructing the label source and saving it for the future + const auto& source = label_shape_source.at(label); + const int64_t& idx = get_idx_of_label_in_source(source, label); + if (idx == -1) + return alternative_source; + const auto& original_et = original_output.get_element_type(); + std::shared_ptr shape; + if (original_et == ov::element::i32 || original_et == ov::element::i64) { + shape = std::make_shared(source, original_et); + } else { + shape = std::make_shared(source); + ov::copy_runtime_info(original_output.get_node_shared_ptr(), shape); + shape = std::make_shared(shape, original_et); + } + auto indices = ov::op::v0::Constant::create(ov::element::i64, original_output.get_shape(), {idx}); + auto axis = ov::op::v0::Constant::create(ov::element::i64, {}, {0}); + auto gather = std::make_shared(shape, indices, axis); + ov::copy_runtime_info(original_output.get_node_shared_ptr(), {shape, indices, axis, gather}); + alternative_source = gather; + label_value_source[label] = alternative_source; + } + return alternative_source; +} + +ov::Output get_alternative_source_from_value_or_shape_source(const LTS_map& label_shape_source, + const ov::label_t& label, + const ov::Output& original_output, + LTS_map& label_value_source) { + auto alternative_source = ov::Output(); + if (label == ov::no_label) + return alternative_source; + alternative_source = alternative_source_from_existing_value(label, original_output, label_value_source); + if (!alternative_source.get_node_shared_ptr()) + alternative_source = + alternative_source_from_shape_source(label_shape_source, label, original_output, label_value_source); + return alternative_source; +} + +ov::Output alternative_source_from_concat_input_sources(const LTS_map& label_shape_source, + const ov::label_t& label, + const ov::Output& original_output, + LTS_map& label_value_source) { + auto alternative_source = ov::Output(); + if (label_shape_source.count(label)) { + const auto& source = label_shape_source.at(label); + auto concat = ov::as_type_ptr(source.get_node_shared_ptr()); + if (!concat || concat->get_input_size() != 2) + return alternative_source; + int64_t idx = get_idx_of_label_in_source(source, label); + if (idx == -1 || idx != concat->get_concatenation_axis()) + return alternative_source; + // optimize using the knowledge of the Concat SI and what happens on the axis + const auto& lhs_pshape = concat->get_input_partial_shape(0); + const auto& rhs_pshape = concat->get_input_partial_shape(1); + if (lhs_pshape.rank().is_static() && rhs_pshape.rank().is_static()) { + auto lhs_label = ov::DimensionTracker::get_label(lhs_pshape[idx]); + auto lhs_alternative = get_alternative_source_from_value_or_shape_source(label_shape_source, + lhs_label, + original_output, + label_value_source); + + auto rhs_label = ov::DimensionTracker::get_label(rhs_pshape[idx]); + auto rhs_alternative = get_alternative_source_from_value_or_shape_source(label_shape_source, + rhs_label, + original_output, + label_value_source); + + if (lhs_alternative.get_node_shared_ptr() && rhs_alternative.get_node_shared_ptr()) { + alternative_source = std::make_shared(lhs_alternative, rhs_alternative); + ov::copy_runtime_info(original_output.get_node_shared_ptr(), alternative_source.get_node_shared_ptr()); + alternative_source.get_tensor().set_value_label({label}); + label_value_source[label] = alternative_source; + } + } + } + return alternative_source; +} + +void optimize_value_usage(ov::Output& output, LTS_map& label_shape_source, LTS_map& label_value_source) { + auto value_labels = output.get_tensor().get_value_label(); + if (value_labels.size() != 1) + return; + auto label = value_labels[0]; + if (label == ov::no_label) + return; + auto pshape = output.get_partial_shape(); + if (pshape.is_dynamic() || ov::shape_size(pshape.to_shape()) != 1) + return; + + ov::Output alternative_source = + alternative_source_from_concat_input_sources(label_shape_source, label, output, label_value_source); + if (!alternative_source.get_node_shared_ptr()) + alternative_source = + get_alternative_source_from_value_or_shape_source(label_shape_source, label, output, label_value_source); + + if (alternative_source.get_node_shared_ptr() != nullptr) { + evaluate_both_bounds(alternative_source); + output.replace(alternative_source); + } else { + // in case we can not optimize it -- it is label which appeared just now on the value path + label_value_source[label] = output; + } +} + +void save_shape_sources(const ov::Output& output, LTS_map& label_shape_source) { + for (const auto& d : output.get_partial_shape()) { + if (d.is_static()) + continue; + auto label = ov::DimensionTracker::get_label(d); + if (label == ov::no_label || label_shape_source.count(label)) + continue; + label_shape_source[label] = output; + } +} +} // namespace + +bool ov::pass::OptimizeLabelsUsedAsValues::run_on_model(const std::shared_ptr& m) { + RUN_ON_FUNCTION_SCOPE(OptimizeLabelsUsedAsValues); + LTS_map label_shape_source; + LTS_map label_value_source; + for (const auto& op : m->get_ordered_ops()) { + // Result has output port which has shared (during validate_and_infer_type) tensor with input port. + // Transformations may replace input of Result. After replacement and before Result::validate_and_infer_type -- + // output tensor of Result may contain inaccurate shape / labels due to the sharing with tensor which may be + // already detached from the model. To avoid creating ShapeOf from Result in these cases we exclude it from this + // optimization entirely + if (auto result = ov::as_type_ptr(op)) + continue; + + // LTS maps aren't shared with sub-graphs because inner graph can not access outer graph for label sources + if (auto multi_subgraph_op = std::dynamic_pointer_cast(op)) + for (const auto& sub_graph : multi_subgraph_op->get_functions()) + if (sub_graph) + run_on_model(sub_graph); + + for (auto& output : op->outputs()) { + optimize_value_usage(output, label_shape_source, label_value_source); + save_shape_sources(output, label_shape_source); + } + } + return true; +} diff --git a/src/common/transformations/src/transformations/symbolic_transformations/nop_broadcast.cpp b/src/common/transformations/src/transformations/symbolic_transformations/nop_broadcast.cpp new file mode 100644 index 00000000000000..889bdd4b209d20 --- /dev/null +++ b/src/common/transformations/src/transformations/symbolic_transformations/nop_broadcast.cpp @@ -0,0 +1,61 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/symbolic_transformations/nop_broadcast.hpp" + +#include +#include +#include +#include +#include + +#include "compare.hpp" +#include "itt.hpp" +#include "openvino/pass/pattern/op/or.hpp" +#include "transformations/symbolic_transformations/utils.hpp" +#include "transformations/utils/utils.hpp" + +using namespace std; +using namespace ov; +using namespace ov::op; +using namespace ov::symbol::util; + +namespace { +shared_ptr broadcast_label(const OutputVector& inputs) { + return ov::pass::pattern::wrap_type(inputs, [](Output output) { + const auto& op = output.get_node_shared_ptr(); + auto data_rank = op->get_input_partial_shape(0).rank(); + auto new_shape_shape = op->get_input_partial_shape(1); + return data_rank.is_static() && new_shape_shape.is_static() && data_rank == new_shape_shape[0]; + }); +} +} // namespace + +ov::pass::NopBroadcast::NopBroadcast() { + MATCHER_SCOPE(NopBroadcast); + auto data_label = pattern::any_input(pattern::has_static_rank()); + + auto shape_label = pattern::wrap_type(); + auto ones = INT_CONSTANT_WITH_PREDICATE(std::all_of(value.begin(), value.end(), cmp::Equal(1))); + auto maximum = pattern::wrap_type({shape_label, ones}); + + auto broadcast_3_ins = broadcast_label({data_label, maximum, pattern::any_input()}); + auto broadcast_2_ins = broadcast_label({data_label, maximum}); + auto broadcast = make_shared(OutputVector{broadcast_2_ins, broadcast_3_ins}); + + ov::matcher_pass_callback matcher_pass_callback = [=](pattern::Matcher& m) { + const auto& vm = m.get_pattern_value_map(); + auto data = vm.at(data_label); + auto shape = vm.at(shape_label); + + ov::TensorLabel data_labels, shape_labels; + if (!get_labels(data.get_partial_shape(), data_labels) || !get_labels(shape, shape_labels) || + !are_unique_and_equal_labels(data_labels, shape_labels)) + return false; + return ov::replace_output_update_name(m.get_match_root(), data); + }; + + auto m = std::make_shared(broadcast, matcher_name); + register_matcher(m, matcher_pass_callback); +} diff --git a/src/common/transformations/src/transformations/symbolic_transformations/symbolic_optimizations.cpp b/src/common/transformations/src/transformations/symbolic_transformations/symbolic_optimizations.cpp new file mode 100644 index 00000000000000..7451df397ba33c --- /dev/null +++ b/src/common/transformations/src/transformations/symbolic_transformations/symbolic_optimizations.cpp @@ -0,0 +1,146 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/symbolic_transformations/symbolic_optimizations.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "itt.hpp" + +namespace { +void symbolic_set_up_for_shape(ov::DimensionTracker& dt, ov::PartialShape& shape) { + if (shape.rank().is_dynamic()) + return; + for (auto& d : shape) { + bool is_static = d.is_static(), has_label = ov::DimensionTracker::has_label(d); + if (is_static && has_label) + dt.reset_tracking_info(d); // remove labels from static dims on shapes to reduce label clutter + if (is_static || has_label) + continue; + dt.set_up_for_tracking(d); + } +} + +void special_case_range_label_propagation(const std::shared_ptr& node) { + /* Label propagation through specific Range operation + start shift + | \ / + | Add step == 1 + \ / / + Range + */ + if (!ov::is_type(node) && !ov::is_type(node)) + return; + + auto output_shape = node->get_output_partial_shape(0); + if (output_shape.rank().is_dynamic() || output_shape.size() != 1) + return; + + OPENVINO_SUPPRESS_DEPRECATED_START + auto step_value = ov::get_constant_from_source(node->input_value(2)); + OPENVINO_SUPPRESS_DEPRECATED_END + if (!step_value || step_value->cast_vector()[0] != 1) + return; + + auto start_labels = node->get_input_tensor(0).get_value_label(); + if (start_labels.size() != 1 || start_labels[0] == ov::no_label) + return; + auto start_label = start_labels[0]; + + auto stop_node = node->input_value(1).get_node_shared_ptr(); + if (!ov::is_type(stop_node)) + return; + auto add_in0_labels = stop_node->get_input_tensor(0).get_value_label(); + if (add_in0_labels.size() != 1 || add_in0_labels[0] == ov::no_label) + return; + auto add_in0_label = add_in0_labels[0]; + + auto add_in1_labels = stop_node->get_input_tensor(1).get_value_label(); + if (add_in1_labels.size() != 1 || add_in1_labels[0] == ov::no_label) + return; + auto add_in1_label = add_in1_labels[0]; + + if (add_in0_label == start_label) + ov::DimensionTracker::set_label(output_shape[0], add_in1_label); + else if (add_in1_label == start_label) + ov::DimensionTracker::set_label(output_shape[0], add_in0_label); + node->set_output_type(0, node->get_output_element_type(0), output_shape); +} +} // namespace + +ov::pass::SymbolicPropagation::SymbolicPropagation() { + m_te = std::make_shared(); +} + +bool ov::pass::SymbolicPropagation::run_on_model(const std::shared_ptr& m) { + RUN_ON_MODEL_SCOPE(SymbolicPropagation); + + auto te = m_te; + ov::set_up_symbolic_info(m, te); + ov::DimensionTracker dt(te); + + for (const auto& op : m->get_ordered_ops()) { + // since we disable invalidation with the following two lines, we have to invalidate manually here + op->invalidate_values(); + for (auto& output : op->outputs()) + ov::set_up_symbolic_info(output, te); + op->revalidate_and_infer_types(); + // Recursively apply transformation for sub-graph based operations + if (auto multi_subgraph_op = std::dynamic_pointer_cast(op)) + for (const auto& sub_graph : multi_subgraph_op->get_functions()) + if (sub_graph) + run_on_model(sub_graph); + + // additional label propagation rules must be triggered here + special_case_range_label_propagation(op); + // additional label propagation rules must be triggered here + + for (auto& output : op->outputs()) { + auto shape = output.get_partial_shape(); + symbolic_set_up_for_shape(dt, shape); + OPENVINO_SUPPRESS_DEPRECATED_START + output.get_tensor().set_tensor_type(output.get_element_type(), shape); + OPENVINO_SUPPRESS_DEPRECATED_END + } + } + return true; +} + +ov::pass::SymbolicOptimizations::SymbolicOptimizations(bool full_run) { + m_manager = std::make_shared(); + m_manager->set_per_pass_validation(false); + +#define REGISTER_SYMBOLIC(region, ...) m_manager->register_pass(__VA_ARGS__); + + REGISTER_SYMBOLIC(SymbolicPropagation) + if (full_run) { + // symbolic based transformations allowing for better static dimension propagation + REGISTER_SYMBOLIC(ChainedMaximumOptimization) + REGISTER_SYMBOLIC(NopBroadcast) + // regular transformations which are needed right now since they clean up unnecessary operations + REGISTER_SYMBOLIC(NopElimination) // Broadcast (Tile) Ones + Remove Slice Before GatherElements + REGISTER_SYMBOLIC(SharedOpOptimization) // Shared GatherElements + } + // transformations which use labels for optimizations + REGISTER_SYMBOLIC(ApplyTableOfEquivalence) + if (full_run) { + REGISTER_SYMBOLIC(OptimizeLabelsUsedAsValues) // reduce shape sub-graphs + } +} + +bool ov::pass::SymbolicOptimizations::run_on_model(const std::shared_ptr& m) { + RUN_ON_FUNCTION_SCOPE(SymbolicOptimizations); + m_manager->run_passes(m); + ov::remove_symbolic_info(m); + return true; +} diff --git a/src/common/transformations/src/transformations/symbolic_transformations/utils.cpp b/src/common/transformations/src/transformations/symbolic_transformations/utils.cpp new file mode 100644 index 00000000000000..3fedc3bd4c85be --- /dev/null +++ b/src/common/transformations/src/transformations/symbolic_transformations/utils.cpp @@ -0,0 +1,34 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/symbolic_transformations/utils.hpp" + +#include +#include +#include + +bool ov::symbol::util::get_labels(const ov::PartialShape& shape, ov::TensorLabel& labels) { + if (shape.rank().is_dynamic()) + return false; + labels.clear(); + labels.reserve(shape.size()); + for (const auto& d : shape) + labels.push_back((d.is_dynamic() ? ov::DimensionTracker::get_label(d) : ov::no_label)); + return true; +} + +bool ov::symbol::util::get_labels(const ov::Output& output, ov::TensorLabel& labels) { + const auto& tensor = output.get_tensor(); + labels = tensor.get_value_label(); + return !labels.empty(); +} + +bool ov::symbol::util::are_unique_and_equal_labels(const ov::TensorLabel& lhs, const ov::TensorLabel& rhs) { + if (rhs.size() != lhs.size() || rhs.empty()) + return false; + for (size_t i = 0; i < lhs.size(); ++i) + if (lhs[i] != rhs[i] || lhs[i] == ov::no_label) + return false; + return true; +} diff --git a/src/common/transformations/src/transformations/utils/utils.cpp b/src/common/transformations/src/transformations/utils/utils.cpp index a62cd141b9f83b..62b1765e7ba275 100644 --- a/src/common/transformations/src/transformations/utils/utils.cpp +++ b/src/common/transformations/src/transformations/utils/utils.cpp @@ -162,16 +162,24 @@ std::vector> get_node_target_inputs(const std::shared_ptr& nod std::shared_ptr node_to_get_shape_value_of_indices_from_shape_node( const std::shared_ptr& shape_node, - const std::vector& indices) { - return make_try_fold(shape_node, - v0::Constant::create(ov::element::i64, {indices.size()}, indices), - v0::Constant::create(ov::element::i64, {}, {0})); + const std::vector& indices, + const std::vector>& copy_rt_info_from) { + const auto& indices_op = v0::Constant::create(ov::element::i64, {indices.size()}, indices); + const auto& axis_op = v0::Constant::create(ov::element::i64, {}, {0}); + auto op = make_try_fold(shape_node, indices_op, axis_op); + if (!copy_rt_info_from.empty()) + ov::copy_runtime_info(copy_rt_info_from, {op, indices_op, axis_op}); + return op; } -std::shared_ptr node_to_get_shape_value_of_indices_from_shape_source(const ov::Output& shape_source, - const std::vector& indices) { +std::shared_ptr node_to_get_shape_value_of_indices_from_shape_source( + const ov::Output& shape_source, + const std::vector& indices, + const std::vector>& copy_rt_info_from) { const auto& shape_node = make_try_fold(shape_source); - return node_to_get_shape_value_of_indices_from_shape_node(shape_node, indices); + if (!copy_rt_info_from.empty()) + ov::copy_runtime_info(copy_rt_info_from, shape_node); + return node_to_get_shape_value_of_indices_from_shape_node(shape_node, indices, copy_rt_info_from); } bool shapes_equal_except_dynamic_expected_batch(const ov::PartialShape& expected, const ov::PartialShape& actual) { diff --git a/src/common/transformations/tests/symbolic_transformations/chained_maximum.cpp b/src/common/transformations/tests/symbolic_transformations/chained_maximum.cpp new file mode 100644 index 00000000000000..f0507897fc4a36 --- /dev/null +++ b/src/common/transformations/tests/symbolic_transformations/chained_maximum.cpp @@ -0,0 +1,134 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/symbolic_transformations/chained_maximum.hpp" + +#include + +#include +#include +#include +#include +#include + +#include "common_test_utils/ov_test_utils.hpp" +#include "openvino/core/dimension_tracker.hpp" +#include "transformations/symbolic_transformations/symbolic_optimizations.hpp" + +using namespace ov; +using namespace ov::op; +using namespace std; + +TEST_F(TransformationTestsF, ChainedMaximumAC) { + // A == C + // Maximum(Maximum(A, B), C) -> Maximum(B, C) + { + auto input = make_shared(element::f32, PartialShape::dynamic(4)); + + auto A = make_shared(input); + auto B = v0::Constant::create(element::i64, {}, {1}); + auto C = make_shared(input); + + auto maximum_0 = make_shared(A, B); + auto maximum_1 = make_shared(maximum_0, C); + + auto data = make_shared(element::f32, PartialShape::dynamic()); + auto broadcast = make_shared(data, maximum_1); + + model = make_shared(NodeVector{broadcast}, ParameterVector{input, data}); + manager.set_per_pass_validation(false); + manager.register_pass(); + manager.register_pass(); + } + { + auto input = make_shared(element::f32, PartialShape::dynamic(4)); + + auto B = v0::Constant::create(element::i64, {}, {1}); + auto C = make_shared(input); + + auto maximum = make_shared(B, C); + + auto data = make_shared(element::f32, PartialShape::dynamic()); + auto broadcast = make_shared(data, maximum); + + model_ref = make_shared(NodeVector{broadcast}, ParameterVector{input, data}); + } +} + +TEST_F(TransformationTestsF, ChainedMaximumBC) { + // B == C + // Maximum(Maximum(A, B), C) -> Maximum(A, C) + { + auto input = make_shared(element::f32, PartialShape::dynamic(4)); + + auto A = v0::Constant::create(element::i64, {}, {1}); + auto B = make_shared(input); + auto C = make_shared(input); + + auto maximum_0 = make_shared(A, B); + auto maximum_1 = make_shared(maximum_0, C); + auto data = make_shared(element::f32, PartialShape::dynamic()); + auto broadcast = make_shared(data, maximum_1); + + model = make_shared(NodeVector{broadcast}, ParameterVector{input, data}); + manager.set_per_pass_validation(false); + manager.register_pass(); + manager.register_pass(); + } + { + auto input = make_shared(element::f32, PartialShape::dynamic(4)); + + auto A = v0::Constant::create(element::i64, {}, {1}); + auto C = make_shared(input); + + auto maximum = make_shared(A, C); + + auto data = make_shared(element::f32, PartialShape::dynamic()); + auto broadcast = make_shared(data, maximum); + + model_ref = make_shared(NodeVector{broadcast}, ParameterVector{input, data}); + } +} + +TEST_F(TransformationTestsF, ChainedMaximumNegativeNoLabels) { + { + auto shape = PartialShape::dynamic(4); + auto input = make_shared(element::f32, shape); + + auto A = v0::Constant::create(element::i64, {}, {1}); + auto B = make_shared(input); + auto C = make_shared(input); + + auto maximum_0 = make_shared(A, B); + auto maximum_1 = make_shared(maximum_0, C); + + auto data = make_shared(element::f32, PartialShape::dynamic()); + auto broadcast = make_shared(data, maximum_1); + + model = make_shared(NodeVector{broadcast}, ParameterVector{input, data}); + manager.register_pass(); + } +} + +TEST_F(TransformationTestsF, ChainedMaximumNegativeDifferentLabels) { + { + auto input_0 = make_shared(element::f32, PartialShape::dynamic(4)); + auto input_1 = make_shared(element::f32, PartialShape::dynamic(4)); + + auto A = v0::Constant::create(element::i64, {}, {1}); + auto B = make_shared(input_0); + auto C = make_shared(input_1); + + auto maximum_0 = make_shared(A, B); + auto maximum_1 = make_shared(maximum_0, C); + + auto data = make_shared(element::f32, PartialShape::dynamic()); + auto broadcast = make_shared(data, maximum_1); + + model = make_shared(NodeVector{broadcast}, ParameterVector{input_0, input_1, data}); + manager.set_per_pass_validation(false); + manager.register_pass(); + manager.register_pass(); + } +} diff --git a/src/common/transformations/tests/symbolic_transformations/label_optimization.cpp b/src/common/transformations/tests/symbolic_transformations/label_optimization.cpp new file mode 100644 index 00000000000000..408467db47779f --- /dev/null +++ b/src/common/transformations/tests/symbolic_transformations/label_optimization.cpp @@ -0,0 +1,97 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/symbolic_transformations/label_optimization.hpp" + +#include + +#include "common_test_utils/ov_test_utils.hpp" +#include "openvino/core/dimension_tracker.hpp" +#include "openvino/op/add.hpp" +#include "openvino/op/concat.hpp" +#include "openvino/op/gather.hpp" +#include "openvino/op/reshape.hpp" +#include "openvino/op/shape_of.hpp" +#include "openvino/op/util/symbolic_info.hpp" +#include "openvino/pass/manager.hpp" +#include "transformations/symbolic_transformations/symbolic_optimizations.hpp" +#include "transformations/symbolic_transformations/utils.hpp" + +using namespace ov; +using namespace ov::op; +using namespace std; + +#define TEST_SHAPE(source, ...) \ + { \ + auto expected_labels = ov::TensorLabel({__VA_ARGS__}); \ + ov::TensorLabel labels; \ + EXPECT_TRUE(ov::symbol::util::get_labels(source->get_output_partial_shape(0), labels)); \ + EXPECT_EQ(labels, expected_labels); \ + } + +TEST(TransformationTests, ApplyTableOfEquivalence_Concat) { + auto input_1 = make_shared(element::f32, PartialShape::dynamic(4)); + auto input_2 = make_shared(element::f32, PartialShape::dynamic(4)); + auto concat = make_shared(OutputVector{input_1, input_2}, -1); + // shape inference notes that all the non-axis dimensions are equal to each other + auto model = make_shared(NodeVector{concat}, ParameterVector{input_2, input_1}); + + pass::Manager manager; + manager.set_per_pass_validation(false); + manager.register_pass(); + manager.register_pass(); + manager.run_passes(model); + + TEST_SHAPE(input_1, {1, 2, 3, 4}); + TEST_SHAPE(input_2, {1, 2, 3, 8}); + TEST_SHAPE(concat, {1, 2, 3, 9}); +} + +TEST_F(TransformationTestsF, ApplyTableOfEquivalence_Concat_Values) { + { + auto input_1 = make_shared(element::f32, PartialShape::dynamic(4)); + auto input_2 = make_shared(element::f32, PartialShape::dynamic(4)); + auto concat = make_shared(OutputVector{input_1, input_2}, -1); + + auto shape = make_shared(concat); + auto gather = make_shared(shape, + v0::Constant::create(element::i64, {1}, {-1}), + v0::Constant::create(element::i64, {}, {0})); + + auto reshape = make_shared( + concat, + make_shared(OutputVector{gather, v0::Constant::create(element::i64, {1}, {-1})}, 0), + false); + + model = make_shared(NodeVector{reshape}, ParameterVector{input_2, input_1}); + + manager.set_per_pass_validation(false); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + } + { + auto input_1 = make_shared(element::f32, PartialShape::dynamic(4)); + auto input_2 = make_shared(element::f32, PartialShape::dynamic(4)); + auto concat = make_shared(OutputVector{input_1, input_2}, -1); + + auto shape_1 = make_shared(input_1); + auto gather_1 = make_shared(shape_1, + v0::Constant::create(element::i64, {1}, {3}), + v0::Constant::create(element::i64, {}, {0})); + + auto shape_2 = make_shared(input_2); + auto gather_2 = make_shared(shape_2, + v0::Constant::create(element::i64, {1}, {3}), + v0::Constant::create(element::i64, {}, {0})); + + auto sum = make_shared(gather_1, gather_2); + + auto reshape = make_shared( + concat, + make_shared(OutputVector{sum, v0::Constant::create(element::i64, {1}, {-1})}, 0), + false); + model_ref = make_shared(NodeVector{reshape}, ParameterVector{input_2, input_1}); + } +} diff --git a/src/common/transformations/tests/symbolic_transformations/nop_broadcast.cpp b/src/common/transformations/tests/symbolic_transformations/nop_broadcast.cpp new file mode 100644 index 00000000000000..63f97dfc7cb04b --- /dev/null +++ b/src/common/transformations/tests/symbolic_transformations/nop_broadcast.cpp @@ -0,0 +1,111 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "transformations/symbolic_transformations/nop_broadcast.hpp" + +#include + +#include +#include +#include +#include +#include +#include + +#include "common_test_utils/ov_test_utils.hpp" +#include "openvino/core/dimension_tracker.hpp" + +using namespace ov; +using namespace ov::op; +using namespace std; + +namespace { +void label_shape(ov::PartialShape& shape) { + auto table = std::make_shared(42); + auto tracker = ov::DimensionTracker(table); + tracker.set_up_for_tracking(shape); +} +} // namespace + +TEST_F(TransformationTestsF, NopBroadcastOpset1) { + { + auto shape = PartialShape::dynamic(4); + label_shape(shape); // we label shape with consecutive labels: 42, 43, 44, 45 + + auto data = make_shared(element::f32, shape); + + auto labeled_input = make_shared(element::f32, shape); + auto shape_of = make_shared(labeled_input); + auto ones = ov::op::v0::Constant::create(element::i64, {}, {1}); + auto maximum = make_shared(shape_of, ones); + + auto broadcast = make_shared(data, maximum); + auto relu = make_shared(broadcast); + + model = make_shared(NodeVector{relu}, ParameterVector{data, labeled_input}); + manager.register_pass(); + } + { + auto shape = PartialShape::dynamic(4); + label_shape(shape); // we label shape with consecutive labels: 42, 43, 44, 45 + + auto data = make_shared(element::f32, shape); + auto relu = make_shared(data); + + auto labeled_input = make_shared(element::f32, shape); + + model_ref = make_shared(NodeVector{relu}, ParameterVector{data, labeled_input}); + } +} + +TEST_F(TransformationTestsF, NopBroadcastOpset3) { + { + auto shape = PartialShape::dynamic(4); + label_shape(shape); // we label shape with consecutive labels: 42, 43, 44, 45 + + auto data = make_shared(element::f32, shape); + + auto labeled_input = make_shared(element::f32, shape); + auto shape_of = make_shared(labeled_input); + auto ones = ov::op::v0::Constant::create(element::i64, {4}, {1, 1, 1, 1}); + auto maximum = make_shared(shape_of, ones); + + auto broadcast = make_shared(data, maximum); + auto relu = make_shared(broadcast); + + model = make_shared(NodeVector{relu}, ParameterVector{data, labeled_input}); + manager.register_pass(); + } + { + auto shape = PartialShape::dynamic(4); + label_shape(shape); // we label shape with consecutive labels: 42, 43, 44, 45 + + auto data = make_shared(element::f32, shape); + auto relu = make_shared(data); + + auto labeled_input = make_shared(element::f32, shape); + + model_ref = make_shared(NodeVector{relu}, ParameterVector{data, labeled_input}); + } +} + +TEST_F(TransformationTestsF, NopBroadcastNegative) { + { + auto shape = PartialShape::dynamic(1); + label_shape(shape); // we label shape with consecutive labels: 42 + + auto data = make_shared(element::f32, shape); + + auto labeled_input = make_shared(element::f32, shape); + auto shape_of = make_shared(labeled_input); + auto ones = ov::op::v0::Constant::create(element::i64, {2}, {1, 1}); + auto maximum = make_shared(shape_of, ones); + + auto broadcast = make_shared(data, maximum); + auto relu = make_shared(broadcast); + + model = make_shared(NodeVector{relu}, ParameterVector{data, labeled_input}); + manager.register_pass(); + } +} diff --git a/src/core/dev_api/openvino/core/dimension_tracker.hpp b/src/core/dev_api/openvino/core/dimension_tracker.hpp index 198454cb28c496..612ab4a01f8318 100644 --- a/src/core/dev_api/openvino/core/dimension_tracker.hpp +++ b/src/core/dev_api/openvino/core/dimension_tracker.hpp @@ -9,6 +9,7 @@ #include #include "openvino/core/dimension.hpp" +#include "openvino/core/partial_shape.hpp" #include "openvino/core/type/element_type.hpp" namespace ov { @@ -31,6 +32,7 @@ class OPENVINO_API DimensionTracker { void set_table_of_equivalence(ov::Dimension& d) const; static const std::shared_ptr& get_table_of_equivalence(const ov::Dimension& d); + void set_up_for_tracking(ov::PartialShape& shape); void set_up_for_tracking(ov::Dimension& d); void set_up_for_tracking(ov::Dimension& d, label_t label) const; static void reset_tracking_info(ov::Dimension& d); diff --git a/src/core/include/openvino/op/util/symbolic_info.hpp b/src/core/include/openvino/op/util/symbolic_info.hpp new file mode 100644 index 00000000000000..fe58c4413d2baf --- /dev/null +++ b/src/core/include/openvino/op/util/symbolic_info.hpp @@ -0,0 +1,54 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include "openvino/core/node.hpp" +#include "openvino/core/runtime_attribute.hpp" +#include "openvino/core/visibility.hpp" + +namespace ov { + +OPENVINO_API void set_up_symbolic_info(const std::shared_ptr& model, + const std::shared_ptr& table); +OPENVINO_API void set_up_symbolic_info(const ov::Output& output, + const std::shared_ptr& table); + +OPENVINO_API void populate_tensor_with_missing_labels(ov::descriptor::Tensor& tensor); + +OPENVINO_API bool skip_invalidation(const ov::descriptor::Tensor& tensor); +OPENVINO_API std::shared_ptr table_of_equivalence(const std::shared_ptr& model); +OPENVINO_API std::shared_ptr table_of_equivalence(const ov::descriptor::Tensor& tensor); + +OPENVINO_API void remove_symbolic_info(const std::shared_ptr& model, bool outermost_model = true); + +/** + * @ingroup ie_runtime_attr_api + * @brief SymbolicInfo class represents runtime info attribute that instructs ov::Output objects to skip invalidation of + * partial values and labels during partial value propagation and keeps shared_ptr to TableOfEquivalence. + */ +class OPENVINO_API SymbolicInfo : public RuntimeAttribute { +public: + OPENVINO_RTTI("SymbolicInfo", "0"); + explicit SymbolicInfo(bool skip_invalidation, const std::shared_ptr& table) + : m_skip_invalidation{skip_invalidation}, + m_table{table} {}; + bool is_copyable() const override { + return false; + } + bool get_skip_invalidation() const { + return m_skip_invalidation; + } + std::shared_ptr get_table() const { + return m_table; + } + +private: + bool m_skip_invalidation; + std::shared_ptr m_table; +}; + +} // namespace ov diff --git a/src/core/shape_inference/include/slice_shape_inference.hpp b/src/core/shape_inference/include/slice_shape_inference.hpp index 83a4c4fef3dfa0..cd6c3b018bdf68 100644 --- a/src/core/shape_inference/include/slice_shape_inference.hpp +++ b/src/core/shape_inference/include/slice_shape_inference.hpp @@ -136,7 +136,8 @@ std::vector shape_infer(const Slice* op, } auto& last_dim = out[out.size() - 1]; - if (std::is_same::value && (last_dim == input_dim)) { + if (std::is_same::value && + (last_dim == input_dim && last_dim != Dimension::dynamic())) { // for equal ov::Dimension do merge to get input label (always success) DimType::merge(last_dim, last_dim, input_dim); } diff --git a/src/core/shape_inference/include/strided_slice_shape_inference.hpp b/src/core/shape_inference/include/strided_slice_shape_inference.hpp index 2a870f158bf113..4806cded4dce5e 100644 --- a/src/core/shape_inference/include/strided_slice_shape_inference.hpp +++ b/src/core/shape_inference/include/strided_slice_shape_inference.hpp @@ -176,7 +176,8 @@ std::vector shape_infer(const StridedSlice* op, const auto& stop = end_mask.count(axis) ? default_stop : (*end)[axis]; auto sliced_dim = slice::make_dim(input_dim, start, stop, stride); - if (std::is_same::value && (sliced_dim == input_dim)) { + if (std::is_same::value && + (sliced_dim == input_dim && sliced_dim != Dimension::dynamic())) { // for equal ov::Dimension do merge to get input label (always success) DimType::merge(sliced_dim, sliced_dim, input_dim); } diff --git a/src/core/src/bound_evaluate.cpp b/src/core/src/bound_evaluate.cpp index 49e32619766082..38d09dbcdf6fe4 100644 --- a/src/core/src/bound_evaluate.cpp +++ b/src/core/src/bound_evaluate.cpp @@ -7,6 +7,7 @@ #include "ngraph/validation_util.hpp" #include "openvino/core/dimension_tracker.hpp" #include "openvino/core/rt_info.hpp" +#include "openvino/op/util/symbolic_info.hpp" #include "openvino/opsets/opset10.hpp" #include "shape_util.hpp" #include "tensor_conversion_util.hpp" @@ -112,9 +113,16 @@ ov::Tensor evaluate_bound(const Output& output, bool is_upper, bool invali } } - if (node->evaluate_label(output_labels)) - for (size_t i = 0; i < outputs.size(); ++i) - node->get_output_tensor(i).set_value_label(output_labels[i]); + bool labels_evaluated = node->evaluate_label(output_labels); + for (size_t i = 0; i < outputs.size(); ++i) { + auto& out_tensor = node->get_output_tensor(i); + if (!out_tensor.get_value_label().empty()) + continue; + if (labels_evaluated) + out_tensor.set_value_label(output_labels[i]); + if (outputs[i]) + ov::populate_tensor_with_missing_labels(out_tensor); + } for (const auto& input : input_values) { auto& tensor = input.get_tensor(); @@ -329,8 +337,11 @@ std::pair ov::evaluate_both_bounds(const Output& o out_tensor.set_upper_value(outputs_upper[i]); } + if (!out_tensor.get_value_label().empty()) + continue; if (labels_evaluated) - node->get_output_tensor(i).set_value_label(output_labels[i]); + out_tensor.set_value_label(output_labels[i]); + ov::populate_tensor_with_missing_labels(node->get_output_tensor(i)); } for (const auto& input : node->input_values()) { auto& tensor = input.get_tensor(); diff --git a/src/core/src/descriptor/tensor.cpp b/src/core/src/descriptor/tensor.cpp index c0b2cb973f4a89..18c9fd3ff18f96 100644 --- a/src/core/src/descriptor/tensor.cpp +++ b/src/core/src/descriptor/tensor.cpp @@ -6,6 +6,7 @@ #include "openvino/core/except.hpp" #include "openvino/core/node.hpp" +#include "openvino/op/util/symbolic_info.hpp" ov::descriptor::Tensor::Tensor(const element::Type& element_type, const PartialShape& pshape, @@ -46,6 +47,8 @@ void ov::descriptor::Tensor::set_element_type(const element::Type& element_type) OPENVINO_SUPPRESS_DEPRECATED_END void ov::descriptor::Tensor::invalidate_values() { + if (ov::skip_invalidation(*this)) + return; m_upper_value = {}; m_lower_value = {}; m_value_label.clear(); diff --git a/src/core/src/dimension_tracker.cpp b/src/core/src/dimension_tracker.cpp index ec8d48472408a9..07bb1f52435657 100644 --- a/src/core/src/dimension_tracker.cpp +++ b/src/core/src/dimension_tracker.cpp @@ -86,4 +86,9 @@ void DimensionTracker::set_up_for_tracking(Dimension& d) { void DimensionTracker::set_up_for_tracking(Dimension& d, label_t label) const { set_label(d, label); set_table_of_equivalence(d); -} \ No newline at end of file +} + +void DimensionTracker::set_up_for_tracking(ov::PartialShape& shape) { + for (auto& d : shape) + set_up_for_tracking(d); +} diff --git a/src/core/src/op/util/symbolic_info.cpp b/src/core/src/op/util/symbolic_info.cpp new file mode 100644 index 00000000000000..5dd2858a4ee507 --- /dev/null +++ b/src/core/src/op/util/symbolic_info.cpp @@ -0,0 +1,83 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "openvino/op/util/symbolic_info.hpp" + +#include + +#include "openvino/core/dimension_tracker.hpp" +#include "openvino/op/util/multi_subgraph_base.hpp" + +namespace { +std::shared_ptr get_table(const ov::RTMap& rt_info) { + const auto& type = ov::SymbolicInfo::get_type_info_static(); + if (!rt_info.count(type)) + return nullptr; + return rt_info.at(type).as().get_table(); +} +} // namespace + +void ov::set_up_symbolic_info(const std::shared_ptr& model, + const std::shared_ptr& table) { + auto& rt_info = model->get_rt_info(); + rt_info[ov::SymbolicInfo::get_type_info_static()] = ov::SymbolicInfo(true, table); +} + +void ov::set_up_symbolic_info(const ov::Output& output, + const std::shared_ptr& table) { + auto& rt_info = output.get_tensor().get_rt_info(); + rt_info[ov::SymbolicInfo::get_type_info_static()] = ov::SymbolicInfo(true, table); +} + +bool ov::skip_invalidation(const ov::descriptor::Tensor& tensor) { + const auto& rt_info = tensor.get_rt_info(); + const auto& type = ov::SymbolicInfo::get_type_info_static(); + return rt_info.count(type) && rt_info.at(type).as().get_skip_invalidation(); +} + +std::shared_ptr ov::table_of_equivalence(const ov::descriptor::Tensor& tensor) { + const auto& rt_info = tensor.get_rt_info(); + return get_table(rt_info); +} + +std::shared_ptr ov::table_of_equivalence(const std::shared_ptr& model) { + const auto& rt_info = model->get_rt_info(); + return get_table(rt_info); +} + +void ov::populate_tensor_with_missing_labels(ov::descriptor::Tensor& tensor) { + if (auto table = ov::table_of_equivalence(tensor)) { + auto label_values = tensor.get_value_label(); + if (label_values.empty()) { + const auto& pshape = tensor.get_partial_shape(); + if (pshape.is_dynamic()) + return; + label_values.resize(ov::shape_size(pshape.to_shape()), ov::no_label); + } + for (auto& label : label_values) + if (label == ov::no_label) + label = table->get_next_label(); + tensor.set_value_label(label_values); + } +} + +void ov::remove_symbolic_info(const std::shared_ptr& model, bool outermost_model) { + const auto& type = ov::SymbolicInfo::get_type_info_static(); + auto& model_rt_info = model->get_rt_info(); + if (model_rt_info.count(type)) + model_rt_info.erase(type); + for (const auto& op : model->get_ops()) { + if (auto multi_subgraph_op = std::dynamic_pointer_cast(op)) + for (const auto& sub_graph : multi_subgraph_op->get_functions()) + if (sub_graph) + remove_symbolic_info(sub_graph, false); + for (auto& output : op->outputs()) { + auto& rt_info = output.get_tensor().get_rt_info(); + if (rt_info.count(type)) + rt_info.erase(type); + } + } + if (outermost_model) + model->validate_nodes_and_infer_types(); +} diff --git a/src/core/src/pass/manager.cpp b/src/core/src/pass/manager.cpp index f55e0c8b57a4f2..804ee9af0bfea2 100644 --- a/src/core/src/pass/manager.cpp +++ b/src/core/src/pass/manager.cpp @@ -135,7 +135,8 @@ bool ov::pass::Manager::run_passes(shared_ptr func) { index++; pass_timer.stop(); if (profile_enabled) { - cout << setw(7) << pass_timer.get_milliseconds() << "ms " << pass->get_name() << "\n"; + cout << setw(7) << pass_timer.get_milliseconds() << "ms" << (pass_applied ? " + " : " ") + << pass->get_name() << "\n"; } function_changed = function_changed || pass_applied; needs_validate = pass_applied; diff --git a/src/core/src/pass/visualize_tree.cpp b/src/core/src/pass/visualize_tree.cpp index 9aa4adf2378940..15f1bc410b2189 100644 --- a/src/core/src/pass/visualize_tree.cpp +++ b/src/core/src/pass/visualize_tree.cpp @@ -11,6 +11,7 @@ #include "openvino/core/type.hpp" #include "openvino/op/constant.hpp" #include "openvino/op/parameter.hpp" +#include "openvino/op/util/multi_subgraph_base.hpp" #include "openvino/op/util/op_types.hpp" #include "openvino/util/common_util.hpp" #include "openvino/util/env_util.hpp" @@ -165,6 +166,19 @@ static std::string get_attribute_values(const std::map& at return ss.str(); } +static std::string name_of_subgraph_file(const std::shared_ptr op, + const std::string& current_file_name, + const size_t& i) { + // friendly is never empty it is either friendly (set by user) or unique (auto-generated) name + auto node_name = op->get_friendly_name(); + std::replace(node_name.begin(), node_name.end(), '/', '-'); + auto postfix = "_node_" + node_name + "_subgraph_#" + std::to_string(i); + auto file_name = current_file_name; + auto insert_pos = file_name.find_last_of('.'); + file_name.insert(insert_pos, postfix); + return file_name; +} + bool ov::pass::VisualizeTree::run_on_model(const std::shared_ptr& f) { RUN_ON_MODEL_SCOPE(VisualizeTree); std::unordered_map height_maps; @@ -181,6 +195,14 @@ bool ov::pass::VisualizeTree::run_on_model(const std::shared_ptr& f) for (auto it = nodes.rbegin(); it != nodes.rend(); ++it) { auto& node = *it; + if (auto multi_subgraph_op = std::dynamic_pointer_cast(node)) { + for (size_t i = 0; i < multi_subgraph_op->get_internal_subgraphs_size(); ++i) + if (const auto& sub_graph = multi_subgraph_op->get_function(i)) + ov::pass::VisualizeTree(name_of_subgraph_file(multi_subgraph_op, m_name, i), + m_node_modifiers, + m_dot_only) + .run_on_model(sub_graph); + } for (auto& output : node->outputs()) { for (auto& input : output.get_target_inputs()) { auto target_node = input.get_node(); diff --git a/src/core/tests/type_prop/slice.cpp b/src/core/tests/type_prop/slice.cpp index b4ef1dcff27115..d62ce5001f928c 100644 --- a/src/core/tests/type_prop/slice.cpp +++ b/src/core/tests/type_prop/slice.cpp @@ -243,7 +243,7 @@ TEST(type_prop, slice_v8_basic_param_inputs_default_axes_labels_prop) { EXPECT_EQ(op->get_element_type(), et); EXPECT_EQ(op->get_output_partial_shape(0), expected_out_shape); EXPECT_THAT(get_shape_labels(op->get_output_partial_shape(0)), - ElementsAre(10, ov::no_label, ov::no_label, ov::no_label, 14, ov::no_label, 16, 17, 18)); + ElementsAre(10, ov::no_label, ov::no_label, ov::no_label, ov::no_label, ov::no_label, 16, 17, 18)); } TEST(type_prop, slice_v8_sss_param_inputs_mixed_neg_const_axes) { diff --git a/src/plugins/intel_cpu/src/transformations/cpu_opset/common/pass/ngram_fusion.cpp b/src/plugins/intel_cpu/src/transformations/cpu_opset/common/pass/ngram_fusion.cpp index c9b761470a133e..d941c247a005e8 100644 --- a/src/plugins/intel_cpu/src/transformations/cpu_opset/common/pass/ngram_fusion.cpp +++ b/src/plugins/intel_cpu/src/transformations/cpu_opset/common/pass/ngram_fusion.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -57,6 +58,12 @@ ov::intel_cpu::NgramFusion::NgramFusion() { auto idces_match = [](ov::Output output) -> bool { return ov::pass::pattern::rank_equals(2)(output) && ov::pass::pattern::type_matches(ov::element::i32)(output); }; + auto as_is_cropped_shape_match = [](ov::Output output) -> bool { + const auto& labels = output.get_tensor().get_value_label(); + return ov::pass::pattern::rank_equals(1)(output) && !labels.empty() && labels[0] != ov::no_label; + }; + + ov::label_t cropped_shape_label = ov::no_label; ov::Output tokens; // "as_is" input validation @@ -67,14 +74,11 @@ ov::intel_cpu::NgramFusion::NgramFusion() { ? ov::OutputVector{tokens_m, wrap_type()} : ov::OutputVector{wrap_type(), tokens_m, wrap_type()}; auto padded_tokens_m = wrap_type(padded_tokens_inputs); - auto shape_of_m = wrap_type({tokens_m}); - auto cropped_shape_m = wrap_type({shape_of_m, wrap_type(), wrap_type(), wrap_type()}); - + auto cropped_shape_m = any_input(as_is_cropped_shape_match); auto ss_bias = wrap_type(); auto ss_biased_shape_m = as_is_idx == 0 ? cropped_shape_m : wrap_type({cropped_shape_m, ss_bias}); - auto ss_end_reshape_m = wrap_type({ss_biased_shape_m, any_input()}); - auto cropped_tokens_m = wrap_type({padded_tokens_m, wrap_type(), ss_end_reshape_m, wrap_type()}); + auto cropped_tokens_m = wrap_type({padded_tokens_m, wrap_type(), ss_biased_shape_m, wrap_type()}); Matcher matcher(cropped_tokens_m); if (!matcher.match(inputs[as_is_idx])) { @@ -93,15 +97,27 @@ ov::intel_cpu::NgramFusion::NgramFusion() { concat_shape.rank() != tokens_shape.rank() || tokens_shape[1] * k != concat_shape[1]) { return false; } + // save label of cropped_shape and check it against first dimension of tokens shape + cropped_shape_label = pattern_map.at(cropped_shape_m).get_tensor().get_value_label()[0]; + if (ov::DimensionTracker::get_label(tokens_shape[0]) != cropped_shape_label) + return false; } + auto cropped_shape_label_match = [cropped_shape_label](ov::Output output) -> bool { + const auto& labels = output.get_tensor().get_value_label(); + return ov::pass::pattern::rank_equals(1)(output) && !labels.empty() && labels[0] != ov::no_label && labels[0] == cropped_shape_label; + }; + + auto tokens_label_match = [tokens_match, cropped_shape_label](ov::Output output) -> bool { + return tokens_match(output) && ov::DimensionTracker::get_label(output.get_partial_shape()[0]) == cropped_shape_label; + }; + ov::Output indices; // select branches validation { using namespace ov::opset1; - auto tokens_m = any_input(tokens_match); - auto shape_of_m = wrap_type({tokens_m}); - auto cropped_shape_m = wrap_type({shape_of_m, wrap_type(), wrap_type(), wrap_type()}); + auto tokens_m = any_input(tokens_label_match); + auto cropped_shape_m = any_input(cropped_shape_label_match); auto idces_m = any_input(idces_match); auto idces_concat_inputs = as_is_idx == 0 ? ov::OutputVector{idces_m, wrap_type()} @@ -111,17 +127,15 @@ ov::intel_cpu::NgramFusion::NgramFusion() { // left equal branch auto crop_left_bias_m = wrap_type(); auto crop_left_cropped_shape_m = std::make_shared( - ov::OutputVector{cropped_shape_m, wrap_type({cropped_shape_m, crop_left_bias_m})}); - auto crop_left_reshape_m = wrap_type({crop_left_cropped_shape_m, any_input()}); - auto idxes_crop_left_concat_m = wrap_type({crop_left_reshape_m, wrap_type()}); + ov::OutputVector{wrap_type({cropped_shape_m, crop_left_bias_m}), cropped_shape_m}); + auto idxes_crop_left_concat_m = wrap_type({crop_left_cropped_shape_m, wrap_type()}); auto idxes_crop_left_m = wrap_type({idces_concat_m, wrap_type(), idxes_crop_left_concat_m, wrap_type()}); // right equal branch auto crop_right_bias_m = wrap_type(); auto crop_right_cropped_shape_m = std::make_shared( - ov::OutputVector{cropped_shape_m, wrap_type({cropped_shape_m, crop_right_bias_m})}); - auto crop_right_reshape_m = wrap_type({crop_right_cropped_shape_m, any_input()}); - auto idxes_crop_right_concat_m = wrap_type({crop_right_reshape_m, wrap_type()}); + ov::OutputVector{wrap_type({cropped_shape_m, crop_right_bias_m}), cropped_shape_m}); + auto idxes_crop_right_concat_m = wrap_type({crop_right_cropped_shape_m, wrap_type()}); auto idxes_crop_right_m = wrap_type({idces_concat_m, wrap_type(), idxes_crop_right_concat_m, wrap_type()}); auto equal_m = wrap_type({idxes_crop_left_m, idxes_crop_right_m}); @@ -135,13 +149,11 @@ ov::intel_cpu::NgramFusion::NgramFusion() { auto then_cropped_shape_bias_m = wrap_type(); auto then_cropped_shape_m = std::make_shared( - ov::OutputVector{cropped_shape_m, wrap_type({cropped_shape_m, then_cropped_shape_bias_m})}); - auto then_crop_end_reshape_m = wrap_type({then_cropped_shape_m, wrap_type()}); - auto then_m = wrap_type({padded_tokens_m, wrap_type(), then_crop_end_reshape_m, wrap_type()}); + ov::OutputVector{wrap_type({cropped_shape_m, then_cropped_shape_bias_m}), cropped_shape_m}); + auto then_m = wrap_type({padded_tokens_m, wrap_type(), then_cropped_shape_m, wrap_type()}); // else branch - auto else_target_shape_reshape_m = wrap_type({cropped_shape_m, any_input()}); - auto else_target_shape_concat_m = wrap_type({else_target_shape_reshape_m, wrap_type()}); + auto else_target_shape_concat_m = wrap_type({cropped_shape_m, wrap_type()}); auto else_m = wrap_type({wrap_type(), else_target_shape_concat_m, wrap_type()}); auto select_m = wrap_type