add backend tests (#4611)
Co-authored-by: Patryk Elszkowski <patryk.elszkowki@intel.com>
This commit is contained in:
parent
98cc6e634a
commit
6d24629843
@ -76,3 +76,96 @@ NGRAPH_TEST(${BACKEND_NAME}, multiply_overload)
|
||||
test_case.add_expected_output<float>(shape, {5, 12, 21, 32});
|
||||
test_case.run();
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
template <typename Value>
|
||||
void multiply_broadcst()
|
||||
{
|
||||
const auto element_type = ngraph::element::from<Value>();
|
||||
const Shape shape_a{3, 2, 1};
|
||||
const Shape shape_b{1, 6};
|
||||
const Shape shape_o{3, 2, 6};
|
||||
std::vector<Value> in_a{12, 24, 36, 48, 60, 72};
|
||||
std::vector<Value> in_b{1, 2, 3, 4, 6, 1};
|
||||
// clang-format off
|
||||
std::vector<Value> out{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};
|
||||
// clang-format on
|
||||
|
||||
auto A = make_shared<op::Parameter>(element_type, shape_a);
|
||||
auto B = make_shared<op::Parameter>(element_type, shape_b);
|
||||
auto f = make_shared<Function>(make_shared<op::v1::Multiply>(A, B), ParameterVector{A, B});
|
||||
|
||||
auto backend = runtime::Backend::create("${BACKEND_NAME}");
|
||||
|
||||
// Create some tensors for input/output
|
||||
auto a = backend->create_tensor(element_type, shape_a, in_a.data());
|
||||
auto b = backend->create_tensor(element_type, shape_b, in_b.data());
|
||||
auto result = backend->create_tensor(element_type, shape_o);
|
||||
|
||||
auto handle = backend->compile(f);
|
||||
handle->call_with_validate({result}, {a, b});
|
||||
EXPECT_EQ(out, read_vector<Value>(result));
|
||||
}
|
||||
} // namespace
|
||||
|
||||
NGRAPH_TEST(${BACKEND_NAME}, multiply_int32_broadcast)
|
||||
{
|
||||
multiply_broadcst<int32_t>();
|
||||
}
|
||||
|
||||
NGRAPH_TEST(${BACKEND_NAME}, multiply_f32_broadcast)
|
||||
{
|
||||
multiply_broadcst<float>();
|
||||
}
|
||||
|
||||
NGRAPH_TEST(${BACKEND_NAME}, multiply_int32_scalar)
|
||||
{
|
||||
Shape shape{};
|
||||
|
||||
auto A = make_shared<op::Parameter>(element::i32, shape);
|
||||
auto B = make_shared<op::Parameter>(element::i32, shape);
|
||||
auto f = make_shared<Function>(make_shared<op::v1::Multiply>(A, B), ParameterVector{A, B});
|
||||
|
||||
auto backend = runtime::Backend::create("${BACKEND_NAME}");
|
||||
|
||||
// Create some tensors for input/output
|
||||
auto a = backend->create_tensor(element::i32, shape);
|
||||
copy_data(a, vector<int32_t>{2});
|
||||
auto b = backend->create_tensor(element::i32, shape);
|
||||
copy_data(b, vector<int32_t>{8});
|
||||
auto result = backend->create_tensor(element::i32, shape);
|
||||
|
||||
auto handle = backend->compile(f);
|
||||
handle->call_with_validate({result}, {a, b});
|
||||
EXPECT_EQ(vector<int32_t>{16}, read_vector<int32_t>(result));
|
||||
}
|
||||
|
||||
NGRAPH_TEST(${BACKEND_NAME}, multiply_f32_scalar)
|
||||
{
|
||||
Shape shape{};
|
||||
|
||||
auto A = make_shared<op::Parameter>(element::f32, shape);
|
||||
auto B = make_shared<op::Parameter>(element::f32, shape);
|
||||
auto f = make_shared<Function>(make_shared<op::v1::Multiply>(A, B), ParameterVector{A, B});
|
||||
|
||||
auto backend = runtime::Backend::create("${BACKEND_NAME}");
|
||||
|
||||
// Create some tensors for input/output
|
||||
auto a = backend->create_tensor(element::f32, shape);
|
||||
copy_data(a, vector<float>{3.1});
|
||||
auto b = backend->create_tensor(element::f32, shape);
|
||||
copy_data(b, vector<float>{8});
|
||||
auto result = backend->create_tensor(element::f32, shape);
|
||||
|
||||
auto handle = backend->compile(f);
|
||||
handle->call_with_validate({result}, {a, b});
|
||||
EXPECT_TRUE(test::all_close_f((vector<float>{24.8}), read_vector<float>(result)));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user