Unverified Commit 6e56fb57 authored by Cagri Eryilmaz's avatar Cagri Eryilmaz Committed by GitHub
Browse files

Lessorequal operator (#772)



* onnx tests for lessorequal operator

* lessorequal operator implementation

* added test to verify_onnx.cpp

* changes to tests

* formatting

* fixing tidy
Co-authored-by: default avatarmvermeulen <5479696+mvermeulen@users.noreply.github.com>
parent 63e04f59
#include <migraphx/onnx/op_parser.hpp>
#include <migraphx/onnx/checks.hpp>
#include <migraphx/instruction.hpp>
#include <migraphx/make_op.hpp>
namespace migraphx {
inline namespace MIGRAPHX_INLINE_NS {
namespace onnx {
struct parse_lessorequal : op_parser<parse_lessorequal>
{
std::vector<op_desc> operators() const { return {{"LessOrEqual"}}; }
instruction_ref parse(const op_desc& /*opd*/,
const onnx_parser& /*parser*/,
const onnx_parser::node_info& info,
std::vector<instruction_ref> args) const
{
auto int_res = info.add_instruction(make_op("greater"), args[0], args[1]);
return info.add_instruction(make_op("not"), int_res);
}
};
} // namespace onnx
} // namespace MIGRAPHX_INLINE_NS
} // namespace migraphx
...@@ -1293,6 +1293,22 @@ def less_bool_test(): ...@@ -1293,6 +1293,22 @@ def less_bool_test():
return ([node1, node2], [x1, x2], [y]) return ([node1, node2], [x1, x2], [y])
@onnx_test
def lessorequal_test():
x1 = helper.make_tensor_value_info('x1', TensorProto.FLOAT, [3])
x2 = helper.make_tensor_value_info('x2', TensorProto.FLOAT, [3])
y = helper.make_tensor_value_info('y', TensorProto.FLOAT, [3])
node = onnx.helper.make_node(
'LessOrEqual',
inputs=['x1', 'x2'],
outputs=['y'],
)
return ([node], [x1, x2], [y])
@onnx_test @onnx_test
def erf_test(): def erf_test():
x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10, 15]) x = helper.make_tensor_value_info('x', TensorProto.FLOAT, [10, 15])
......
lessorequal_test:a

x1
x2y" LessOrEquallessorequal_testZ
x1

Z
x2

b
y

B
\ No newline at end of file
...@@ -1643,6 +1643,22 @@ TEST_CASE(less_bool_test) ...@@ -1643,6 +1643,22 @@ TEST_CASE(less_bool_test)
EXPECT(p == prog); EXPECT(p == prog);
} }
TEST_CASE(lessorequal_test)
{
migraphx::program p;
auto* mm = p.get_main_module();
auto input1 = mm->add_parameter("x1", migraphx::shape{migraphx::shape::float_type, {3}});
auto input2 = mm->add_parameter("x2", migraphx::shape{migraphx::shape::float_type, {3}});
auto temp = mm->add_instruction(migraphx::make_op("greater"), input1, input2);
auto le = mm->add_instruction(migraphx::make_op("not"), temp);
mm->add_return({le});
auto prog = migraphx::parse_onnx("lessorequal_test.onnx");
EXPECT(p == prog);
}
TEST_CASE(log_test) TEST_CASE(log_test)
{ {
migraphx::program p; migraphx::program p;
......
...@@ -146,6 +146,27 @@ TEST_CASE(instance_norm_3d_test) ...@@ -146,6 +146,27 @@ TEST_CASE(instance_norm_3d_test)
EXPECT(migraphx::verify_range(result_vector, gold)); EXPECT(migraphx::verify_range(result_vector, gold));
} }
TEST_CASE(lessorequal_test)
{
migraphx::program p = migraphx::parse_onnx("lessorequal_test.onnx");
p.compile(migraphx::ref::target{});
migraphx::shape s{migraphx::shape::float_type, {3}};
std::vector<float> data1 = { 0.25, 0.75, 0.9375};
std::vector<float> data2 = { 0.25, 0.74, 0.9411};
migraphx::parameter_map pp;
pp["x1"] = migraphx::argument(s, data1.data());
pp["x2"] = migraphx::argument(s, data2.data());
auto result = p.eval(pp).back();
std::vector<float> result_vector;
result.visit([&](auto output) { result_vector.assign(output.begin(), output.end()); });
std::vector<float> gold = {1,0,1};
EXPECT(migraphx::verify_range(result_vector, gold));
}
TEST_CASE(resize_test) TEST_CASE(resize_test)
{ {
migraphx::program p = migraphx::parse_onnx("resize_upsample_pf_test.onnx"); migraphx::program p = migraphx::parse_onnx("resize_upsample_pf_test.onnx");
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment