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
f67fc560
Commit
f67fc560
authored
Feb 21, 2019
by
Paul
Browse files
Merge branch 'develop' into param-check
parents
12a1d140
c01dc11e
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
71 additions
and
5 deletions
+71
-5
src/onnx/onnx.cpp
src/onnx/onnx.cpp
+9
-1
test/cpu_ops_test.cpp
test/cpu_ops_test.cpp
+19
-0
test/onnx/add_fp16_test.onnx
test/onnx/add_fp16_test.onnx
+21
-0
test/onnx/onnx_test.cpp
test/onnx/onnx_test.cpp
+22
-4
No files found.
src/onnx/onnx.cpp
View file @
f67fc560
...
...
@@ -1133,7 +1133,15 @@ struct onnx_parser
case
onnx
::
TensorProto
::
BOOL
:
return
literal
{{
shape
::
int32_type
,
dims
},
t
.
int32_data
().
begin
(),
t
.
int32_data
().
end
()};
case
onnx
::
TensorProto
::
FLOAT16
:
return
literal
{{
shape
::
half_type
,
dims
},
t
.
float_data
().
begin
(),
t
.
float_data
().
end
()};
{
std
::
vector
<
uint16_t
>
data_uint16
(
t
.
int32_data
().
begin
(),
t
.
int32_data
().
end
());
std
::
vector
<
half
>
data_half
;
std
::
transform
(
data_uint16
.
begin
(),
data_uint16
.
end
(),
std
::
back_inserter
(
data_half
),
[](
uint16_t
raw_val
)
{
return
*
reinterpret_cast
<
half
*>
(
&
raw_val
);
});
return
literal
{{
shape
::
half_type
,
dims
},
data_half
.
begin
(),
data_half
.
end
()};
}
case
onnx
::
TensorProto
::
DOUBLE
:
return
literal
{
{
shape
::
double_type
,
dims
},
t
.
double_data
().
begin
(),
t
.
double_data
().
end
()};
...
...
test/cpu_ops_test.cpp
View file @
f67fc560
...
...
@@ -7,6 +7,7 @@
#include <migraphx/verify.hpp>
#include <migraphx/onnx.hpp>
#include "test.hpp"
#include <migraphx/half.hpp>
float
sigmoid
(
float
x
)
{
return
1
/
(
1
+
expf
(
-
x
));
}
...
...
@@ -1375,4 +1376,22 @@ TEST_CASE(pad_test)
EXPECT
(
migraphx
::
verify_range
(
results_vector
,
gold
));
}
TEST_CASE
(
fp16_test
)
{
migraphx
::
program
p
;
migraphx
::
shape
s
{
migraphx
::
shape
::
half_type
,
{
1
}};
migraphx
::
half
a
{
1.5
};
migraphx
::
half
b
{
2.5
};
migraphx
::
half
c
{
4.0
};
auto
l0
=
p
.
add_literal
(
migraphx
::
literal
{
s
,
{
a
}});
auto
l1
=
p
.
add_literal
(
migraphx
::
literal
{
s
,
{
b
}});
p
.
add_instruction
(
migraphx
::
op
::
add
{},
l0
,
l1
);
p
.
compile
(
migraphx
::
cpu
::
target
{});
auto
result
=
p
.
eval
({});
std
::
vector
<
migraphx
::
half
>
results_vector
(
1
);
result
.
visit
([
&
](
auto
output
)
{
results_vector
.
assign
(
output
.
begin
(),
output
.
end
());
});
std
::
vector
<
migraphx
::
half
>
gold
{
c
};
EXPECT
(
migraphx
::
verify_range
(
results_vector
,
gold
));
}
int
main
(
int
argc
,
const
char
*
argv
[])
{
test
::
run
(
argc
,
argv
);
}
test/onnx/add_fp16_test.onnx
0 → 100644
View file @
f67fc560
add-fp16-example:m
0
12"Add test-add-fp16*
*|B0*
*B1Z
0
Z
1
b
2
B
\ No newline at end of file
test/onnx/onnx_test.cpp
View file @
f67fc560
...
...
@@ -1186,7 +1186,9 @@ TEST_CASE(group_conv_test)
migraphx
::
op
::
convolution
op
;
op
.
group
=
4
;
p
.
add_instruction
(
op
,
l0
,
l1
);
migraphx
::
parse_onnx
(
"group_conv_test.onnx"
);
auto
prog
=
migraphx
::
parse_onnx
(
"group_conv_test.onnx"
);
EXPECT
(
p
==
prog
);
}
TEST_CASE
(
pad_test
)
...
...
@@ -1194,13 +1196,14 @@ TEST_CASE(pad_test)
migraphx
::
program
p
;
auto
l0
=
p
.
add_parameter
(
"0"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
2
,
2
}});
p
.
add_instruction
(
migraphx
::
op
::
pad
{{
1
,
1
,
1
,
1
}},
l0
);
migraphx
::
parse_onnx
(
"pad_test.onnx"
);
auto
prog
=
migraphx
::
parse_onnx
(
"pad_test.onnx"
);
EXPECT
(
p
==
prog
);
}
TEST_CASE
(
lrn_test
)
{
migraphx
::
program
p
;
auto
l0
=
p
.
add_parameter
(
"0"
,
migraphx
::
shape
{
migraphx
::
shape
::
float_type
,
{
1
,
28
,
24
,
24
}});
migraphx
::
op
::
lrn
op
;
op
.
size
=
5
;
...
...
@@ -1208,7 +1211,22 @@ TEST_CASE(lrn_test)
op
.
beta
=
0.75
;
op
.
bias
=
1.0
;
p
.
add_instruction
(
op
,
l0
);
migraphx
::
parse_onnx
(
"lrn_test.onnx"
);
auto
prog
=
migraphx
::
parse_onnx
(
"lrn_test.onnx"
);
EXPECT
(
p
==
prog
);
}
TEST_CASE
(
add_fp16_test
)
{
migraphx
::
program
p
;
auto
l0
=
p
.
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
{
migraphx
::
shape
::
half_type
,
{
1
}},
{
1.5
}});
auto
l1
=
p
.
add_literal
(
migraphx
::
literal
{
migraphx
::
shape
{
migraphx
::
shape
::
half_type
,
{
1
}},
{
2.5
}});
p
.
add_instruction
(
migraphx
::
op
::
add
{},
l0
,
l1
);
auto
prog
=
migraphx
::
parse_onnx
(
"add_fp16_test.onnx"
);
EXPECT
(
p
==
prog
);
}
int
main
(
int
argc
,
const
char
*
argv
[])
{
test
::
run
(
argc
,
argv
);
}
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