|
20 | 20 | #include "openvino/op/maximum.hpp"
|
21 | 21 | #include "openvino/op/matmul.hpp"
|
22 | 22 | #include "openvino/op/softmax.hpp"
|
| 23 | +#include "openvino/op/select.hpp" |
23 | 24 | #include <plugin/transformations/clamp_fp16_output.hpp>
|
24 | 25 | #include <transformations/init_node_info.hpp>
|
25 | 26 | #include <transformations/utils/utils.hpp>
|
@@ -159,6 +160,36 @@ TEST_F(TransformationTestsF, ClampFp16OutputTest6) {
|
159 | 160 | comparator.enable(FunctionsComparator::CmpValues::ATTRIBUTES);
|
160 | 161 | }
|
161 | 162 |
|
| 163 | +TEST_F(TransformationTestsF, ClampFp16OutputTest7) { |
| 164 | + { |
| 165 | + auto input1 = std::make_shared<ov::op::v0::Parameter>(ov::element::f16, ov::Shape{ 3, 2, 2 }); |
| 166 | + auto input2 = std::make_shared<ov::op::v0::Parameter>(ov::element::f16, ov::Shape{ 1, 2, 2 }); |
| 167 | + auto matmul = std::make_shared<ov::op::v0::MatMul>(input1, input2, true, false); |
| 168 | + auto data = std::make_shared<ov::op::v0::Parameter>(ov::element::f16, ov::Shape{ 3, 2, 2 }); |
| 169 | + auto cond = std::make_shared<ov::op::v0::Parameter>(ov::element::boolean, ov::Shape{ 3, 2, 2 }); |
| 170 | + auto select = std::make_shared<ov::op::v1::Select>(cond, data, matmul); |
| 171 | + auto softmax = std::make_shared<ov::op::v8::Softmax>(select, 1); |
| 172 | + |
| 173 | + model = std::make_shared<ov::Model>(ov::OutputVector{softmax}, ov::ParameterVector{input1, input2, data, cond}); |
| 174 | + manager.register_pass<ClampFP16Output>(); |
| 175 | + } |
| 176 | + { |
| 177 | + auto input1 = std::make_shared<ov::op::v0::Parameter>(ov::element::f16, ov::Shape{ 3, 2, 2 }); |
| 178 | + auto input2 = std::make_shared<ov::op::v0::Parameter>(ov::element::f16, ov::Shape{ 1, 2, 2 }); |
| 179 | + auto matmul = std::make_shared<ov::op::v0::MatMul>(input1, input2, true, false); |
| 180 | + auto data = std::make_shared<ov::op::v0::Parameter>(ov::element::f16, ov::Shape{ 3, 2, 2 }); |
| 181 | + auto cond = std::make_shared<ov::op::v0::Parameter>(ov::element::boolean, ov::Shape{ 3, 2, 2 }); |
| 182 | + auto select = std::make_shared<ov::op::v1::Select>(cond, data, matmul); |
| 183 | + auto min = static_cast<double>(std::numeric_limits<ov::float16>::lowest()); |
| 184 | + auto max = static_cast<double>(std::numeric_limits<ov::float16>::max()); |
| 185 | + auto clamp = std::make_shared<ov::op::v0::Clamp>(select, min, max); |
| 186 | + auto softmax = std::make_shared<ov::op::v8::Softmax>(clamp, 1); |
| 187 | + |
| 188 | + model_ref = std::make_shared<ov::Model>(ov::OutputVector{softmax}, ov::ParameterVector{input1, input2, data, cond}); |
| 189 | + } |
| 190 | + comparator.enable(FunctionsComparator::CmpValues::ATTRIBUTES); |
| 191 | +} |
| 192 | + |
162 | 193 | TEST_F(TransformationTestsF, ClampFp16OutputRMS) {
|
163 | 194 | {
|
164 | 195 | auto input1 = std::make_shared<ov::op::v0::Parameter>(ov::element::f16, ov::PartialShape{ -1, -1, 2560 });
|
|
0 commit comments