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
3af8d2e9
Commit
3af8d2e9
authored
Nov 26, 2018
by
Shucai Xiao
Browse files
Add cpu test for cos,tan,sinh,cosh,asin,acos,and atan.
parent
18772834
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
98 additions
and
1 deletion
+98
-1
src/onnx/onnx.cpp
src/onnx/onnx.cpp
+1
-1
src/targets/gpu/lowering.cpp
src/targets/gpu/lowering.cpp
+25
-0
test/cpu_ops_test.cpp
test/cpu_ops_test.cpp
+72
-0
No files found.
src/onnx/onnx.cpp
View file @
3af8d2e9
...
@@ -52,7 +52,6 @@ struct onnx_parser
...
@@ -52,7 +52,6 @@ struct onnx_parser
add_generic_op
(
"MatMul"
,
op
::
dot
{});
add_generic_op
(
"MatMul"
,
op
::
dot
{});
add_generic_op
(
"Relu"
,
op
::
relu
{});
add_generic_op
(
"Relu"
,
op
::
relu
{});
add_generic_op
(
"Sigmoid"
,
op
::
sigmoid
{});
add_generic_op
(
"Sigmoid"
,
op
::
sigmoid
{});
add_generic_op
(
"Tanh"
,
op
::
tanh
{});
add_generic_op
(
"Abs"
,
op
::
abs
{});
add_generic_op
(
"Abs"
,
op
::
abs
{});
// disable dropout for inference
// disable dropout for inference
add_generic_op
(
"Dropout"
,
op
::
identity
{});
add_generic_op
(
"Dropout"
,
op
::
identity
{});
...
@@ -62,6 +61,7 @@ struct onnx_parser
...
@@ -62,6 +61,7 @@ struct onnx_parser
add_generic_op
(
"Tan"
,
op
::
tan
{});
add_generic_op
(
"Tan"
,
op
::
tan
{});
add_generic_op
(
"Sinh"
,
op
::
sinh
{});
add_generic_op
(
"Sinh"
,
op
::
sinh
{});
add_generic_op
(
"Cosh"
,
op
::
cosh
{});
add_generic_op
(
"Cosh"
,
op
::
cosh
{});
add_generic_op
(
"Tanh"
,
op
::
tanh
{});
add_generic_op
(
"Asin"
,
op
::
asin
{});
add_generic_op
(
"Asin"
,
op
::
asin
{});
add_generic_op
(
"Acos"
,
op
::
acos
{});
add_generic_op
(
"Acos"
,
op
::
acos
{});
add_generic_op
(
"Atan"
,
op
::
atan
{});
add_generic_op
(
"Atan"
,
op
::
atan
{});
...
...
src/targets/gpu/lowering.cpp
View file @
3af8d2e9
...
@@ -208,6 +208,31 @@ struct miopen_apply
...
@@ -208,6 +208,31 @@ struct miopen_apply
return
prog
->
replace_instruction
(
ins
,
T
{},
refs
);
return
prog
->
replace_instruction
(
ins
,
T
{},
refs
);
}
}
template
<
class
T
,
class
Op
>
instruction_ref
apply_extend_op
(
instruction_ref
ins
)
{
auto
&&
op
=
any_cast
<
Op
>
(
ins
->
get_operator
());
auto
output
=
insert_allocation
(
ins
,
ins
->
get_shape
());
std
::
vector
<
instruction_ref
>
refs
=
ins
->
inputs
();
refs
.
push_back
(
output
);
return
prog
->
replace_instruction
(
ins
,
T
{
op
},
refs
);
}
/*
template<class T>
void apply_generic_op_test(std::string name, instruction_ref ins)
{
apply_map.emplace(name, [&]() {
auto output = insert_allocation(ins, ins->get_shape());
std::vector<instruction_ref> refs = ins->inputs();
refs.push_back(output);
return prog->replace_instruction(ins, T{}, refs);
});
}
*/
instruction_ref
apply_contiguous
(
instruction_ref
ins
)
instruction_ref
apply_contiguous
(
instruction_ref
ins
)
{
{
auto
&&
op
=
any_cast
<
op
::
contiguous
>
(
ins
->
get_operator
());
auto
&&
op
=
any_cast
<
op
::
contiguous
>
(
ins
->
get_operator
());
...
...
test/cpu_ops_test.cpp
View file @
3af8d2e9
...
@@ -455,6 +455,50 @@ TEST_CASE(tan_test)
...
@@ -455,6 +455,50 @@ TEST_CASE(tan_test)
EXPECT
(
migraphx
::
verify_range
(
results_vector
,
gold
));
EXPECT
(
migraphx
::
verify_range
(
results_vector
,
gold
));
}
}
TEST_CASE
(
asin_test
)
{
migraphx
::
program
p
;
migraphx
::
shape
s
{
migraphx
::
shape
::
float_type
,
{
3
}};
std
::
vector
<
float
>
data
{
-
0.5
f
,
0.0
f
,
0.9
f
};
auto
l
=
p
.
add_literal
(
migraphx
::
literal
{
s
,
data
});
p
.
add_instruction
(
migraphx
::
op
::
asin
{},
l
);
p
.
compile
(
migraphx
::
cpu
::
target
{});
auto
result
=
p
.
eval
({});
std
::
vector
<
float
>
results_vector
(
3
);
result
.
visit
([
&
](
auto
output
)
{
results_vector
.
assign
(
output
.
begin
(),
output
.
end
());
});
std
::
vector
<
float
>
gold
=
{
-
0.5235987756
f
,
0.
f
,
1.119769515
};
EXPECT
(
migraphx
::
verify_range
(
results_vector
,
gold
));
}
TEST_CASE
(
acos_test
)
{
migraphx
::
program
p
;
migraphx
::
shape
s
{
migraphx
::
shape
::
double_type
,
{
3
}};
std
::
vector
<
float
>
data
{
-
0.8
f
,
0.0
f
,
1.0
f
};
auto
l
=
p
.
add_literal
(
migraphx
::
literal
{
s
,
data
});
p
.
add_instruction
(
migraphx
::
op
::
acos
{},
l
);
p
.
compile
(
migraphx
::
cpu
::
target
{});
auto
result
=
p
.
eval
({});
std
::
vector
<
float
>
results_vector
(
3
);
result
.
visit
([
&
](
auto
output
)
{
results_vector
.
assign
(
output
.
begin
(),
output
.
end
());
});
std
::
vector
<
float
>
gold
=
{
2.4980915448
f
,
1.5707963268
f
,
0.0
f
};
EXPECT
(
migraphx
::
verify_range
(
results_vector
,
gold
));
}
TEST_CASE
(
atan_test
)
{
migraphx
::
program
p
;
migraphx
::
shape
s
{
migraphx
::
shape
::
double_type
,
{
3
}};
auto
l
=
p
.
add_literal
(
migraphx
::
literal
{
s
,
{
-
1
,
0
,
1
}});
p
.
add_instruction
(
migraphx
::
op
::
atan
{},
l
);
p
.
compile
(
migraphx
::
cpu
::
target
{});
auto
result
=
p
.
eval
({});
std
::
vector
<
float
>
results_vector
(
3
);
result
.
visit
([
&
](
auto
output
)
{
results_vector
.
assign
(
output
.
begin
(),
output
.
end
());
});
std
::
vector
<
float
>
gold
=
{
-
0.7853981634
f
,
0.0
f
,
0.7853981634
f
};
EXPECT
(
migraphx
::
verify_range
(
results_vector
,
gold
));
}
TEST_CASE
(
add_test
)
TEST_CASE
(
add_test
)
{
{
migraphx
::
program
p
;
migraphx
::
program
p
;
...
@@ -1137,6 +1181,34 @@ TEST_CASE(sigmoid_test)
...
@@ -1137,6 +1181,34 @@ TEST_CASE(sigmoid_test)
EXPECT
(
migraphx
::
verify_range
(
results_vector
,
gold
));
EXPECT
(
migraphx
::
verify_range
(
results_vector
,
gold
));
}
}
TEST_CASE
(
sinh_test
)
{
migraphx
::
program
p
;
migraphx
::
shape
s
{
migraphx
::
shape
::
float_type
,
{
2
,
2
}};
auto
l
=
p
.
add_literal
(
migraphx
::
literal
{
s
,
{
-
1.0
,
2.0
,
-
3.0
,
4.0
}});
p
.
add_instruction
(
migraphx
::
op
::
sinh
{},
l
);
p
.
compile
(
migraphx
::
cpu
::
target
{});
auto
result
=
p
.
eval
({});
std
::
vector
<
float
>
results_vector
(
4
);
result
.
visit
([
&
](
auto
output
)
{
results_vector
.
assign
(
output
.
begin
(),
output
.
end
());
});
std
::
vector
<
float
>
gold
{
sinhf
(
-
1
),
sinhf
(
2
),
sinhf
(
-
3
),
sinhf
(
4
)};
EXPECT
(
migraphx
::
verify_range
(
results_vector
,
gold
));
}
TEST_CASE
(
cosh_test
)
{
migraphx
::
program
p
;
migraphx
::
shape
s
{
migraphx
::
shape
::
float_type
,
{
2
,
2
}};
auto
l
=
p
.
add_literal
(
migraphx
::
literal
{
s
,
{
-
1.0
,
2.0
,
-
3.0
,
4.0
}});
p
.
add_instruction
(
migraphx
::
op
::
cosh
{},
l
);
p
.
compile
(
migraphx
::
cpu
::
target
{});
auto
result
=
p
.
eval
({});
std
::
vector
<
float
>
results_vector
(
4
);
result
.
visit
([
&
](
auto
output
)
{
results_vector
.
assign
(
output
.
begin
(),
output
.
end
());
});
std
::
vector
<
float
>
gold
{
coshf
(
-
1
),
coshf
(
2
),
coshf
(
-
3
),
coshf
(
4
)};
EXPECT
(
migraphx
::
verify_range
(
results_vector
,
gold
));
}
TEST_CASE
(
tanh_test
)
TEST_CASE
(
tanh_test
)
{
{
migraphx
::
program
p
;
migraphx
::
program
p
;
...
...
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