Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
MIGraphX
Commits
93c89587
Commit
93c89587
authored
Dec 13, 2023
by
Paul
Browse files
Split onnx tests
parent
d2532d0e
Changes
490
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
754 additions
and
0 deletions
+754
-0
test/onnx/include/onnx_test.hpp
test/onnx/include/onnx_test.hpp
+41
-0
test/onnx/include/onnx_test_utils.hpp
test/onnx/include/onnx_test_utils.hpp
+377
-0
test/onnx/parse/acos_test.cpp
test/onnx/parse/acos_test.cpp
+17
-0
test/onnx/parse/acosh_test.cpp
test/onnx/parse/acosh_test.cpp
+17
-0
test/onnx/parse/add_bcast_test.cpp
test/onnx/parse/add_bcast_test.cpp
+20
-0
test/onnx/parse/add_fp16_test.cpp
test/onnx/parse/add_fp16_test.cpp
+19
-0
test/onnx/parse/add_scalar_test.cpp
test/onnx/parse/add_scalar_test.cpp
+20
-0
test/onnx/parse/argmax_dyn_test.cpp
test/onnx/parse/argmax_dyn_test.cpp
+22
-0
test/onnx/parse/argmax_select_last_index_test.cpp
test/onnx/parse/argmax_select_last_index_test.cpp
+18
-0
test/onnx/parse/argmax_test.cpp
test/onnx/parse/argmax_test.cpp
+17
-0
test/onnx/parse/argmin_select_last_index_test.cpp
test/onnx/parse/argmin_select_last_index_test.cpp
+18
-0
test/onnx/parse/argmin_test.cpp
test/onnx/parse/argmin_test.cpp
+17
-0
test/onnx/parse/asin_test.cpp
test/onnx/parse/asin_test.cpp
+17
-0
test/onnx/parse/asinh_test.cpp
test/onnx/parse/asinh_test.cpp
+17
-0
test/onnx/parse/atan_test.cpp
test/onnx/parse/atan_test.cpp
+17
-0
test/onnx/parse/atanh_test.cpp
test/onnx/parse/atanh_test.cpp
+17
-0
test/onnx/parse/averagepool_1d_test.cpp
test/onnx/parse/averagepool_1d_test.cpp
+23
-0
test/onnx/parse/averagepool_3d_test.cpp
test/onnx/parse/averagepool_3d_test.cpp
+23
-0
test/onnx/parse/averagepool_dilate_test.cpp
test/onnx/parse/averagepool_dilate_test.cpp
+24
-0
test/onnx/parse/averagepool_dyn_asym_padding_error_test.cpp
test/onnx/parse/averagepool_dyn_asym_padding_error_test.cpp
+13
-0
No files found.
test/onnx/include/onnx_test.hpp
0 → 100644
View file @
93c89587
#ifndef MIGRAPHX_GUARD_TEST_ONNX_ONNX_TEST_HPP
#define MIGRAPHX_GUARD_TEST_ONNX_ONNX_TEST_HPP
#include <migraphx/program.hpp>
#include <migraphx/instruction.hpp>
#include <migraphx/instruction_ref.hpp>
#include <migraphx/pass_manager.hpp>
#include <migraphx/dead_code_elimination.hpp>
#include <migraphx/rewrite_quantization.hpp>
#include <migraphx/eliminate_identity.hpp>
#include <migraphx/onnx.hpp>
#include <migraphx/make_op.hpp>
#include <migraphx/common.hpp>
#include <test.hpp>
inline
migraphx
::
program
optimize_onnx
(
const
std
::
string
&
name
,
bool
run_passes
=
false
)
{
migraphx
::
onnx_options
options
;
options
.
skip_unknown_operators
=
true
;
auto
prog
=
migraphx
::
parse_onnx
(
name
,
options
);
auto
*
mm
=
prog
.
get_main_module
();
if
(
run_passes
)
migraphx
::
run_passes
(
*
mm
,
{
migraphx
::
rewrite_quantization
{},
migraphx
::
dead_code_elimination
{}});
// remove the last identity instruction
auto
last_ins
=
std
::
prev
(
mm
->
end
());
if
(
last_ins
->
name
()
==
"@return"
)
{
mm
->
remove_instruction
(
last_ins
);
}
return
prog
;
}
#endif
test/onnx/include/onnx_test_utils.hpp
0 → 100644
View file @
93c89587
#ifndef MIGRAPHX_GUARD_TEST_ONNX_ONNX_TEST_UTILS_HPP
#define MIGRAPHX_GUARD_TEST_ONNX_ONNX_TEST_UTILS_HPP
#include <migraphx/program.hpp>
#include <migraphx/make_op.hpp>
#include <migraphx/common.hpp>
#include <migraphx/env.hpp>
MIGRAPHX_DECLARE_ENV_VAR
(
MIGRAPHX_ENABLE_CK_WORKAROUNDS
);
inline
void
add_celu_instruction
(
migraphx
::
module
*
mm
,
const
migraphx
::
shape
&
s
,
float
alpha
)
{
auto
x
=
mm
->
add_parameter
(
"x"
,
s
);
const
auto
&
input_lens
=
s
.
lens
();
const
auto
&
input_type
=
s
.
type
();
auto
zero_lit
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"multibroadcast"
,
{{
"out_lens"
,
input_lens
}}),
mm
->
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
{
input_type
},
{
0.
}}));
auto
one_lit
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"multibroadcast"
,
{{
"out_lens"
,
input_lens
}}),
mm
->
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
{
input_type
},
{
1.
}}));
auto
alpha_lit
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"multibroadcast"
,
{{
"out_lens"
,
input_lens
}}),
mm
->
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
{
input_type
},
{
alpha
}}));
auto
linear_part
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"max"
),
zero_lit
,
x
);
auto
divi
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"div"
),
x
,
alpha_lit
);
auto
expo
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"exp"
),
divi
);
auto
sub
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"sub"
),
expo
,
one_lit
);
auto
mul
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"mul"
),
alpha_lit
,
sub
);
auto
exp_part
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"min"
),
zero_lit
,
mul
);
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
linear_part
,
exp_part
);
}
inline
std
::
vector
<
double
>
make_r_eyelike
(
size_t
num_rows
,
size_t
num_cols
,
size_t
k
)
{
std
::
vector
<
double
>
eyelike_mat
(
num_rows
*
num_cols
,
0
);
for
(
size_t
i
=
0
;
i
<
num_rows
;
++
i
)
{
if
(
i
+
k
<
num_cols
)
eyelike_mat
[(
num_cols
+
1
)
*
i
+
k
]
=
1.
;
}
return
eyelike_mat
;
}
inline
migraphx
::
program
make_dequantizelinear_axis_prog
()
{
migraphx
::
program
p
;
std
::
vector
<
size_t
>
input_lens
{
1
,
1
,
5
,
1
};
int
axis
=
2
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"0"
,
{
migraphx
::
shape
::
int8_type
,
input_lens
});
auto
l1
=
mm
->
add_parameter
(
"1"
,
{
migraphx
::
shape
::
float_type
,
{
5
}});
auto
l2
=
mm
->
add_parameter
(
"2"
,
{
migraphx
::
shape
::
int8_type
,
{
5
}});
auto
l1_bcast
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
axis
},
{
"out_lens"
,
input_lens
}}),
l1
);
auto
l2_bcast
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
axis
},
{
"out_lens"
,
input_lens
}}),
l2
);
l2_bcast
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"convert"
,
{{
"target_type"
,
migraphx
::
to_value
(
migraphx
::
shape
::
float_type
)}}),
l2_bcast
);
l0
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"convert"
,
{{
"target_type"
,
migraphx
::
to_value
(
migraphx
::
shape
::
float_type
)}}),
l0
);
auto
sub
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"sub"
),
l0
,
l2_bcast
);
mm
->
add_instruction
(
migraphx
::
make_op
(
"mul"
),
sub
,
l1_bcast
);
return
p
;
}
inline
migraphx
::
program
create_external_data_prog
()
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
migraphx
::
shape
s
(
migraphx
::
shape
::
float_type
,
{
1
,
1
,
224
,
224
});
migraphx
::
shape
s2
(
migraphx
::
shape
::
float_type
,
{
10
,
1
,
11
,
11
});
std
::
vector
<
float
>
weight_data
(
1210
,
1
);
std
::
vector
<
float
>
bias_data
(
10
,
1
);
auto
bias
=
mm
->
add_literal
(
migraphx
::
literal
({
migraphx
::
shape
::
float_type
,
{
10
}},
bias_data
));
auto
weights
=
mm
->
add_literal
(
migraphx
::
literal
(
s2
,
weight_data
));
auto
param
=
mm
->
add_parameter
(
"input"
,
s
);
auto
conv
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"convolution"
,
{{
"padding"
,
{
0
,
0
,
0
,
0
}}}),
param
,
weights
);
auto
bias_bcast
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
1
},
{
"out_lens"
,
{
1
,
10
,
214
,
214
}}}),
bias
);
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
conv
,
bias_bcast
);
return
p
;
}
inline
migraphx
::
program
make_group_norm
(
const
std
::
vector
<
int64_t
>&
input_dims
,
const
std
::
vector
<
int64_t
>&
scale_dims
,
const
std
::
vector
<
int64_t
>&
bias_dims
,
const
std
::
vector
<
int64_t
>&
reshape_dims
,
const
std
::
vector
<
int64_t
>&
reduce_axes
,
const
float
eps_value
=
1e-5
f
,
const
migraphx
::
shape
::
type_t
dtype
=
migraphx
::
shape
::
float_type
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
x
=
mm
->
add_parameter
(
"x"
,
{
dtype
,
input_dims
});
auto
scale
=
mm
->
add_parameter
(
"scale"
,
{
dtype
,
scale_dims
});
auto
bias
=
mm
->
add_parameter
(
"bias"
,
{
dtype
,
bias_dims
});
auto
eps
=
mm
->
add_literal
(
migraphx
::
literal
{
dtype
,
{
eps_value
}});
auto
x_reshapedd
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"reshape"
,
{{
"dims"
,
reshape_dims
}}),
x
);
auto
mean
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"reduce_mean"
,
{{
"axes"
,
reduce_axes
}}),
x_reshapedd
);
auto
x_sub_mean
=
add_common_op
(
*
mm
,
migraphx
::
make_op
(
"sub"
),
{
x_reshapedd
,
mean
});
auto
x_sqdiff_mean
=
add_common_op
(
*
mm
,
migraphx
::
make_op
(
"sqdiff"
),
{
x_reshapedd
,
mean
});
auto
var
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"reduce_mean"
,
{{
"axes"
,
reduce_axes
}}),
x_sqdiff_mean
);
auto
var_eps
=
add_common_op
(
*
mm
,
migraphx
::
make_op
(
"add"
),
{
var
,
eps
});
auto
rsqrt
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"rsqrt"
),
{
var_eps
});
auto
result
=
add_common_op
(
*
mm
,
migraphx
::
make_op
(
"mul"
),
{
x_sub_mean
,
rsqrt
});
auto
scale_bcast
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
1
},
{
"out_lens"
,
reshape_dims
}}),
scale
);
auto
bias_bcast
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
1
},
{
"out_lens"
,
reshape_dims
}}),
bias
);
auto
scaled
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"mul"
),
{
result
,
scale_bcast
});
auto
y
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
{
scaled
,
bias_bcast
});
mm
->
add_instruction
(
migraphx
::
make_op
(
"reshape"
,
{{
"dims"
,
input_dims
}}),
y
);
return
p
;
}
inline
migraphx
::
program
make_layer_norm
(
const
std
::
vector
<
int64_t
>&
input_shape
,
const
std
::
vector
<
int64_t
>&
scale_bias_shape
,
const
std
::
vector
<
int64_t
>&
reduce_axes
,
size_t
skipped_axis
,
bool
skip_bias
=
false
,
const
float
eps_value
=
1e-5
f
,
const
migraphx
::
shape
::
type_t
dtype
=
migraphx
::
shape
::
float_type
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
x
=
mm
->
add_parameter
(
"x"
,
{
dtype
,
input_shape
});
auto
scale
=
mm
->
add_parameter
(
"scale"
,
{
dtype
,
scale_bias_shape
});
migraphx
::
instruction_ref
bias
;
if
(
not
skip_bias
)
{
bias
=
mm
->
add_parameter
(
"bias"
,
{
dtype
,
scale_bias_shape
});
}
auto
eps
=
mm
->
add_literal
(
migraphx
::
literal
{
dtype
,
{
eps_value
}});
auto
mean
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"reduce_mean"
,
{{
"axes"
,
reduce_axes
}}),
x
);
auto
x_sub_mean
=
add_common_op
(
*
mm
,
migraphx
::
make_op
(
"sub"
),
{
x
,
mean
});
auto
x_sqdiff_mean
=
add_common_op
(
*
mm
,
migraphx
::
make_op
(
"sqdiff"
),
{
x
,
mean
});
auto
var
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"reduce_mean"
,
{{
"axes"
,
reduce_axes
}}),
x_sqdiff_mean
);
auto
var_eps
=
add_common_op
(
*
mm
,
migraphx
::
make_op
(
"add"
),
{
var
,
eps
});
auto
rsqrt
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"rsqrt"
),
{
var_eps
});
auto
result
=
add_common_op
(
*
mm
,
migraphx
::
make_op
(
"mul"
),
{
x_sub_mean
,
rsqrt
});
migraphx
::
instruction_ref
scale_bcast
=
scale
;
migraphx
::
instruction_ref
bias_bcast
=
bias
;
if
(
skipped_axis
>
0
)
{
scale_bcast
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
skipped_axis
},
{
"out_lens"
,
input_shape
}}),
scale
);
if
(
not
skip_bias
)
{
bias_bcast
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
skipped_axis
},
{
"out_lens"
,
input_shape
}}),
bias
);
}
}
auto
scaled
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"mul"
),
{
result
,
scale_bcast
});
if
(
not
skip_bias
)
{
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
{
scaled
,
bias_bcast
});
}
return
p
;
}
inline
void
mvn_n_rank_test
(
std
::
vector
<
int64_t
>
axes
,
std
::
vector
<
size_t
>
input_shape
,
const
migraphx
::
program
&
prog
)
{
using
migraphx
::
make_op
;
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
data
=
mm
->
add_parameter
(
"data"
,
{
migraphx
::
shape
::
float_type
,
std
::
move
(
input_shape
)});
auto
data_mean
=
mm
->
add_instruction
(
make_op
(
"reduce_mean"
,
{{
"axes"
,
axes
}}),
data
);
auto
data_mean_squared
=
add_common_op
(
*
mm
,
make_op
(
"mul"
),
{
data_mean
,
data_mean
});
auto
data_squared
=
add_common_op
(
*
mm
,
make_op
(
"mul"
),
{
data
,
data
});
auto
data_squared_mean
=
mm
->
add_instruction
(
make_op
(
"reduce_mean"
,
{{
"axes"
,
axes
}}),
data_squared
);
auto
mean_sub
=
add_common_op
(
*
mm
,
make_op
(
"sub"
),
{
data_squared_mean
,
data_mean_squared
});
auto
std
=
add_common_op
(
*
mm
,
make_op
(
"sqrt"
),
{
mean_sub
});
auto
dividend
=
add_common_op
(
*
mm
,
make_op
(
"sub"
),
{
data
,
data_mean
});
auto
epsilon
=
mm
->
add_literal
({
migraphx
::
shape
::
float_type
,
{
1e-9
}});
auto
divisor
=
add_common_op
(
*
mm
,
make_op
(
"add"
),
{
std
,
epsilon
});
add_common_op
(
*
mm
,
make_op
(
"div"
),
{
dividend
,
divisor
});
EXPECT
(
p
==
prog
);
}
inline
migraphx
::
instruction_ref
insert_quantizelinear_clip
(
migraphx
::
module
&
m
,
const
migraphx
::
instruction_ref
ins
,
const
migraphx
::
instruction_ref
round
,
const
migraphx
::
shape
s
,
const
int64_t
min_quant
,
const
int64_t
max_quant
)
{
migraphx
::
instruction_ref
min_arg
;
migraphx
::
instruction_ref
max_arg
;
if
(
migraphx
::
enabled
(
MIGRAPHX_ENABLE_CK_WORKAROUNDS
{}))
{
std
::
vector
<
int
>
min_data
(
s
.
elements
(),
min_quant
);
std
::
vector
<
int
>
max_data
(
s
.
elements
(),
max_quant
);
min_arg
=
m
.
add_literal
(
migraphx
::
literal
(
s
,
min_data
));
max_arg
=
m
.
add_literal
(
migraphx
::
literal
(
s
,
max_data
));
}
else
{
min_arg
=
m
.
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
{
s
.
type
()},
{
min_quant
}});
max_arg
=
m
.
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
{
s
.
type
()},
{
max_quant
}});
}
return
migraphx
::
insert_common_op
(
m
,
ins
,
migraphx
::
make_op
(
"clip"
),
{
round
,
min_arg
,
max_arg
});
}
inline
migraphx
::
program
make_quantizelinear_axis_prog
()
{
migraphx
::
program
p
;
std
::
vector
<
size_t
>
input_lens
{
1
,
1
,
5
,
1
};
int
axis
=
2
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"0"
,
{
migraphx
::
shape
::
float_type
,
input_lens
});
auto
l1
=
mm
->
add_parameter
(
"1"
,
{
migraphx
::
shape
::
float_type
,
{
5
}});
auto
l2
=
mm
->
add_parameter
(
"2"
,
{
migraphx
::
shape
::
int8_type
,
{
5
}});
auto
l1_bcast
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
axis
},
{
"out_lens"
,
input_lens
}}),
l1
);
auto
div
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"div"
),
l0
,
l1_bcast
);
auto
round
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"nearbyint"
),
div
);
auto
l2_bcast
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
axis
},
{
"out_lens"
,
input_lens
}}),
l2
);
l2_bcast
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"convert"
,
{{
"target_type"
,
migraphx
::
to_value
(
migraphx
::
shape
::
float_type
)}}),
l2_bcast
);
auto
add
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
round
,
l2_bcast
);
auto
s
=
round
->
get_shape
();
auto
clip
=
insert_quantizelinear_clip
(
*
mm
,
div
,
add
,
s
,
-
128
,
127
);
mm
->
add_instruction
(
migraphx
::
make_op
(
"convert"
,
{{
"target_type"
,
migraphx
::
to_value
(
migraphx
::
shape
::
int8_type
)}}),
clip
);
return
p
;
}
inline
auto
create_upsample_linear_prog
()
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
migraphx
::
shape
ss
{
migraphx
::
shape
::
float_type
,
{
4
}};
std
::
vector
<
float
>
ds
=
{
1
,
1
,
2
,
2
};
mm
->
add_literal
(
migraphx
::
literal
(
ss
,
ds
));
migraphx
::
shape
sx
{
migraphx
::
shape
::
float_type
,
{
1
,
1
,
2
,
2
}};
auto
x
=
mm
->
add_parameter
(
"X"
,
sx
);
migraphx
::
shape
s_ind
{
migraphx
::
shape
::
int32_type
,
{
16
,
1
,
4
,
4
}};
std
::
vector
<
int
>
d_ind
=
{
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
2
,
2
,
2
,
3
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
2
,
2
,
2
,
3
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
2
,
2
,
2
,
3
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
2
,
2
,
2
,
3
,
0
,
0
,
0
,
1
,
2
,
2
,
2
,
3
,
2
,
2
,
2
,
3
,
2
,
2
,
2
,
3
,
0
,
0
,
0
,
1
,
2
,
2
,
2
,
3
,
2
,
2
,
2
,
3
,
2
,
2
,
2
,
3
,
0
,
0
,
0
,
1
,
2
,
2
,
2
,
3
,
2
,
2
,
2
,
3
,
2
,
2
,
2
,
3
,
0
,
0
,
0
,
1
,
2
,
2
,
2
,
3
,
2
,
2
,
2
,
3
,
2
,
2
,
2
,
3
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
2
,
3
,
3
,
3
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
2
,
3
,
3
,
3
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
2
,
3
,
3
,
3
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
2
,
3
,
3
,
3
,
0
,
1
,
1
,
1
,
2
,
3
,
3
,
3
,
2
,
3
,
3
,
3
,
2
,
3
,
3
,
3
,
0
,
1
,
1
,
1
,
2
,
3
,
3
,
3
,
2
,
3
,
3
,
3
,
2
,
3
,
3
,
3
,
0
,
1
,
1
,
1
,
2
,
3
,
3
,
3
,
2
,
3
,
3
,
3
,
2
,
3
,
3
,
3
,
0
,
1
,
1
,
1
,
2
,
3
,
3
,
3
,
2
,
3
,
3
,
3
,
2
,
3
,
3
,
3
};
auto
l_ind
=
mm
->
add_literal
(
migraphx
::
literal
(
s_ind
,
d_ind
));
migraphx
::
shape
s8
{
migraphx
::
shape
::
float_type
,
{
8
,
1
,
4
,
4
}};
std
::
vector
<
float
>
d8
=
{
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
1.0
f
/
3
,
2.0
f
/
3
,
0
};
auto
l8
=
mm
->
add_literal
(
migraphx
::
literal
(
s8
,
d8
));
migraphx
::
shape
s4
{
migraphx
::
shape
::
float_type
,
{
4
,
1
,
4
,
4
}};
std
::
vector
<
float
>
d4
=
{
0
,
0
,
0
,
0
,
1.0
f
/
3
,
1.0
f
/
3
,
1.0
f
/
3
,
1.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1.0
f
/
3
,
1.0
f
/
3
,
1.0
f
/
3
,
1.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1.0
f
/
3
,
1.0
f
/
3
,
1.0
f
/
3
,
1.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1.0
f
/
3
,
1.0
f
/
3
,
1.0
f
/
3
,
1.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
2.0
f
/
3
,
0
,
0
,
0
,
0
};
auto
l4
=
mm
->
add_literal
(
migraphx
::
literal
(
s4
,
d4
));
migraphx
::
shape
s2
{
migraphx
::
shape
::
float_type
,
{
2
,
1
,
4
,
4
}};
std
::
vector
<
float
>
d2
(
32
,
0
);
auto
l2
=
mm
->
add_literal
(
migraphx
::
literal
(
s2
,
d2
));
migraphx
::
shape
s1
{
migraphx
::
shape
::
float_type
,
{
1
,
1
,
4
,
4
}};
std
::
vector
<
float
>
d1
(
16
,
0.0
f
);
auto
l1
=
mm
->
add_literal
(
migraphx
::
literal
(
s1
,
d1
));
mm
->
add_instruction
(
migraphx
::
make_op
(
"undefined"
));
auto
rsp
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"reshape"
,
{{
"dims"
,
{
4
}}}),
x
);
auto
data
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"gather"
,
{{
"axis"
,
0
}}),
rsp
,
l_ind
);
auto
slc80
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"slice"
,
{{
"axes"
,
{
0
}},
{
"starts"
,
{
0
}},
{
"ends"
,
{
8
}}}),
data
);
auto
slc81
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"slice"
,
{{
"axes"
,
{
0
}},
{
"starts"
,
{
8
}},
{
"ends"
,
{
16
}}}),
data
);
auto
diff8
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"sub"
),
slc81
,
slc80
);
auto
mul8
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"mul"
),
diff8
,
l8
);
auto
add8
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
mul8
,
slc80
);
auto
slc40
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"slice"
,
{{
"axes"
,
{
0
}},
{
"starts"
,
{
0
}},
{
"ends"
,
{
4
}}}),
add8
);
auto
slc41
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"slice"
,
{{
"axes"
,
{
0
}},
{
"starts"
,
{
4
}},
{
"ends"
,
{
8
}}}),
add8
);
auto
diff4
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"sub"
),
slc41
,
slc40
);
auto
mul4
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"mul"
),
diff4
,
l4
);
auto
add4
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
mul4
,
slc40
);
auto
slc20
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"slice"
,
{{
"axes"
,
{
0
}},
{
"starts"
,
{
0
}},
{
"ends"
,
{
2
}}}),
add4
);
auto
slc21
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"slice"
,
{{
"axes"
,
{
0
}},
{
"starts"
,
{
2
}},
{
"ends"
,
{
4
}}}),
add4
);
auto
diff2
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"sub"
),
slc21
,
slc20
);
auto
mul2
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"mul"
),
diff2
,
l2
);
auto
add2
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
mul2
,
slc20
);
auto
slc10
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"slice"
,
{{
"axes"
,
{
0
}},
{
"starts"
,
{
0
}},
{
"ends"
,
{
1
}}}),
add2
);
auto
slc11
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"slice"
,
{{
"axes"
,
{
0
}},
{
"starts"
,
{
1
}},
{
"ends"
,
{
2
}}}),
add2
);
auto
diff1
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"sub"
),
slc11
,
slc10
);
auto
mul1
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"mul"
),
diff1
,
l1
);
auto
add1
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
mul1
,
slc10
);
mm
->
add_return
({
add1
});
return
p
;
}
// the ScatterElements op has 3 reduction modes, which map to separate reference ops
inline
migraphx
::
program
create_scatter_program
(
const
std
::
string
&
scatter_mode
,
int
axis
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"data"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
3
,
4
,
5
,
6
}});
auto
l1
=
mm
->
add_parameter
(
"indices"
,
migraphx
::
shape
{
migraphx
::
shape
::
int32_type
,
{
2
,
3
,
4
,
5
}});
auto
l2
=
mm
->
add_parameter
(
"update"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
2
,
3
,
4
,
5
}});
auto
r
=
mm
->
add_instruction
(
migraphx
::
make_op
(
scatter_mode
,
{{
"axis"
,
axis
}}),
l0
,
l1
,
l2
);
mm
->
add_return
({
r
});
return
p
;
}
#endif
test/onnx/parse/acos_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
acos_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
10
}});
mm
->
add_instruction
(
migraphx
::
make_op
(
"acos"
),
input
);
auto
prog
=
optimize_onnx
(
"acos_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/acosh_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
acosh_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
10
}});
mm
->
add_instruction
(
migraphx
::
make_op
(
"acosh"
),
input
);
auto
prog
=
optimize_onnx
(
"acosh_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/add_bcast_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
add_bcast_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"0"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
2
,
3
,
4
,
5
}});
auto
l1
=
mm
->
add_parameter
(
"1"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
3
,
4
}});
auto
l2
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
1
},
{
"out_lens"
,
l0
->
get_shape
().
lens
()}}),
l1
);
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
l0
,
l2
);
auto
prog
=
optimize_onnx
(
"add_bcast_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/add_fp16_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
add_fp16_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
{
migraphx
::
shape
::
half_type
,
{
1
}},
{
1.5
}});
auto
l1
=
mm
->
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
{
migraphx
::
shape
::
half_type
,
{
1
}},
{
2.5
}});
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
l0
,
l1
);
auto
prog
=
optimize_onnx
(
"add_fp16_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/add_scalar_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
add_scalar_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"0"
,
migraphx
::
shape
{
migraphx
::
shape
::
uint8_type
,
{
2
,
3
,
4
,
5
}});
auto
l1
=
mm
->
add_parameter
(
"1"
,
migraphx
::
shape
{
migraphx
::
shape
::
uint8_type
});
auto
m1
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"multibroadcast"
,
{{
"out_lens"
,
{
2
,
3
,
4
,
5
}}}),
l1
);
auto
r
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
l0
,
m1
);
mm
->
add_return
({
r
});
auto
prog
=
migraphx
::
parse_onnx
(
"add_scalar_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/argmax_dyn_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
argmax_dyn_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{{
1
,
4
},
{
4
,
4
},
{
5
,
5
},
{
6
,
6
}}});
auto
ins
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"argmax"
,
{{
"axis"
,
2
}}),
l0
);
auto
ret
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"squeeze"
,
{{
"axes"
,
{
2
}}}),
ins
);
mm
->
add_return
({
ret
});
migraphx
::
onnx_options
options
;
options
.
default_dyn_dim_value
=
{
1
,
4
};
auto
prog
=
parse_onnx
(
"argmax_dyn_test.onnx"
,
options
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/argmax_select_last_index_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
argmax_select_last_index_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
3
,
4
,
5
,
6
}});
auto
ins
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"argmax"
,
{{
"axis"
,
2
},
{
"select_last_index"
,
true
}}),
l0
);
mm
->
add_instruction
(
migraphx
::
make_op
(
"squeeze"
,
{{
"axes"
,
{
2
}}}),
ins
);
auto
prog
=
optimize_onnx
(
"argmax_select_last_index_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/argmax_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
argmax_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
3
,
4
,
5
,
6
}});
auto
ins
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"argmax"
,
{{
"axis"
,
2
}}),
l0
);
mm
->
add_instruction
(
migraphx
::
make_op
(
"squeeze"
,
{{
"axes"
,
{
2
}}}),
ins
);
auto
prog
=
optimize_onnx
(
"argmax_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/argmin_select_last_index_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
argmin_select_last_index_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
3
,
4
,
5
,
6
}});
auto
ins
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"argmin"
,
{{
"axis"
,
3
},
{
"select_last_index"
,
true
}}),
l0
);
mm
->
add_instruction
(
migraphx
::
make_op
(
"squeeze"
,
{{
"axes"
,
{
3
}}}),
ins
);
auto
prog
=
optimize_onnx
(
"argmin_select_last_index_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/argmin_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
argmin_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
3
,
4
,
5
,
6
}});
auto
ins
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"argmin"
,
{{
"axis"
,
3
}}),
l0
);
mm
->
add_instruction
(
migraphx
::
make_op
(
"squeeze"
,
{{
"axes"
,
{
3
}}}),
ins
);
auto
prog
=
optimize_onnx
(
"argmin_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/asin_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
asin_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
10
}});
mm
->
add_instruction
(
migraphx
::
make_op
(
"asin"
),
input
);
auto
prog
=
optimize_onnx
(
"asin_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/asinh_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
asinh_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
10
}});
mm
->
add_instruction
(
migraphx
::
make_op
(
"asinh"
),
input
);
auto
prog
=
optimize_onnx
(
"asinh_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/atan_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
atan_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
10
}});
mm
->
add_instruction
(
migraphx
::
make_op
(
"atan"
),
input
);
auto
prog
=
optimize_onnx
(
"atan_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/atanh_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
atanh_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
10
}});
mm
->
add_instruction
(
migraphx
::
make_op
(
"atanh"
),
input
);
auto
prog
=
optimize_onnx
(
"atanh_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/averagepool_1d_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
#include <migraphx/op/pooling.hpp>
TEST_CASE
(
averagepool_1d_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"0"
,
{
migraphx
::
shape
::
float_type
,
{
1
,
3
,
5
}});
mm
->
add_instruction
(
migraphx
::
make_op
(
"pooling"
,
{{
"mode"
,
migraphx
::
op
::
pooling_mode
::
average
},
{
"padding"
,
{
0
,
0
}},
{
"stride"
,
{
1
}},
{
"lengths"
,
{
3
}},
{
"dilations"
,
{
1
}}}),
l0
);
auto
prog
=
optimize_onnx
(
"averagepool_1d_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/averagepool_3d_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
#include <migraphx/op/pooling.hpp>
TEST_CASE
(
averagepool_3d_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
l0
=
mm
->
add_parameter
(
"0"
,
{
migraphx
::
shape
::
float_type
,
{
1
,
3
,
5
,
5
,
5
}});
mm
->
add_instruction
(
migraphx
::
make_op
(
"pooling"
,
{{
"mode"
,
migraphx
::
op
::
pooling_mode
::
average
},
{
"padding"
,
{
0
,
0
,
0
,
0
,
0
,
0
}},
{
"stride"
,
{
1
,
1
,
1
}},
{
"lengths"
,
{
3
,
3
,
3
}},
{
"dilations"
,
{
1
,
1
,
1
}}}),
l0
);
auto
prog
=
optimize_onnx
(
"averagepool_3d_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/averagepool_dilate_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
#include <migraphx/op/pooling.hpp>
TEST_CASE
(
averagepool_dilate_test
)
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
1
,
4
,
3
}});
mm
->
add_instruction
(
migraphx
::
make_op
(
"pooling"
,
{{
"mode"
,
migraphx
::
op
::
pooling_mode
::
average
},
{
"padding"
,
{
1
,
1
}},
{
"stride"
,
{
1
}},
{
"lengths"
,
{
2
}},
{
"dilations"
,
{
3
}}}),
input
);
auto
prog
=
optimize_onnx
(
"averagepool_dilate_test.onnx"
);
EXPECT
(
p
==
prog
);
}
test/onnx/parse/averagepool_dyn_asym_padding_error_test.cpp
0 → 100644
View file @
93c89587
#include <onnx_test.hpp>
TEST_CASE
(
averagepool_dyn_asym_padding_error_test
)
{
migraphx
::
onnx_options
options
;
options
.
default_dyn_dim_value
=
{
1
,
4
};
EXPECT
(
test
::
throws
(
[
&
]
{
migraphx
::
parse_onnx
(
"averagepool_dyn_asym_padding_error_test.onnx"
,
options
);
}));
}
Prev
1
2
3
4
5
…
25
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment