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
ee80cee9
Unverified
Commit
ee80cee9
authored
Nov 07, 2018
by
Paul Fultz II
Committed by
GitHub
Nov 07, 2018
Browse files
Merge branch 'master' into gpu_slice_test
parents
6d06226d
f958d56f
Changes
159
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
123 additions
and
18 deletions
+123
-18
src/include/migraph/iterator_for.hpp
src/include/migraph/iterator_for.hpp
+3
-0
src/include/migraph/literal.hpp
src/include/migraph/literal.hpp
+3
-0
src/include/migraph/make_shared_array.hpp
src/include/migraph/make_shared_array.hpp
+3
-0
src/include/migraph/manage_ptr.hpp
src/include/migraph/manage_ptr.hpp
+3
-0
src/include/migraph/matcher.hpp
src/include/migraph/matcher.hpp
+3
-1
src/include/migraph/memory_coloring.hpp
src/include/migraph/memory_coloring.hpp
+5
-0
src/include/migraph/onnx.hpp
src/include/migraph/onnx.hpp
+3
-0
src/include/migraph/operation.hpp
src/include/migraph/operation.hpp
+40
-0
src/include/migraph/operators.hpp
src/include/migraph/operators.hpp
+24
-17
src/include/migraph/pass.hpp
src/include/migraph/pass.hpp
+3
-0
src/include/migraph/pass_config.hpp
src/include/migraph/pass_config.hpp
+4
-0
src/include/migraph/program.hpp
src/include/migraph/program.hpp
+4
-0
src/include/migraph/ranges.hpp
src/include/migraph/ranges.hpp
+3
-0
src/include/migraph/rank.hpp
src/include/migraph/rank.hpp
+4
-0
src/include/migraph/raw_data.hpp
src/include/migraph/raw_data.hpp
+3
-0
src/include/migraph/reflect.hpp
src/include/migraph/reflect.hpp
+3
-0
src/include/migraph/requires.hpp
src/include/migraph/requires.hpp
+3
-0
src/include/migraph/shape.hpp
src/include/migraph/shape.hpp
+3
-0
src/include/migraph/shape_for_each.hpp
src/include/migraph/shape_for_each.hpp
+3
-0
src/include/migraph/simplify_algebra.hpp
src/include/migraph/simplify_algebra.hpp
+3
-0
No files found.
src/include/migraph/iterator_for.hpp
View file @
ee80cee9
...
...
@@ -3,8 +3,10 @@
#include <cassert>
#include <type_traits>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
template
<
class
T
>
struct
iterator_for_range
...
...
@@ -37,6 +39,7 @@ iterator_for_range<T> iterator_for(T& x)
return
{
&
x
};
}
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/literal.hpp
View file @
ee80cee9
...
...
@@ -7,10 +7,12 @@
#include <migraph/tensor_view.hpp>
#include <migraph/raw_data.hpp>
#include <migraph/make_shared_array.hpp>
#include <migraph/config.hpp>
#include <memory>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
/**
* @brief Represents a raw literal
...
...
@@ -122,6 +124,7 @@ literal transform(literal l1, literal l2, F f)
return
result
;
}
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/make_shared_array.hpp
View file @
ee80cee9
...
...
@@ -2,8 +2,10 @@
#define MIGRAPH_GUARD_MIGRAPHLIB_MAKE_SHARED_ARRAY_HPP
#include <memory>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
template
<
typename
T
>
std
::
shared_ptr
<
T
>
make_shared_array
(
size_t
size
)
...
...
@@ -11,6 +13,7 @@ std::shared_ptr<T> make_shared_array(size_t size)
return
std
::
shared_ptr
<
T
>
(
new
T
[
size
],
std
::
default_delete
<
T
[]
>
());
}
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/manage_ptr.hpp
View file @
ee80cee9
...
...
@@ -3,8 +3,10 @@
#include <memory>
#include <type_traits>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
template
<
class
F
,
F
f
>
// NOLINT
struct
manage_deleter
...
...
@@ -49,6 +51,7 @@ shared<T> share(T p)
return
shared
<
T
>
{
std
::
move
(
p
)};
}
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#define MIGRAPH_MANAGE_PTR(T, F) \
...
...
src/include/migraph/matcher.hpp
View file @
ee80cee9
...
...
@@ -6,9 +6,11 @@
#include <migraph/instruction.hpp>
#include <migraph/program.hpp>
#include <migraph/iterator_for.hpp>
#include <migraph/config.hpp>
#include <unordered_map>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
namespace
match
{
...
...
@@ -338,7 +340,7 @@ inline auto either_arg(std::size_t i, std::size_t j)
}
}
// namespace match
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/memory_coloring.hpp
View file @
ee80cee9
...
...
@@ -3,16 +3,21 @@
#include <string>
#include <migraph/instruction_ref.hpp>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
struct
program
;
struct
memory_coloring
{
std
::
string
allocation_op
{};
bool
verify
=
false
;
std
::
string
name
()
const
{
return
"memory coloring"
;
}
void
apply
(
program
&
p
)
const
;
};
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/onnx.hpp
View file @
ee80cee9
...
...
@@ -2,12 +2,15 @@
#define MIGRAPH_GUARD_MIGRAPHLIB_ONNX_HPP
#include <migraph/program.hpp>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
/// Create a program from an onnx file
program
parse_onnx
(
const
std
::
string
&
name
);
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/operation.hpp
View file @
ee80cee9
...
...
@@ -13,8 +13,10 @@
#include <migraph/argument.hpp>
#include <migraph/context.hpp>
#include <migraph/auto_any_cast.hpp>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
#ifdef DOXYGEN
...
...
@@ -43,6 +45,9 @@ struct operation
* the same the `output` shape.
*/
argument
compute
(
context
&
ctx
,
const
shape
&
output
,
const
std
::
vector
<
argument
>&
input
)
const
;
/// An optional method to return which argument the output will alias. If
/// there is no aliased output then -1 can be returned.
int
output_alias
(
const
std
::
vector
<
shape
>&
input
)
const
;
/// An optional stream operator to print the operation. When this is not
/// implemented, it will just print the operation's name.
friend
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
const
operation
&
op
);
...
...
@@ -108,12 +113,32 @@ compute_op(const T& x, context& ctx, const shape& output_shape, const std::vecto
return
compute_op
(
rank
<
1
>
{},
x
,
ctx
,
output_shape
,
input
);
}
template
<
class
T
>
int
output_alias_op
(
rank
<
0
>
,
const
T
&
,
const
std
::
vector
<
shape
>&
)
{
return
-
1
;
}
template
<
class
T
>
auto
output_alias_op
(
rank
<
1
>
,
const
T
&
x
,
const
std
::
vector
<
shape
>&
shapes
)
->
decltype
(
x
.
output_alias
(
shapes
))
{
return
x
.
output_alias
(
shapes
);
}
template
<
class
T
>
int
output_alias_op
(
const
T
&
x
,
const
std
::
vector
<
shape
>&
shapes
)
{
return
output_alias_op
(
rank
<
1
>
{},
x
,
shapes
);
}
/*
* Type-erased interface for:
*
* struct operation
* {
* std::string name() const;
* int output_alias(const std::vector<shape>& input) const;
* shape compute_shape(const std::vector<shape>& input) const;
* argument compute(context& ctx,const shape& output,const std::vector<argument>& input) const;
* friend std::ostream & operator<<(std::ostream & os,const operation & op) ;
...
...
@@ -185,6 +210,12 @@ struct operation
return
(
*
this
).
private_detail_te_get_handle
().
name
();
}
int
output_alias
(
const
std
::
vector
<
shape
>&
input
)
const
{
assert
((
*
this
).
private_detail_te_handle_mem_var
);
return
(
*
this
).
private_detail_te_get_handle
().
output_alias
(
input
);
}
shape
compute_shape
(
const
std
::
vector
<
shape
>&
input
)
const
{
assert
((
*
this
).
private_detail_te_handle_mem_var
);
...
...
@@ -217,6 +248,7 @@ struct operation
virtual
const
std
::
type_info
&
type
()
const
=
0
;
virtual
std
::
string
name
()
const
=
0
;
virtual
int
output_alias
(
const
std
::
vector
<
shape
>&
input
)
const
=
0
;
virtual
shape
compute_shape
(
const
std
::
vector
<
shape
>&
input
)
const
=
0
;
virtual
argument
compute
(
context
&
ctx
,
const
shape
&
output
,
const
std
::
vector
<
argument
>&
input
)
const
=
0
;
...
...
@@ -254,8 +286,15 @@ struct operation
std
::
string
name
()
const
override
{
return
private_detail_te_value
.
name
();
}
int
output_alias
(
const
std
::
vector
<
shape
>&
input
)
const
override
{
return
output_alias_op
(
private_detail_te_value
,
input
);
}
shape
compute_shape
(
const
std
::
vector
<
shape
>&
input
)
const
override
{
return
private_detail_te_value
.
compute_shape
(
input
);
}
...
...
@@ -348,6 +387,7 @@ inline bool operator!=(const operation& x, const operation& y) { return !(x == y
#endif
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/operators.hpp
View file @
ee80cee9
...
...
@@ -6,10 +6,12 @@
#include <migraph/check_shapes.hpp>
#include <migraph/stringutils.hpp>
#include <migraph/streamutils.hpp>
#include <migraph/config.hpp>
#include <cmath>
#include <utility>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
namespace
op
{
struct
not_computable
...
...
@@ -223,22 +225,6 @@ struct pooling
}
};
struct
activation
{
std
::
string
mode
;
std
::
string
name
()
const
{
return
"activation"
;
}
shape
compute_shape
(
std
::
vector
<
shape
>
inputs
)
const
{
check_shapes
{
inputs
,
*
this
}.
has
(
1
);
return
inputs
.
front
();
}
friend
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
const
activation
&
op
)
{
os
<<
op
.
name
()
<<
":"
<<
op
.
mode
;
return
os
;
}
};
struct
leaky_relu
{
std
::
string
name
()
const
{
return
"leaky_relu"
;
}
...
...
@@ -296,6 +282,7 @@ struct transpose
{
return
{
std
::
move
(
output_shape
),
std
::
move
(
args
.
front
().
data
)};
}
int
output_alias
(
const
std
::
vector
<
shape
>&
)
const
{
return
0
;
}
};
struct
contiguous
...
...
@@ -359,6 +346,7 @@ struct concat
new_lens
[
axis
]
=
new_dim_axis
;
return
{
type
,
new_lens
};
}
int
output_alias
(
const
std
::
vector
<
shape
>&
)
const
{
return
0
;
}
};
struct
slice
...
...
@@ -440,6 +428,7 @@ struct slice
auto
offset
=
compute_offset
(
input
.
get_shape
())
*
output_shape
.
type_size
();
return
{
std
::
move
(
output_shape
),
[
=
]
{
return
input
.
data
()
+
offset
;
}};
}
int
output_alias
(
const
std
::
vector
<
shape
>&
)
const
{
return
0
;
}
};
struct
squeeze
...
...
@@ -487,6 +476,7 @@ struct squeeze
{
return
{
std
::
move
(
output_shape
),
std
::
move
(
args
.
front
().
data
)};
}
int
output_alias
(
const
std
::
vector
<
shape
>&
)
const
{
return
0
;
}
};
struct
unsqueeze
...
...
@@ -525,6 +515,7 @@ struct unsqueeze
{
return
{
std
::
move
(
output_shape
),
std
::
move
(
args
.
front
().
data
)};
}
int
output_alias
(
const
std
::
vector
<
shape
>&
)
const
{
return
0
;
}
};
struct
reshape
...
...
@@ -576,6 +567,7 @@ struct reshape
{
return
{
std
::
move
(
output_shape
),
std
::
move
(
args
.
front
().
data
)};
}
int
output_alias
(
const
std
::
vector
<
shape
>&
)
const
{
return
0
;
}
};
struct
dot
...
...
@@ -613,9 +605,14 @@ struct unary
}
};
struct
identity
:
unary
struct
identity
{
std
::
string
name
()
const
{
return
"identity"
;
}
shape
compute_shape
(
std
::
vector
<
shape
>
inputs
)
const
{
return
inputs
.
at
(
0
);
}
argument
compute
(
context
&
,
shape
output_shape
,
std
::
vector
<
argument
>
args
)
const
{
return
{
std
::
move
(
output_shape
),
std
::
move
(
args
.
at
(
0
).
data
)};
}
};
struct
abs
:
unary
...
...
@@ -673,6 +670,11 @@ struct neg : unary
std
::
string
name
()
const
{
return
"neg"
;
}
};
struct
relu
:
unary
{
std
::
string
name
()
const
{
return
"relu"
;
}
};
struct
softmax
{
std
::
string
name
()
const
{
return
"softmax"
;
}
...
...
@@ -713,6 +715,7 @@ struct flatten
{
return
{
std
::
move
(
output_shape
),
std
::
move
(
args
.
front
().
data
)};
}
int
output_alias
(
const
std
::
vector
<
shape
>&
)
const
{
return
0
;
}
};
struct
broadcast
{
...
...
@@ -755,6 +758,7 @@ struct broadcast
{
return
{
std
::
move
(
output_shape
),
std
::
move
(
args
.
at
(
0
).
data
)};
}
int
output_alias
(
const
std
::
vector
<
shape
>&
)
const
{
return
0
;
}
};
struct
scalar
...
...
@@ -776,6 +780,7 @@ struct scalar
{
return
{
std
::
move
(
output_shape
),
std
::
move
(
args
.
at
(
0
).
data
)};
}
int
output_alias
(
const
std
::
vector
<
shape
>&
)
const
{
return
0
;
}
};
struct
binary
...
...
@@ -828,6 +833,7 @@ struct load
{
return
{
s
,
args
[
0
].
data
()
+
offset
};
}
int
output_alias
(
const
std
::
vector
<
shape
>&
)
const
{
return
0
;
}
};
struct
outline
...
...
@@ -853,6 +859,7 @@ struct outline
};
}
// namespace op
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/pass.hpp
View file @
ee80cee9
...
...
@@ -7,8 +7,10 @@
#include <memory>
#include <type_traits>
#include <utility>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
struct
program
;
...
...
@@ -216,6 +218,7 @@ inline const ValueType& any_cast(const pass& x)
#endif
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/pass_config.hpp
View file @
ee80cee9
...
...
@@ -3,9 +3,13 @@
#define MIGRAPH_GUARD_PASS_CONFIG_HPP
#include <migraph/env.hpp>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
MIGRAPH_DECLARE_ENV_VAR
(
MIGRAPH_DISABLE_MEMORY_COLORING
)
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif // MIGRAPH_GUARD_PASS_CONFIG_HPP
src/include/migraph/program.hpp
View file @
ee80cee9
...
...
@@ -9,10 +9,12 @@
#include <migraph/instruction_ref.hpp>
#include <migraph/target.hpp>
#include <migraph/tracer.hpp>
#include <migraph/config.hpp>
#include <algorithm>
#include <iostream>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
struct
program_impl
;
...
...
@@ -106,6 +108,8 @@ struct program
private:
std
::
unique_ptr
<
program_impl
>
impl
;
};
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/ranges.hpp
View file @
ee80cee9
...
...
@@ -4,8 +4,10 @@
#include <algorithm>
#include <initializer_list>
#include <migraph/rank.hpp>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
namespace
detail
{
...
...
@@ -104,6 +106,7 @@ iterator_range<Iterator> range(std::pair<Iterator, Iterator> p)
return
{
p
.
first
,
p
.
second
};
}
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/rank.hpp
View file @
ee80cee9
#ifndef MIGRAPH_GUARD_RTGLIB_RANK_HPP
#define MIGRAPH_GUARD_RTGLIB_RANK_HPP
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
template
<
int
N
>
struct
rank
:
rank
<
N
-
1
>
...
...
@@ -13,6 +16,7 @@ struct rank<0>
{
};
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/raw_data.hpp
View file @
ee80cee9
...
...
@@ -4,8 +4,10 @@
#include <migraph/tensor_view.hpp>
#include <migraph/requires.hpp>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
struct
raw_data_base
{
...
...
@@ -203,6 +205,7 @@ auto visit_all(T&& x, Ts&&... xs)
};
}
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/reflect.hpp
View file @
ee80cee9
...
...
@@ -3,9 +3,11 @@
#include <migraph/functional.hpp>
#include <migraph/rank.hpp>
#include <migraph/config.hpp>
#include <functional>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
namespace
detail
{
...
...
@@ -45,6 +47,7 @@ void reflect_each(T& x, F f)
});
}
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/requires.hpp
View file @
ee80cee9
...
...
@@ -2,8 +2,10 @@
#define MIGRAPH_GUARD_MIGRAPHLIB_REQUIRES_HPP
#include <type_traits>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
template
<
bool
...
Bs
>
struct
and_
:
std
::
is_same
<
and_
<
Bs
...
>
,
and_
<
(
Bs
||
true
)...
>>
// NOLINT
...
...
@@ -44,6 +46,7 @@ struct requires_enum
#endif
#endif
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/shape.hpp
View file @
ee80cee9
...
...
@@ -9,8 +9,10 @@
#include <migraph/errors.hpp>
#include <migraph/half.hpp>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
struct
shape_impl
;
...
...
@@ -161,6 +163,7 @@ struct shape
std
::
string
type_string
()
const
;
};
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/shape_for_each.hpp
View file @
ee80cee9
...
...
@@ -2,9 +2,11 @@
#define MIGRAPH_GUARD_MIGRAPHLIB_SHAPE_FOR_EACH_HPP
#include <migraph/shape.hpp>
#include <migraph/config.hpp>
#include <algorithm>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
template
<
class
F
>
void
shape_for_each
(
const
migraph
::
shape
&
s
,
F
f
)
...
...
@@ -26,6 +28,7 @@ void shape_for_each(const migraph::shape& s, F f)
}
}
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
src/include/migraph/simplify_algebra.hpp
View file @
ee80cee9
...
...
@@ -2,8 +2,10 @@
#define MIGRAPH_GUARD_RTGLIB_SIMPLIFY_ALGEBRA_HPP
#include <string>
#include <migraph/config.hpp>
namespace
migraph
{
inline
namespace
MIGRAPH_INLINE_NS
{
struct
program
;
...
...
@@ -13,6 +15,7 @@ struct simplify_algebra
void
apply
(
program
&
p
)
const
;
};
}
// namespace MIGRAPH_INLINE_NS
}
// namespace migraph
#endif
Prev
1
2
3
4
5
6
7
8
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