// Copyright (C) 2018-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #include #include #include #include #include "gtest/gtest.h" #include "ngraph/log.hpp" #include "ngraph/ngraph.hpp" #include "runtime/interpreter/int_executable.hpp" #include "util/test_tools.hpp" NGRAPH_SUPPRESS_DEPRECATED_START using namespace std; using namespace ngraph; TEST(INTERPRETER, nan_check_input) { Shape shape{4}; auto A = make_shared(element::f32, shape); auto B = make_shared(element::f32, shape); auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); shared_ptr backend = runtime::Backend::create("INTERPRETER"); // Create some tensors for input/output auto a = backend->create_tensor(element::f32, shape); copy_data(a, vector{2, 4, NAN, 16}); auto b = backend->create_tensor(element::f32, shape); copy_data(b, vector{1, 2, 1, 8}); auto result = backend->create_tensor(element::f32, shape); shared_ptr handle = backend->compile(f); shared_ptr ihandle = static_pointer_cast(handle); ihandle->set_nan_check(true); EXPECT_ANY_THROW(handle->call_with_validate({result}, {a, b})); } TEST(INTERPRETER, nan_check_output) { Shape shape{4}; auto A = make_shared(element::f32, shape); auto B = make_shared(element::f32, shape); auto f = make_shared(make_shared(A, B), ParameterVector{A, B}); shared_ptr backend = runtime::Backend::create("INTERPRETER"); // Create some tensors for input/output auto a = backend->create_tensor(element::f32, shape); copy_data(a, vector{2, 4, 0, 16}); auto b = backend->create_tensor(element::f32, shape); copy_data(b, vector{1, 2, 0, 8}); auto result = backend->create_tensor(element::f32, shape); shared_ptr handle = backend->compile(f); shared_ptr ihandle = static_pointer_cast(handle); ihandle->set_nan_check(true); EXPECT_ANY_THROW(handle->call_with_validate({result}, {a, b})); }