2
2
// SPDX-License-Identifier: Apache-2.0
3
3
4
4
// ! [ov:imports]
5
- #include < gtest/gtest.h>
6
-
7
- #include " common_test_utils/matcher.hpp"
8
5
#include " openvino/op/abs.hpp"
9
6
#include " openvino/op/add.hpp"
10
7
#include " openvino/op/matmul.hpp"
@@ -22,7 +19,7 @@ using namespace std;
22
19
// ! [ov:imports]
23
20
24
21
// ! [ov:create_simple_model_and_pattern]
25
- TEST (pattern, simple_model_and_pattern ) {
22
+ void create_simple_model_and_pattern ( ) {
26
23
// Create a sample model
27
24
PartialShape shape{2 , 2 };
28
25
auto model_param1 = std::make_shared<ov::op::v0::Parameter>(element::i32, shape);
@@ -39,17 +36,13 @@ TEST(pattern, simple_model_and_pattern) {
39
36
auto pattern_abs = std::make_shared<ov::op::v0::Abs>(pattern_mul->output (0 ));
40
37
auto pattern_relu = std::make_shared<ov::op::v0::Relu>(pattern_abs->output (0 ));
41
38
42
- // Create a matcher and try to match the nodes
43
- TestMatcher tm ;
44
-
45
- // Should perfectly match
46
- ASSERT_TRUE (tm .match (pattern_relu, model_relu));
39
+ // pattern_relu should perfectly match model_relu
47
40
}
48
41
// ! [ov:create_simple_model_and_pattern]
49
42
50
43
51
44
// ! [ov:create_simple_model_and_pattern_wrap_type]
52
- TEST (pattern, simple_model_and_pattern_wrap_type ) {
45
+ void create_simple_model_and_pattern_wrap_type ( ) {
53
46
// Create a sample model
54
47
PartialShape shape{2 , 2 };
55
48
auto model_param1 = std::make_shared<ov::op::v0::Parameter>(element::i32, shape);
@@ -66,17 +59,13 @@ TEST(pattern, simple_model_and_pattern_wrap_type) {
66
59
auto pattern_abs = ov::pass::pattern::wrap_type<ov::op::v0::Abs>({pattern_mul->output (0 )});
67
60
auto pattern_relu = ov::pass::pattern::wrap_type<ov::op::v0::Relu>({pattern_abs->output (0 )});
68
61
69
- // Create a matcher and try to match the nodes
70
- TestMatcher tm ;
71
-
72
- // Should perfectly match
73
- ASSERT_TRUE (tm .match (pattern_relu, model_relu));
62
+ // pattern_relu should perfectly match model_relu
74
63
}
75
64
// ! [ov:create_simple_model_and_pattern_wrap_type]
76
65
77
66
78
67
// ! [ov:wrap_type_list]
79
- TEST (pattern, wrap_type_list) {
68
+ void wrap_type_list ( ) {
80
69
// Create a sample model
81
70
PartialShape shape{2 , 2 };
82
71
auto model_param1 = std::make_shared<ov::op::v0::Parameter>(element::i32, shape);
@@ -95,45 +84,42 @@ TEST(pattern, wrap_type_list) {
95
84
auto pattern_abs = ov::pass::pattern::wrap_type<ov::op::v0::Abs>({pattern_mul->output (0 )});
96
85
auto pattern_relu = ov::pass::pattern::wrap_type<ov::op::v0::Relu, ov::op::v0::Sigmoid>({pattern_abs->output (0 )});
97
86
98
- // Create a matcher and try to match the nodes
99
- TestMatcher tm ;
100
-
101
- // The same pattern perfectly matches 2 different nodes
102
- ASSERT_TRUE (tm .match (pattern_relu, model_relu));
103
- ASSERT_TRUE (tm .match (pattern_relu, model_sig));
87
+ // pattern_relu should perfectly matches model_relu and model_sig
104
88
}
105
89
// ! [ov:wrap_type_list]
106
90
107
91
void patterns_misc () {
108
- // ! [ov:any_input]
109
- auto pattern_mul = ov::pass::pattern::wrap_type<ov::op::v0::MatMul>({pattern::any_input (), pattern::any_input ()});
110
- auto pattern_abs = ov::pass::pattern::wrap_type<ov::op::v0::Abs>({pattern_mul->output (0 )});
111
- auto pattern_relu = ov::pass::pattern::wrap_type<ov::op::v0::Relu>({pattern_abs->output (0 )});
112
- // ! [ov:any_input]
113
-
114
- // ! [ov:wrap_type_predicate]
115
- ov::pass::pattern::wrap_type<ov::op::v0::Relu>({pattern::any_input ()}, pattern::consumers_count (2 ));
116
- // ! [ov:wrap_type_predicate]
117
-
118
-
119
- // ! [ov:any_input_predicate]
120
- auto pattern_mul = ov::pass::pattern::wrap_type<ov::op::v0::MatMul>({pattern::any_input ([](const Output<Node>& value){
121
- return value.get_shape ().size () == 4 ;}),
122
- pattern::any_input ([](const Output<Node>& value){
123
- return value.get_shape ().size () == 4 ;})});
124
- auto pattern_abs = ov::pass::pattern::wrap_type<ov::op::v0::Abs>({pattern_mul->output (0 )});
125
- auto pattern_relu = ov::pass::pattern::wrap_type<ov::op::v0::Relu>({pattern_abs->output (0 )});
126
- // ! [ov:any_input_predicate]
127
-
128
-
129
- // ! [ov:optional_predicate]
130
- auto pattern_sig_opt = ov::pass::pattern::optional<ov::op::v0::Sigmoid>(pattern_relu, pattern::consumers_count (2 ));
131
- // ! [ov:optional_predicate]
92
+ {
93
+ // ! [ov:any_input]
94
+ auto pattern_mul = ov::pass::pattern::wrap_type<ov::op::v0::MatMul>({pattern::any_input (), pattern::any_input ()});
95
+ auto pattern_abs = ov::pass::pattern::wrap_type<ov::op::v0::Abs>({pattern_mul->output (0 )});
96
+ auto pattern_relu = ov::pass::pattern::wrap_type<ov::op::v0::Relu>({pattern_abs->output (0 )});
97
+ // ! [ov:any_input]
98
+
99
+ // ! [ov:wrap_type_predicate]
100
+ ov::pass::pattern::wrap_type<ov::op::v0::Relu>({pattern::any_input ()}, pattern::consumers_count (2 ));
101
+ // ! [ov:wrap_type_predicate]
102
+ }
103
+ {
104
+ // ! [ov:any_input_predicate]
105
+ auto pattern_mul = ov::pass::pattern::wrap_type<ov::op::v0::MatMul>({pattern::any_input ([](const Output<Node>& value){
106
+ return value.get_shape ().size () == 4 ;}),
107
+ pattern::any_input ([](const Output<Node>& value){
108
+ return value.get_shape ().size () == 4 ;})});
109
+ auto pattern_abs = ov::pass::pattern::wrap_type<ov::op::v0::Abs>({pattern_mul->output (0 )});
110
+ auto pattern_relu = ov::pass::pattern::wrap_type<ov::op::v0::Relu>({pattern_abs->output (0 )});
111
+ // ! [ov:any_input_predicate]
112
+
113
+
114
+ // ! [ov:optional_predicate]
115
+ auto pattern_sig_opt = ov::pass::pattern::optional<ov::op::v0::Sigmoid>(pattern_relu, pattern::consumers_count (2 ));
116
+ // ! [ov:optional_predicate]
117
+ }
132
118
}
133
119
134
120
135
121
// ! [ov:pattern_or]
136
- TEST (pattern, pattern_or) {
122
+ void pattern_or ( ) {
137
123
// Create a sample model
138
124
PartialShape shape{2 , 2 };
139
125
auto model_param1 = std::make_shared<ov::op::v0::Parameter>(element::i32, shape);
@@ -158,17 +144,13 @@ TEST(pattern, pattern_or) {
158
144
// Create Or node
159
145
auto pattern_or = std::make_shared<ov::pass::pattern::op::Or>(OutputVector{red_pattern_sigmoid->output (0 ), blue_pattern_relu->output (0 )});
160
146
161
- // Create a matcher and try to match the nodes
162
- TestMatcher tm ;
163
-
164
- // The same pattern perfectly matches 2 different nodes
165
- ASSERT_TRUE (tm .match (pattern_or, model_relu));
147
+ // pattern_or should perfectly matches model_relu
166
148
}
167
149
// ! [ov:pattern_or]
168
150
169
151
170
152
// ! [ov:pattern_optional_middle]
171
- TEST (pattern, pattern_optional_middle) {
153
+ void pattern_optional_middle ( ) {
172
154
// Create a sample model
173
155
PartialShape shape{2 , 2 };
174
156
auto model_param1 = std::make_shared<ov::op::v0::Parameter>(element::i32, shape);
@@ -186,17 +168,13 @@ TEST(pattern, pattern_optional_middle) {
186
168
auto pattern_sig_opt = ov::pass::pattern::optional<ov::op::v0::Sigmoid>({pattern_abs->output (0 )});
187
169
auto pattern_relu = ov::pass::pattern::wrap_type<ov::op::v0::Relu>({pattern_sig_opt->output (0 )});
188
170
189
- // Create a matcher and try to match the nodes
190
- TestMatcher tm ;
191
-
192
- // Should perfectly match
193
- ASSERT_TRUE (tm .match (pattern_relu, model_relu));
171
+ // pattern_relu should perfectly match model_relu
194
172
}
195
173
// ! [ov:pattern_optional_middle]
196
174
197
175
198
176
// ! [ov:pattern_optional_top]
199
- TEST (pattern, pattern_optional_top) {
177
+ void pattern_optional_top ( ) {
200
178
// Create a sample model
201
179
PartialShape shape{2 , 2 };
202
180
auto model_param1 = std::make_shared<ov::op::v0::Parameter>(element::i32, shape);
@@ -214,17 +192,13 @@ TEST(pattern, pattern_optional_top) {
214
192
auto pattern_abs = ov::pass::pattern::wrap_type<ov::op::v0::Abs>({pattern_mul->output (0 )});
215
193
auto pattern_relu = ov::pass::pattern::wrap_type<ov::op::v0::Relu>({pattern_abs->output (0 )});
216
194
217
- // Create a matcher and try to match the nodes
218
- TestMatcher tm ;
219
-
220
- // Should perfectly match
221
- ASSERT_TRUE (tm .match (pattern_relu, model_relu));
195
+ // pattern_relu should perfectly match model_relu
222
196
}
223
197
// ! [ov:pattern_optional_top]
224
198
225
199
226
200
// ! [ov:pattern_optional_root]
227
- TEST (pattern, pattern_optional_root) {
201
+ void pattern_optional_root ( ) {
228
202
// Create a sample model
229
203
PartialShape shape{2 , 2 };
230
204
auto model_param1 = std::make_shared<ov::op::v0::Parameter>(element::i32, shape);
@@ -242,10 +216,6 @@ TEST(pattern, pattern_optional_root) {
242
216
auto pattern_relu = ov::pass::pattern::wrap_type<ov::op::v0::Relu>({pattern_abs->output (0 )});
243
217
auto pattern_sig_opt = ov::pass::pattern::optional<ov::op::v0::Sigmoid>(pattern_relu);
244
218
245
- // Create a matcher and try to match the nodes
246
- TestMatcher tm ;
247
-
248
- // Should perfectly match
249
- ASSERT_TRUE (tm .match (pattern_relu, model_relu));
219
+ // pattern_relu should perfectly match model_relu
250
220
}
251
221
// ! [ov:pattern_optional_root]
0 commit comments