onnx_test.cpp 16.4 KB
Newer Older
Scott Thornton's avatar
Scott Thornton committed
1
2
#include <iostream>
#include <vector>
Paul's avatar
Paul committed
3
4
5
6
7
#include <migraphx/literal.hpp>
#include <migraphx/operators.hpp>
#include <migraphx/program.hpp>
#include <migraphx/instruction.hpp>
#include <migraphx/onnx.hpp>
Scott Thornton's avatar
Scott Thornton committed
8
9
#include "test.hpp"

Khalique's avatar
Khalique committed
10
TEST_CASE(pytorch_conv_bias_test)
Scott Thornton's avatar
Scott Thornton committed
11
{
Paul's avatar
Paul committed
12
13
14
15
    migraphx::program p;
    auto l0       = p.add_parameter("0", {migraphx::shape::float_type, {1, 3, 32, 32}});
    auto l1       = p.add_parameter("1", {migraphx::shape::float_type, {1, 3, 5, 5}});
    auto l2       = p.add_parameter("2", {migraphx::shape::float_type, {1}});
Scott Thornton's avatar
Scott Thornton committed
16
    uint64_t axis = 1;
Paul's avatar
Paul committed
17
18
19
    auto l3       = p.add_instruction(migraphx::op::convolution{}, l0, l1);
    auto l4       = p.add_instruction(migraphx::op::broadcast{axis, l3->get_shape()}, l2);
    p.add_instruction(migraphx::op::add{}, l3, l4);
Scott Thornton's avatar
Scott Thornton committed
20

Paul's avatar
Paul committed
21
    auto prog = migraphx::parse_onnx("conv.onnx");
Scott Thornton's avatar
Scott Thornton committed
22
23
24
    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
25
TEST_CASE(pytorch_conv_relu_maxpool)
Scott Thornton's avatar
Scott Thornton committed
26
{
Paul's avatar
Paul committed
27
28
29
30
    migraphx::program p;
    auto l0       = p.add_parameter("0", {migraphx::shape::float_type, {1, 3, 32, 32}});
    auto l1       = p.add_parameter("1", {migraphx::shape::float_type, {1, 3, 5, 5}});
    auto l2       = p.add_parameter("2", {migraphx::shape::float_type, {1}});
Scott Thornton's avatar
Scott Thornton committed
31
    uint64_t axis = 1;
Paul's avatar
Paul committed
32
33
34
35
36
    auto l3       = p.add_instruction(migraphx::op::convolution{}, l0, l1);
    auto l4       = p.add_instruction(migraphx::op::broadcast{axis, l3->get_shape()}, l2);
    auto l5       = p.add_instruction(migraphx::op::add{}, l3, l4);
    auto l6       = p.add_instruction(migraphx::op::relu{}, l5);
    p.add_instruction(migraphx::op::pooling{"max", {{0, 0}}, {{2, 2}}, {{2, 2}}}, l6);
Scott Thornton's avatar
Scott Thornton committed
37

Paul's avatar
Paul committed
38
    auto prog = migraphx::parse_onnx("conv_relu_maxpool.onnx");
Scott Thornton's avatar
Scott Thornton committed
39
40
41
    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
42
TEST_CASE(pytorch_conv_bn_relu_maxpool)
43
{
Paul's avatar
Paul committed
44
45
46
47
48
49
50
51
52
    migraphx::program p;
    auto l0 = p.add_parameter("0", {migraphx::shape::float_type, {1, 3, 32, 32}});
    auto l1 = p.add_parameter("1", {migraphx::shape::float_type, {1, 3, 5, 5}});
    auto l2 = p.add_parameter("2", {migraphx::shape::float_type, {1}});

    auto p3       = p.add_parameter("3", {migraphx::shape::float_type, {1}});
    auto p4       = p.add_parameter("4", {migraphx::shape::float_type, {1}});
    auto p5       = p.add_parameter("5", {migraphx::shape::float_type, {1}});
    auto p6       = p.add_parameter("6", {migraphx::shape::float_type, {1}});
53
    uint64_t axis = 1;
Paul's avatar
Paul committed
54
55
56
57
58
59
60
61
    auto l3       = p.add_instruction(migraphx::op::convolution{}, l0, l1);
    auto l4       = p.add_instruction(migraphx::op::broadcast{axis, l3->get_shape()}, l2);
    auto l5       = p.add_instruction(migraphx::op::add{}, l3, l4);
    auto l6 = p.add_instruction(migraphx::op::batch_norm_inference{1.0e-5f}, l5, p3, p4, p5, p6);
    auto l7 = p.add_instruction(migraphx::op::relu{}, l6);
    p.add_instruction(migraphx::op::pooling{"max", {{0, 0}}, {{2, 2}}, {{2, 2}}}, l7);

    auto prog = migraphx::parse_onnx("conv_bn_relu_maxpool.onnx");
62
63
64
    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
65
TEST_CASE(pytorch_conv_relu_maxpool_x2)
Scott Thornton's avatar
Scott Thornton committed
66
{
Paul's avatar
Paul committed
67
68
69
70
    migraphx::program p;
    auto l0       = p.add_parameter("0", {migraphx::shape::float_type, {1, 3, 32, 32}});
    auto l1       = p.add_parameter("1", {migraphx::shape::float_type, {5, 3, 5, 5}});
    auto l2       = p.add_parameter("2", {migraphx::shape::float_type, {5}});
Scott Thornton's avatar
Scott Thornton committed
71
    uint64_t axis = 1;
Paul's avatar
Paul committed
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
    auto l3       = p.add_instruction(migraphx::op::convolution{}, l0, l1);
    auto l4       = p.add_instruction(migraphx::op::broadcast{axis, l3->get_shape()}, l2);
    auto l5       = p.add_instruction(migraphx::op::add{}, l3, l4);
    auto l6       = p.add_instruction(migraphx::op::relu{}, l5);
    auto l7 = p.add_instruction(migraphx::op::pooling{"max", {{0, 0}}, {{2, 2}}, {{2, 2}}}, l6);

    auto l8  = p.add_parameter("3", {migraphx::shape::float_type, {1, 5, 5, 5}});
    auto l9  = p.add_parameter("4", {migraphx::shape::float_type, {1}});
    auto l10 = p.add_instruction(migraphx::op::convolution{}, l7, l8);
    auto l11 = p.add_instruction(migraphx::op::broadcast{axis, l10->get_shape()}, l9);
    auto l12 = p.add_instruction(migraphx::op::add{}, l10, l11);
    auto l13 = p.add_instruction(migraphx::op::relu{}, l12);
    p.add_instruction(migraphx::op::pooling{"max", {{0, 0}}, {{2, 2}}, {{2, 2}}}, l13);

    auto prog = migraphx::parse_onnx("conv_relu_maxpoolX2.onnx");
Scott Thornton's avatar
Scott Thornton committed
87
88
89
90

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
91
TEST_CASE(leaky_relu_test)
92
{
Paul's avatar
Paul committed
93
    migraphx::program p;
94
    float alpha = 0.01f;
Paul's avatar
Paul committed
95
96
    auto l0     = p.add_parameter("0", {migraphx::shape::float_type, {3}});
    p.add_instruction(migraphx::op::leaky_relu{alpha}, l0);
97

Paul's avatar
Paul committed
98
    auto prog = migraphx::parse_onnx("leaky_relu.onnx");
99
100
101
102

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
103
TEST_CASE(imagescaler_test)
Khalique's avatar
Khalique committed
104
{
Paul's avatar
Paul committed
105
106
    migraphx::program p;
    migraphx::shape s{migraphx::shape::float_type, {1, 3, 16, 16}};
Khalique's avatar
Khalique committed
107
    auto l0        = p.add_parameter("0", s);
Khalique's avatar
Khalique committed
108
    auto scale_val = p.add_literal(0.5f);
Khalique's avatar
Khalique committed
109
    auto bias_vals = p.add_literal(
Paul's avatar
Paul committed
110
111
112
113
114
        migraphx::literal{migraphx::shape{migraphx::shape::float_type, {3}}, {0.01, 0.02, 0.03}});
    auto scaled_tensor = p.add_instruction(migraphx::op::scalar{s}, scale_val);
    auto img_scaled    = p.add_instruction(migraphx::op::mul{}, l0, scaled_tensor);
    auto bias_bcast    = p.add_instruction(migraphx::op::broadcast{1, s}, bias_vals);
    p.add_instruction(migraphx::op::add{}, img_scaled, bias_bcast);
Khalique's avatar
Khalique committed
115

Paul's avatar
Paul committed
116
    auto prog = migraphx::parse_onnx("imagescaler_test.onnx");
Khalique's avatar
Khalique committed
117
118
119
120

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
121
TEST_CASE(globalavgpool_test)
122
{
Paul's avatar
Paul committed
123
124
125
    migraphx::program p;
    auto input = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {1, 3, 16, 16}});
    auto op    = migraphx::op::pooling{"average"};
126
    auto lens  = input->get_shape().lens();
Khalique's avatar
Khalique committed
127
    op.lengths = {lens[2], lens[3]};
128
129
    p.add_instruction(op, input);

Paul's avatar
Paul committed
130
    auto prog = migraphx::parse_onnx("globalavgpool_test.onnx");
131
132
133
134

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
135
TEST_CASE(globalmaxpool_test)
136
{
Paul's avatar
Paul committed
137
138
139
    migraphx::program p;
    auto input = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {1, 3, 16, 16}});
    auto op    = migraphx::op::pooling{"max"};
140
    auto lens  = input->get_shape().lens();
Khalique's avatar
Khalique committed
141
    op.lengths = {lens[2], lens[3]};
142
143
    p.add_instruction(op, input);

Paul's avatar
Paul committed
144
    auto prog = migraphx::parse_onnx("globalmaxpool_test.onnx");
145
146
147
148

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
149
TEST_CASE(transpose_test)
Khalique's avatar
Khalique committed
150
{
Paul's avatar
Paul committed
151
152
    migraphx::program p;
    auto input = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {1, 2, 2, 3}});
Khalique's avatar
Khalique committed
153
    std::vector<int64_t> perm{0, 3, 1, 2};
Paul's avatar
Paul committed
154
    p.add_instruction(migraphx::op::transpose{perm}, input);
Khalique's avatar
Khalique committed
155

Paul's avatar
Paul committed
156
    auto prog = migraphx::parse_onnx("transpose_test.onnx");
Khalique's avatar
Khalique committed
157
158
159
160

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
161
TEST_CASE(dropout_test)
Khalique's avatar
Khalique committed
162
{
Paul's avatar
Paul committed
163
164
165
    migraphx::program p;
    auto input = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {1, 3, 2, 2}});
    p.add_instruction(migraphx::op::identity{}, input);
Khalique's avatar
Khalique committed
166

Paul's avatar
Paul committed
167
    auto prog = migraphx::parse_onnx("dropout_test.onnx");
Khalique's avatar
Khalique committed
168
169
170
171

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
172
TEST_CASE(sum_test)
Khalique's avatar
Khalique committed
173
174
175
176
177
{
    migraphx::program p;
    auto input0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {3}});
    auto input1 = p.add_parameter("1", migraphx::shape{migraphx::shape::float_type, {3}});
    auto input2 = p.add_parameter("2", migraphx::shape{migraphx::shape::float_type, {3}});
Khalique's avatar
Khalique committed
178
    auto l0     = p.add_instruction(migraphx::op::add{}, input0, input1);
Khalique's avatar
Khalique committed
179
180
181
    p.add_instruction(migraphx::op::add{}, l0, input2);

    auto prog = migraphx::parse_onnx("sum_test.onnx");
182
183
184
    EXPECT(p == prog);
}

