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
6a72e8fc
Unverified
Commit
6a72e8fc
authored
Dec 06, 2023
by
Umang Yadav
Committed by
GitHub
Dec 06, 2023
Browse files
FP8 2D forward convolution using rocMLIR (#2507)
parent
a09dc502
Changes
29
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
99 additions
and
100 deletions
+99
-100
test/verify/test_conv_bias_clipped_relu.cpp
test/verify/test_conv_bias_clipped_relu.cpp
+10
-9
test/verify/test_conv_bn.cpp
test/verify/test_conv_bn.cpp
+16
-6
test/verify/test_conv_bn_add.cpp
test/verify/test_conv_bn_add.cpp
+19
-11
test/verify/test_conv_bn_relu_pooling.cpp
test/verify/test_conv_bn_relu_pooling.cpp
+15
-7
test/verify/test_conv_bn_relu_pooling2.cpp
test/verify/test_conv_bn_relu_pooling2.cpp
+17
-9
test/verify/test_conv_group_add.cpp
test/verify/test_conv_group_add.cpp
+8
-4
test/verify/test_conv_pooling.cpp
test/verify/test_conv_pooling.cpp
+7
-5
test/verify/test_conv_relu.cpp
test/verify/test_conv_relu.cpp
+7
-5
test/verify/test_conv_relu_half.cpp
test/verify/test_conv_relu_half.cpp
+0
-44
No files found.
test/verify/test_conv_bias_clipped_relu.cpp
View file @
6a72e8fc
...
...
@@ -29,26 +29,24 @@
#include <migraphx/instruction.hpp>
struct
test_conv_bias_clipped_relu
:
verify_program
<
test_conv_bias_clipped_relu
>
template
<
migraphx
::
shape
::
type_t
DType
>
struct
test_conv_bias_clipped_relu
:
verify_program
<
test_conv_bias_clipped_relu
<
DType
>>
{
migraphx
::
program
create_program
()
const
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
4
,
3
,
3
,
3
}});
auto
weights
=
mm
->
add_parameter
(
"w"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
4
,
3
,
3
,
3
}});
auto
l0
=
migraphx
::
literal
{
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
4
}},
{
2.0
f
,
2.0
f
,
2.0
f
,
2.0
f
}};
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
DType
,
{
4
,
3
,
3
,
3
}});
auto
weights
=
mm
->
add_parameter
(
"w"
,
migraphx
::
shape
{
DType
,
{
4
,
3
,
3
,
3
}});
auto
l0
=
migraphx
::
literal
{
migraphx
::
shape
{
DType
,
{
4
}},
{
2.0
f
,
2.0
f
,
2.0
f
,
2.0
f
}};
auto
bias
=
mm
->
add_literal
(
l0
);
auto
conv
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"convolution"
),
input
,
weights
);
auto
bcast_add
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
1
},
{
"out_lens"
,
conv
->
get_shape
().
lens
()}}),
bias
);
auto
bias_add
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"add"
),
conv
,
bcast_add
);
auto
min_val
=
mm
->
add_literal
(
0.0
f
);
auto
max_val
=
mm
->
add_literal
(
6.0
f
);
auto
min_val
=
mm
->
add_literal
(
migraphx
::
literal
(
DType
,
{
0.0
f
})
);
auto
max_val
=
mm
->
add_literal
(
migraphx
::
literal
(
DType
,
{
6.0
f
})
);
min_val
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"multibroadcast"
,
{{
"out_lens"
,
conv
->
get_shape
().
lens
()}}),
min_val
);
max_val
=
mm
->
add_instruction
(
...
...
@@ -57,3 +55,6 @@ struct test_conv_bias_clipped_relu : verify_program<test_conv_bias_clipped_relu>
return
p
;
}
};
template
struct
test_conv_bias_clipped_relu
<
migraphx
::
shape
::
float_type
>;
template
struct
test_conv_bias_clipped_relu
<
migraphx
::
shape
::
fp8e4m3fnuz_type
>;
test/verify/test_conv_bn.cpp
View file @
6a72e8fc
...
...
@@ -29,16 +29,17 @@
#include <migraphx/instruction.hpp>
#include <migraphx/common.hpp>
struct
test_conv_bn
:
verify_program
<
test_conv_bn
>
template
<
migraphx
::
shape
::
type_t
DType
>
struct
test_conv_bn
:
verify_program
<
test_conv_bn
<
DType
>>
{
migraphx
::
program
create_program
()
const
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
migraphx
::
shape
xs
{
migraphx
::
shape
::
float_t
ype
,
{
1
,
3
,
224
,
224
}};
migraphx
::
shape
ws
{
migraphx
::
shape
::
float_t
ype
,
{
64
,
3
,
7
,
7
}};
migraphx
::
shape
vars
{
migraphx
::
shape
::
float_t
ype
,
{
64
}};
migraphx
::
shape
xs
{
DT
ype
,
{
1
,
3
,
224
,
224
}};
migraphx
::
shape
ws
{
DT
ype
,
{
64
,
3
,
7
,
7
}};
migraphx
::
shape
vars
{
DT
ype
,
{
64
}};
auto
x
=
mm
->
add_parameter
(
"x"
,
xs
);
auto
w
=
mm
->
add_parameter
(
"w"
,
ws
);
// non-symmetrical tiling
...
...
@@ -53,8 +54,14 @@ struct test_conv_bn : verify_program<test_conv_bn>
auto
mean
=
mm
->
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
3
)));
auto
variance
=
mm
->
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
4
)));
auto
rt
=
mm
->
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
::
float_type
,
{
0.5
}});
auto
eps
=
mm
->
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
::
float_type
,
{
1e-5
f
}});
auto
rt
=
mm
->
add_literal
(
migraphx
::
literal
{
DType
,
{
0.5
}});
auto
eps
=
mm
->
add_literal
(
migraphx
::
literal
{
DType
,
{
1e-5
f
}});
if
constexpr
((
DType
)
==
migraphx
::
shape
::
fp8e4m3fnuz_type
)
{
// use 5e-2f for the fp8
eps
=
mm
->
add_literal
(
migraphx
::
literal
{
DType
,
{
5e-2
f
}});
}
auto
usq_scale
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"unsqueeze"
,
{{
"axes"
,
{
1
,
2
}}}),
scale
);
...
...
@@ -74,3 +81,6 @@ struct test_conv_bn : verify_program<test_conv_bn>
return
p
;
}
};
template
struct
test_conv_bn
<
migraphx
::
shape
::
float_type
>;
template
struct
test_conv_bn
<
migraphx
::
shape
::
fp8e4m3fnuz_type
>;
test/verify/test_conv_bn_add.cpp
View file @
6a72e8fc
...
...
@@ -29,22 +29,27 @@
#include <migraphx/instruction.hpp>
#include <migraphx/common.hpp>
struct
test_conv_bn_add
:
verify_program
<
test_conv_bn_add
>
template
<
migraphx
::
shape
::
type_t
DType
>
struct
test_conv_bn_add
:
verify_program
<
test_conv_bn_add
<
DType
>>
{
static
migraphx
::
instruction_ref
add_bn
(
migraphx
::
module
&
m
,
migraphx
::
instruction_ref
x
)
{
auto
bn_lens
=
x
->
get_shape
().
lens
();
auto
c_len
=
bn_lens
.
at
(
1
);
migraphx
::
shape
vars
{
migraphx
::
shape
::
float_t
ype
,
{
c_len
}};
migraphx
::
shape
vars
{
DT
ype
,
{
c_len
}};
auto
scale
=
m
.
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
1
+
c_len
)));
auto
bias
=
m
.
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
2
+
c_len
)));
auto
mean
=
m
.
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
3
+
c_len
)));
auto
variance
=
m
.
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
4
+
c_len
)));
auto
rt
=
m
.
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
::
float_type
,
{
0.5
}});
auto
eps
=
m
.
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
::
float_type
,
{
1e-5
f
}});
auto
rt
=
m
.
add_literal
(
migraphx
::
literal
{
DType
,
{
0.5
}});
auto
eps
=
m
.
add_literal
(
migraphx
::
literal
{
DType
,
{
1e-5
f
}});
if
constexpr
((
DType
)
==
migraphx
::
shape
::
fp8e4m3fnuz_type
)
{
// use 5e-2f for the fp8
eps
=
m
.
add_literal
(
migraphx
::
literal
{
DType
,
{
5e-2
f
}});
}
auto
usq_scale
=
m
.
add_instruction
(
migraphx
::
make_op
(
"unsqueeze"
,
{{
"axes"
,
{
1
,
2
}}}),
scale
);
auto
usq_bias
=
m
.
add_instruction
(
migraphx
::
make_op
(
"unsqueeze"
,
{{
"axes"
,
{
1
,
2
}}}),
bias
);
...
...
@@ -66,12 +71,12 @@ struct test_conv_bn_add : verify_program<test_conv_bn_add>
auto
*
mm
=
p
.
get_main_module
();
std
::
size_t
ichannels
=
64
;
std
::
size_t
ochannels
=
256
;
auto
x
=
mm
->
add_parameter
(
"x"
,
{
migraphx
::
shape
::
float_t
ype
,
{
1
,
ichannels
,
56
,
56
}});
auto
w
=
mm
->
add_literal
(
migraphx
::
generate_literal
(
{
migraphx
::
shape
::
float_t
ype
,
{
ochannels
,
ichannels
,
1
,
1
}},
1
));
auto
y
=
mm
->
add_parameter
(
"y"
,
{
migraphx
::
shape
::
float_t
ype
,
{
1
,
ichannels
,
56
,
56
}});
auto
v
=
mm
->
add_literal
(
migraphx
::
generate_literal
(
{
migraphx
::
shape
::
float_t
ype
,
{
ochannels
,
ichannels
,
1
,
1
}},
2
));
auto
x
=
mm
->
add_parameter
(
"x"
,
{
DT
ype
,
{
1
,
ichannels
,
56
,
56
}});
auto
w
=
mm
->
add_literal
(
migraphx
::
generate_literal
({
DT
ype
,
{
ochannels
,
ichannels
,
1
,
1
}},
1
));
auto
y
=
mm
->
add_parameter
(
"y"
,
{
DT
ype
,
{
1
,
ichannels
,
56
,
56
}});
auto
v
=
mm
->
add_literal
(
migraphx
::
generate_literal
({
DT
ype
,
{
ochannels
,
ichannels
,
1
,
1
}},
2
));
auto
relu1
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"relu"
),
x
);
auto
conv1
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"convolution"
),
relu1
,
w
);
auto
bn1
=
add_bn
(
*
mm
,
conv1
);
...
...
@@ -83,3 +88,6 @@ struct test_conv_bn_add : verify_program<test_conv_bn_add>
return
p
;
}
};
template
struct
test_conv_bn_add
<
migraphx
::
shape
::
float_type
>;
template
struct
test_conv_bn_add
<
migraphx
::
shape
::
fp8e4m3fnuz_type
>;
test/verify/test_conv_bn_relu_pooling.cpp
View file @
6a72e8fc
...
...
@@ -30,16 +30,17 @@
#include <migraphx/instruction.hpp>
#include <migraphx/common.hpp>
struct
test_conv_bn_relu_pooling
:
verify_program
<
test_conv_bn_relu_pooling
>
template
<
migraphx
::
shape
::
type_t
DType
>
struct
test_conv_bn_relu_pooling
:
verify_program
<
test_conv_bn_relu_pooling
<
DType
>>
{
migraphx
::
program
create_program
()
const
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
migraphx
::
shape
xs
{
migraphx
::
shape
::
float_t
ype
,
{
1
,
3
,
224
,
224
}};
migraphx
::
shape
ws
{
migraphx
::
shape
::
float_t
ype
,
{
64
,
3
,
7
,
7
}};
migraphx
::
shape
vars
{
migraphx
::
shape
::
float_t
ype
,
{
64
}};
migraphx
::
shape
xs
{
DT
ype
,
{
1
,
3
,
224
,
224
}};
migraphx
::
shape
ws
{
DT
ype
,
{
64
,
3
,
7
,
7
}};
migraphx
::
shape
vars
{
DT
ype
,
{
64
}};
auto
x
=
mm
->
add_parameter
(
"x"
,
xs
);
auto
w
=
mm
->
add_parameter
(
"w"
,
ws
);
auto
conv
=
mm
->
add_instruction
(
...
...
@@ -52,9 +53,13 @@ struct test_conv_bn_relu_pooling : verify_program<test_conv_bn_relu_pooling>
auto
mean
=
mm
->
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
3
)));
auto
variance
=
mm
->
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
4
)));
auto
rt
=
mm
->
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
::
float_type
,
{
0.5
}});
auto
eps
=
mm
->
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
::
float_type
,
{
1e-5
f
}});
auto
rt
=
mm
->
add_literal
(
migraphx
::
literal
{
DType
,
{
0.5
}});
auto
eps
=
mm
->
add_literal
(
migraphx
::
literal
{
DType
,
{
1e-5
f
}});
if
constexpr
((
DType
)
==
migraphx
::
shape
::
fp8e4m3fnuz_type
)
{
// use 5e-2f for the fp8
eps
=
mm
->
add_literal
(
migraphx
::
literal
{
DType
,
{
5e-2
f
}});
}
auto
usq_scale
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"unsqueeze"
,
{{
"axes"
,
{
1
,
2
}}}),
scale
);
auto
usq_bias
=
...
...
@@ -82,3 +87,6 @@ struct test_conv_bn_relu_pooling : verify_program<test_conv_bn_relu_pooling>
return
p
;
}
};
template
struct
test_conv_bn_relu_pooling
<
migraphx
::
shape
::
float_type
>;
template
struct
test_conv_bn_relu_pooling
<
migraphx
::
shape
::
fp8e4m3fnuz_type
>;
test/verify/test_conv_bn_relu_pooling2.cpp
View file @
6a72e8fc
...
...
@@ -30,22 +30,27 @@
#include <migraphx/instruction.hpp>
#include <migraphx/common.hpp>
struct
test_conv_bn_relu_pooling2
:
verify_program
<
test_conv_bn_relu_pooling2
>
template
<
migraphx
::
shape
::
type_t
DType
>
struct
test_conv_bn_relu_pooling2
:
verify_program
<
test_conv_bn_relu_pooling2
<
DType
>>
{
static
migraphx
::
instruction_ref
add_bn
(
migraphx
::
module
&
m
,
migraphx
::
instruction_ref
x
)
{
auto
bn_lens
=
x
->
get_shape
().
lens
();
auto
c_len
=
bn_lens
.
at
(
1
);
migraphx
::
shape
vars
{
migraphx
::
shape
::
float_t
ype
,
{
c_len
}};
migraphx
::
shape
vars
{
DT
ype
,
{
c_len
}};
auto
scale
=
m
.
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
1
+
c_len
)));
auto
bias
=
m
.
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
2
+
c_len
)));
auto
mean
=
m
.
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
3
+
c_len
)));
auto
variance
=
m
.
add_literal
(
migraphx
::
abs
(
migraphx
::
generate_literal
(
vars
,
4
+
c_len
)));
auto
rt
=
m
.
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
::
float_type
,
{
0.5
}});
auto
eps
=
m
.
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
::
float_type
,
{
1e-5
f
}});
auto
rt
=
m
.
add_literal
(
migraphx
::
literal
{
DType
,
{
0.5
}});
auto
eps
=
m
.
add_literal
(
migraphx
::
literal
{
DType
,
{
1e-5
f
}});
if
constexpr
((
DType
)
==
migraphx
::
shape
::
fp8e4m3fnuz_type
)
{
// use 5e-2f for the fp8
eps
=
m
.
add_literal
(
migraphx
::
literal
{
DType
,
{
5e-2
f
}});
}
auto
usq_scale
=
m
.
add_instruction
(
migraphx
::
make_op
(
"unsqueeze"
,
{{
"axes"
,
{
1
,
2
}}}),
scale
);
auto
usq_bias
=
m
.
add_instruction
(
migraphx
::
make_op
(
"unsqueeze"
,
{{
"axes"
,
{
1
,
2
}}}),
bias
);
...
...
@@ -66,10 +71,10 @@ struct test_conv_bn_relu_pooling2 : verify_program<test_conv_bn_relu_pooling2>
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
migraphx
::
shape
xs1
{
migraphx
::
shape
::
float_t
ype
,
{
1
,
512
,
7
,
7
}};
migraphx
::
shape
xs2
{
migraphx
::
shape
::
float_t
ype
,
{
1
,
1024
,
14
,
14
}};
migraphx
::
shape
ws1
{
migraphx
::
shape
::
float_t
ype
,
{
2048
,
512
,
1
,
1
}};
migraphx
::
shape
ws2
{
migraphx
::
shape
::
float_t
ype
,
{
2048
,
1024
,
1
,
1
}};
migraphx
::
shape
xs1
{
DT
ype
,
{
1
,
512
,
7
,
7
}};
migraphx
::
shape
xs2
{
DT
ype
,
{
1
,
1024
,
14
,
14
}};
migraphx
::
shape
ws1
{
DT
ype
,
{
2048
,
512
,
1
,
1
}};
migraphx
::
shape
ws2
{
DT
ype
,
{
2048
,
1024
,
1
,
1
}};
auto
x1
=
mm
->
add_parameter
(
"x1"
,
xs1
);
auto
w1
=
mm
->
add_parameter
(
"w1"
,
ws1
);
auto
conv1
=
mm
->
add_instruction
(
...
...
@@ -98,3 +103,6 @@ struct test_conv_bn_relu_pooling2 : verify_program<test_conv_bn_relu_pooling2>
return
p
;
}
};
template
struct
test_conv_bn_relu_pooling2
<
migraphx
::
shape
::
float_type
>;
template
struct
test_conv_bn_relu_pooling2
<
migraphx
::
shape
::
fp8e4m3fnuz_type
>;
test/verify/test_conv_group_add.cpp
View file @
6a72e8fc
...
...
@@ -27,16 +27,17 @@
#include <migraphx/generate.hpp>
#include <migraphx/make_op.hpp>
struct
test_conv_group_add
:
verify_program
<
test_conv_group_add
>
template
<
migraphx
::
shape
::
type_t
DType
>
struct
test_conv_group_add
:
verify_program
<
test_conv_group_add
<
DType
>>
{
migraphx
::
program
create_program
()
const
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
migraphx
::
shape
s
{
migraphx
::
shape
::
float_t
ype
,
{
1
,
68
,
28
,
28
}};
migraphx
::
shape
s
{
DT
ype
,
{
1
,
68
,
28
,
28
}};
auto
x
=
mm
->
add_parameter
(
"x"
,
s
);
auto
w
=
mm
->
add_parameter
(
"w"
,
{
migraphx
::
shape
::
float_t
ype
,
{
68
,
17
,
1
,
1
}});
auto
b
=
mm
->
add_parameter
(
"b"
,
{
migraphx
::
shape
::
float_t
ype
,
{
68
}});
auto
w
=
mm
->
add_parameter
(
"w"
,
{
DT
ype
,
{
68
,
17
,
1
,
1
}});
auto
b
=
mm
->
add_parameter
(
"b"
,
{
DT
ype
,
{
68
}});
auto
conv
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"convolution"
,
{{
"group"
,
4
}}),
x
,
w
);
auto
bb
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"broadcast"
,
{{
"axis"
,
1
},
{
"out_lens"
,
{
1
,
68
,
28
,
28
}}}),
b
);
...
...
@@ -44,3 +45,6 @@ struct test_conv_group_add : verify_program<test_conv_group_add>
return
p
;
}
};
template
struct
test_conv_group_add
<
migraphx
::
shape
::
float_type
>;
// grouped convolutions are not supported with MLIR therefore disable it
// template struct test_conv_group_add<migraphx::shape::fp8e4m3fnuz_type>;
test/verify/test_conv_pooling.cpp
View file @
6a72e8fc
...
...
@@ -28,16 +28,15 @@
#include <migraphx/make_op.hpp>
#include <migraphx/op/common.hpp>
struct
test_conv_pooling
:
verify_program
<
test_conv_pooling
>
template
<
migraphx
::
shape
::
type_t
DType
>
struct
test_conv_pooling
:
verify_program
<
test_conv_pooling
<
DType
>>
{
migraphx
::
program
create_program
()
const
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
4
,
3
,
32
,
32
}});
auto
weights
=
mm
->
add_parameter
(
"w"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
4
,
3
,
3
,
3
}});
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
DType
,
{
4
,
3
,
32
,
32
}});
auto
weights
=
mm
->
add_parameter
(
"w"
,
migraphx
::
shape
{
DType
,
{
4
,
3
,
3
,
3
}});
auto
conv
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"convolution"
),
input
,
weights
);
auto
pooling
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"pooling"
,
{{
"mode"
,
migraphx
::
op
::
pooling_mode
::
max
}}),
conv
);
...
...
@@ -45,3 +44,6 @@ struct test_conv_pooling : verify_program<test_conv_pooling>
return
p
;
}
};
template
struct
test_conv_pooling
<
migraphx
::
shape
::
float_type
>;
template
struct
test_conv_pooling
<
migraphx
::
shape
::
fp8e4m3fnuz_type
>;
test/verify/test_conv_relu.cpp
View file @
6a72e8fc
...
...
@@ -27,18 +27,20 @@
#include <migraphx/generate.hpp>
#include <migraphx/make_op.hpp>
struct
test_conv_relu
:
verify_program
<
test_conv_relu
>
template
<
migraphx
::
shape
::
type_t
DType
>
struct
test_conv_relu
:
verify_program
<
test_conv_relu
<
DType
>>
{
migraphx
::
program
create_program
()
const
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
4
,
3
,
3
,
3
}});
auto
weights
=
mm
->
add_parameter
(
"w"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
4
,
3
,
3
,
3
}});
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
DType
,
{
4
,
3
,
3
,
3
}});
auto
weights
=
mm
->
add_parameter
(
"w"
,
migraphx
::
shape
{
DType
,
{
4
,
3
,
3
,
3
}});
auto
conv
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"convolution"
),
input
,
weights
);
mm
->
add_instruction
(
migraphx
::
make_op
(
"relu"
),
conv
);
return
p
;
}
};
template
struct
test_conv_relu
<
migraphx
::
shape
::
float_type
>;
template
struct
test_conv_relu
<
migraphx
::
shape
::
half_type
>;
template
struct
test_conv_relu
<
migraphx
::
shape
::
fp8e4m3fnuz_type
>;
test/verify/test_conv_relu_half.cpp
deleted
100644 → 0
View file @
a09dc502
/*
* The MIT License (MIT)
*
* Copyright (c) 2015-2022 Advanced Micro Devices, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "verify_program.hpp"
#include <migraphx/program.hpp>
#include <migraphx/generate.hpp>
#include <migraphx/make_op.hpp>
struct
test_conv_relu_half
:
verify_program
<
test_conv_relu_half
>
{
migraphx
::
program
create_program
()
const
{
migraphx
::
program
p
;
auto
*
mm
=
p
.
get_main_module
();
auto
input
=
mm
->
add_parameter
(
"x"
,
migraphx
::
shape
{
migraphx
::
shape
::
half_type
,
{
4
,
3
,
3
,
3
}});
auto
weights
=
mm
->
add_parameter
(
"w"
,
migraphx
::
shape
{
migraphx
::
shape
::
half_type
,
{
4
,
3
,
3
,
3
}});
auto
conv
=
mm
->
add_instruction
(
migraphx
::
make_op
(
"convolution"
),
input
,
weights
);
mm
->
add_instruction
(
migraphx
::
make_op
(
"relu"
),
conv
);
return
p
;
}
};
Prev
1
2
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