Shucai Xiao's avatar
Shucai Xiao committed
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
void exp_test()
{
    migraphx::program p;
    auto input = p.add_parameter("x", migraphx::shape{migraphx::shape::float_type, {10}});
    p.add_instruction(migraphx::op::exp{}, input);

    auto prog = migraphx::parse_onnx("exp_test.onnx");
    EXPECT(p == prog);
}

void log_test()
{
    migraphx::program p;
    auto input = p.add_parameter("x", migraphx::shape{migraphx::shape::float_type, {10}});
    p.add_instruction(migraphx::op::log{}, input);

    auto prog = migraphx::parse_onnx("log_test.onnx");
    EXPECT(p == prog);
Khalique's avatar
Khalique committed
203
204
}

Khalique's avatar
Khalique committed
205
TEST_CASE(sin_test)
206
207
208
209
210
211
212
213
214
{
    migraphx::program p;
    auto input = p.add_parameter("x", migraphx::shape{migraphx::shape::float_type, {10}});
    p.add_instruction(migraphx::op::sin{}, input);

    auto prog = migraphx::parse_onnx("sin_test.onnx");
    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
215
TEST_CASE(cos_test)
216
217
218
219
220
221
222
223
224
{
    migraphx::program p;
    auto input = p.add_parameter("x", migraphx::shape{migraphx::shape::float_type, {10}});
    p.add_instruction(migraphx::op::cos{}, input);

    auto prog = migraphx::parse_onnx("cos_test.onnx");
    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
225
TEST_CASE(tan_test)
226
227
228
229
230
231
{
    migraphx::program p;
    auto input = p.add_parameter("x", migraphx::shape{migraphx::shape::float_type, {10}});
    p.add_instruction(migraphx::op::tan{}, input);

    auto prog = migraphx::parse_onnx("tan_test.onnx");
232
233
234
    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
235
TEST_CASE(sinh_test)
236
237
238
239
240
241
242
243
244
245
{
    migraphx::program p;
    auto input = p.add_parameter("x", migraphx::shape{migraphx::shape::float_type, {10}});
    p.add_instruction(migraphx::op::sinh{}, input);

    auto prog = migraphx::parse_onnx("sinh_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
246
TEST_CASE(cosh_test)
247
248
249
250
251
252
253
254
255
256
{
    migraphx::program p;
    auto input = p.add_parameter("x", migraphx::shape{migraphx::shape::float_type, {1}});
    p.add_instruction(migraphx::op::cosh{}, input);

    auto prog = migraphx::parse_onnx("cosh_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
257
TEST_CASE(tanh_test)
Shucai Xiao's avatar
Shucai Xiao committed
258
259
260
261
262
263
264
265
266
267
{
    migraphx::program p;
    auto input = p.add_parameter("x", migraphx::shape{migraphx::shape::float_type, {1}});
    p.add_instruction(migraphx::op::tanh{}, input);

    auto prog = migraphx::parse_onnx("tanh_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
268
TEST_CASE(asin_test)
269
270
271
272
273
274
{
    migraphx::program p;
    auto input = p.add_parameter("x", migraphx::shape{migraphx::shape::float_type, {10}});
    p.add_instruction(migraphx::op::asin{}, input);

    auto prog = migraphx::parse_onnx("asin_test.onnx");
Khalique's avatar
Khalique committed
275
276
277
278

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
279
TEST_CASE(max_test)
Khalique's avatar
Khalique committed
280
281
282
283
284
{
    migraphx::program p;
    auto input0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {3}});
    auto input1 = p.add_parameter("1", migraphx::shape{migraphx::shape::float_type, {3}});
    auto input2 = p.add_parameter("2", migraphx::shape{migraphx::shape::float_type, {3}});
Khalique's avatar
Khalique committed
285
    auto l0     = p.add_instruction(migraphx::op::max{}, input0, input1);
Khalique's avatar
Khalique committed
286
287
288
    p.add_instruction(migraphx::op::max{}, l0, input2);

    auto prog = migraphx::parse_onnx("max_test.onnx");
Khalique's avatar
Khalique committed
289
290
}

Khalique's avatar
Khalique committed
291
TEST_CASE(acos_test)
292
293
294
295
296
297
{
    migraphx::program p;
    auto input = p.add_parameter("x", migraphx::shape{migraphx::shape::float_type, {10}});
    p.add_instruction(migraphx::op::acos{}, input);

    auto prog = migraphx::parse_onnx("acos_test.onnx");
Khalique's avatar
Khalique committed
298
299

    EXPECT(p == prog);
Khalique's avatar
Khalique committed
300
301
}

Khalique's avatar
Khalique committed
302
TEST_CASE(min_test)
Khalique's avatar
Khalique committed
303
304
305
306
307
{
    migraphx::program p;
    auto input0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {3}});
    auto input1 = p.add_parameter("1", migraphx::shape{migraphx::shape::float_type, {3}});
    auto input2 = p.add_parameter("2", migraphx::shape{migraphx::shape::float_type, {3}});
Khalique's avatar
Khalique committed
308
    auto l0     = p.add_instruction(migraphx::op::min{}, input0, input1);
Khalique's avatar
Khalique committed
309
310
311
    p.add_instruction(migraphx::op::min{}, l0, input2);

    auto prog = migraphx::parse_onnx("min_test.onnx");
Khalique's avatar
Khalique committed
312
313
}

Khalique's avatar
Khalique committed
314
TEST_CASE(atan_test)
315
316
317
318
319
320
{
    migraphx::program p;
    auto input = p.add_parameter("x", migraphx::shape{migraphx::shape::float_type, {10}});
    p.add_instruction(migraphx::op::atan{}, input);

    auto prog = migraphx::parse_onnx("atan_test.onnx");
Khalique's avatar
Khalique committed
321

Khalique's avatar
Khalique committed
322
    EXPECT(p == prog);
Khalique's avatar
Khalique committed
323
324
}

Khalique's avatar
Khalique committed
325
TEST_CASE(add_bcast_test)
326
327
328
329
330
331
332
333
334
335
336
337
{
    migraphx::program p;
    auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {2, 3, 4, 5}});
    auto l1 = p.add_parameter("1", migraphx::shape{migraphx::shape::float_type, {3, 4}});
    auto l2 = p.add_instruction(migraphx::op::broadcast{1, l0->get_shape()}, l1);
    p.add_instruction(migraphx::op::add{}, l0, l2);

    auto prog = migraphx::parse_onnx("add_bcast_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
338
TEST_CASE(implicit_bcast_test)
339
340
341
342
343
344
345
346
347
348
349
350
351
{
    migraphx::program p;
    auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {2, 3, 4, 5}});
    auto l1 = p.add_parameter("1", migraphx::shape{migraphx::shape::float_type, {3, 4}});
    auto l2 = p.add_instruction(migraphx::op::multibroadcast{{0, 0, 4, 5}}, l0);
    auto l3 = p.add_instruction(migraphx::op::multibroadcast{{0, 0, 4, 5}}, l1);
    p.add_instruction(migraphx::op::add{}, l2, l3);

    auto prog = migraphx::parse_onnx("implicit_bcast_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
352
TEST_CASE(unknown_test)
353
354
355
356
{
    migraphx::program p;
    auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {2, 3, 4, 5}});
    auto l1 = p.add_parameter("1", migraphx::shape{migraphx::shape::float_type, {3, 4}});
Khalique's avatar
Khalique committed
357
358
    auto l2 = p.add_instruction(migraphx::unknown{"Unknown"}, l0, l1);
    p.add_instruction(migraphx::unknown{"Unknown"}, l2);
359
360
361
362
363
    auto prog = migraphx::parse_onnx("unknown_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
364
TEST_CASE(softmax_test)
365
366
367
{
    migraphx::program p;
    auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {1, 3}});
Khalique's avatar
Khalique committed
368
369
    auto r  = p.add_instruction(migraphx::op::reshape{{1, 3, 1, 1}}, l0);
    auto s  = p.add_instruction(migraphx::op::softmax{}, r);
Khalique's avatar
Khalique committed
370
    p.add_instruction(migraphx::op::reshape{{1, 3}}, s);
371
372
373
374
375
    auto prog = migraphx::parse_onnx("softmax_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
376
TEST_CASE(reshape_test)
Khalique's avatar
Khalique committed
377
378
379
380
381
{
    migraphx::program p;
    migraphx::op::reshape op;
    std::vector<int64_t> reshape_dims{3, 8};
    auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {4, 2, 3}});
Khalique's avatar
Khalique committed
382
383
    p.add_literal(
        migraphx::literal{migraphx::shape{migraphx::shape::int64_type, {2}}, reshape_dims});
Khalique's avatar
Khalique committed
384
385
386
387
388
389
390
391
    op.dims = reshape_dims;
    p.add_instruction(op, l0);
    p.add_instruction(op, l0);
    auto prog = migraphx::parse_onnx("reshape_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
392
TEST_CASE(flatten_test)
393
394
395
396
397
398
399
400
401
402
{
    migraphx::program p;
    auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {2, 3, 4, 5}});
    p.add_instruction(migraphx::op::flatten{1}, l0);
    p.add_instruction(migraphx::op::flatten{2}, l0);
    auto prog = migraphx::parse_onnx("flatten_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
403
TEST_CASE(squeeze_unsqueeze_test)
404
405
406
407
{
    migraphx::program p;
    std::vector<int64_t> squeeze_axes{0, 2, 3, 5};
    std::vector<int64_t> unsqueeze_axes{0, 1, 3, 5};
Khalique's avatar
Khalique committed
408
409
    auto l0 =
        p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {1, 3, 1, 1, 2, 1}});
410
411
412
413
414
415
416
    auto l1 = p.add_instruction(migraphx::op::squeeze{squeeze_axes}, l0);
    p.add_instruction(migraphx::op::unsqueeze{unsqueeze_axes}, l1);
    auto prog = migraphx::parse_onnx("squeeze_unsqueeze_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
417
TEST_CASE(concat_test)
418
419
420
421
422
423
424
425
426
427
{
    migraphx::program p;
    auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {2, 4, 3}});
    auto l1 = p.add_parameter("1", migraphx::shape{migraphx::shape::float_type, {7, 4, 3}});
    p.add_instruction(migraphx::op::concat{0}, l0, l1);
    auto prog = migraphx::parse_onnx("concat_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
428
TEST_CASE(slice_test)
429
430
431
{
    migraphx::program p;
    auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {3, 2}});
Khalique's avatar
Khalique committed
432
    p.add_instruction(migraphx::op::slice{{0, 1}, {1, 0}, {2, 2}}, l0);
433
434
435
436
437
    auto prog = migraphx::parse_onnx("slice_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
438
TEST_CASE(constant_test)
439
440
441
442
443
444
445
446
{
    migraphx::program p;
    p.add_literal(migraphx::literal{migraphx::shape{migraphx::shape::float_type, {3}}, {0, 1, 2}});
    auto prog = migraphx::parse_onnx("constant_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
447
TEST_CASE(gemm_test)
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
{
    migraphx::program p;
    auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {5, 7}});
    auto l1 = p.add_parameter("1", migraphx::shape{migraphx::shape::float_type, {11, 5}});
    auto l2 = p.add_parameter("2", migraphx::shape{migraphx::shape::float_type, {}});
    auto t0 = p.add_instruction(migraphx::op::transpose{{1, 0}}, l0);
    auto t1 = p.add_instruction(migraphx::op::transpose{{1, 0}}, l1);
    auto d0 = p.add_instruction(migraphx::op::dot{2, 2}, t0, t1);
    auto b0 = p.add_instruction(migraphx::op::broadcast{1, d0->get_shape()}, l2);
    p.add_instruction(migraphx::op::add{}, d0, b0);
    auto prog = migraphx::parse_onnx("gemm_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
463
TEST_CASE(add_scalar_test)
464
465
466
{
    migraphx::program p;
    auto l0 = p.add_parameter("0", migraphx::shape{migraphx::shape::float_type, {2, 3, 4, 5}});
Khalique's avatar
Khalique committed
467
468
469
    auto l1 =
        p.add_literal(migraphx::literal{migraphx::shape{migraphx::shape::float_type, {1}}, {1}});
    auto m0 = p.add_instruction(migraphx::op::multibroadcast{{0, 0, 0, 5}}, l0);
470
471
472
473
474
475
476
    auto m1 = p.add_instruction(migraphx::op::multibroadcast{{0, 0, 0, 5}}, l1);
    p.add_instruction(migraphx::op::add{}, m0, m1);
    auto prog = migraphx::parse_onnx("add_scalar_test.onnx");

    EXPECT(p == prog);
}

Khalique's avatar
Khalique committed
477
int main(int argc, const char* argv[]) { test::run(argc, argv); }