Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
tic
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wenyuanbo
tic
Commits
d4269913
Commit
d4269913
authored
Feb 20, 2018
by
masahi
Committed by
Tianqi Chen
Feb 19, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add missing inline (#910)
parent
2a1e1607
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
21 deletions
+21
-21
topi/include/topi/reduction.h
+21
-21
No files found.
topi/include/topi/reduction.h
View file @
d4269913
...
@@ -35,7 +35,7 @@ using FCommReduce = std::function<
...
@@ -35,7 +35,7 @@ using FCommReduce = std::function<
* If any input element is negative, it will be treated as an offset from the
* If any input element is negative, it will be treated as an offset from the
* last dimension (same as python indexing rules).
* last dimension (same as python indexing rules).
*/
*/
std
::
vector
<
int
>
GetRealAxis
(
int
ndim
,
const
std
::
vector
<
int
>&
axis
)
{
inline
std
::
vector
<
int
>
GetRealAxis
(
int
ndim
,
const
std
::
vector
<
int
>&
axis
)
{
std
::
vector
<
int
>
real_axis
;
std
::
vector
<
int
>
real_axis
;
if
(
axis
.
size
()
==
0
)
{
if
(
axis
.
size
()
==
0
)
{
for
(
int
i
=
0
;
i
<
ndim
;
++
i
)
{
for
(
int
i
=
0
;
i
<
ndim
;
++
i
)
{
...
@@ -59,7 +59,7 @@ std::vector<int> GetRealAxis(int ndim, const std::vector<int>& axis) {
...
@@ -59,7 +59,7 @@ std::vector<int> GetRealAxis(int ndim, const std::vector<int>& axis) {
}
}
/*! \brief Enumerate the axes for a reduce op */
/*! \brief Enumerate the axes for a reduce op */
Array
<
IterVar
>
MakeReduceAxes
(
const
std
::
vector
<
int
>&
real_axis
,
const
Tensor
&
data
)
{
inline
Array
<
IterVar
>
MakeReduceAxes
(
const
std
::
vector
<
int
>&
real_axis
,
const
Tensor
&
data
)
{
Array
<
IterVar
>
reduce_axes
;
Array
<
IterVar
>
reduce_axes
;
for
(
auto
i
:
real_axis
)
{
for
(
auto
i
:
real_axis
)
{
std
::
string
name
=
"k"
+
std
::
to_string
(
i
);
std
::
string
name
=
"k"
+
std
::
to_string
(
i
);
...
@@ -70,9 +70,9 @@ Array<IterVar> MakeReduceAxes(const std::vector<int>& real_axis, const Tensor& d
...
@@ -70,9 +70,9 @@ Array<IterVar> MakeReduceAxes(const std::vector<int>& real_axis, const Tensor& d
}
}
/*! \brief Calculate the target shape for a reduce op */
/*! \brief Calculate the target shape for a reduce op */
Array
<
Expr
>
MakeReduceTargetShape
(
const
std
::
vector
<
int
>&
real_axis
,
inline
Array
<
Expr
>
MakeReduceTargetShape
(
const
std
::
vector
<
int
>&
real_axis
,
const
Tensor
&
data
,
const
Tensor
&
data
,
bool
keepdims
)
{
bool
keepdims
)
{
auto
ndim
=
data
->
shape
.
size
();
auto
ndim
=
data
->
shape
.
size
();
Array
<
Expr
>
target_shape
;
Array
<
Expr
>
target_shape
;
if
(
keepdims
)
{
if
(
keepdims
)
{
...
@@ -107,10 +107,10 @@ Array<Expr> MakeReduceTargetShape(const std::vector<int>& real_axis,
...
@@ -107,10 +107,10 @@ Array<Expr> MakeReduceTargetShape(const std::vector<int>& real_axis,
*
*
* \return The result tensor.
* \return The result tensor.
*/
*/
Tensor
CommReduce
(
const
Tensor
&
data
,
inline
Tensor
CommReduce
(
const
Tensor
&
data
,
const
Array
<
Expr
>&
axis
,
const
Array
<
Expr
>&
axis
,
FReduce
func
,
FReduce
func
,
bool
keepdims
=
false
)
{
bool
keepdims
=
false
)
{
auto
ndim
=
data
->
shape
.
size
();
auto
ndim
=
data
->
shape
.
size
();
CHECK_NE
(
ndim
,
0
)
<<
"Cannot reduce a 0 dim Tensor"
;
CHECK_NE
(
ndim
,
0
)
<<
"Cannot reduce a 0 dim Tensor"
;
auto
axis_val
=
detail
::
GetConstIntValues
(
axis
,
"axis"
);
auto
axis_val
=
detail
::
GetConstIntValues
(
axis
,
"axis"
);
...
@@ -159,10 +159,10 @@ Tensor CommReduce(const Tensor& data,
...
@@ -159,10 +159,10 @@ Tensor CommReduce(const Tensor& data,
*
*
* \return The result tensor.
* \return The result tensor.
*/
*/
Tensor
CommReduceIdx
(
const
Tensor
&
data
,
inline
Tensor
CommReduceIdx
(
const
Tensor
&
data
,
const
Array
<
Expr
>&
axis
,
const
Array
<
Expr
>&
axis
,
FCommReduce
func
,
FCommReduce
func
,
bool
keepdims
=
false
)
{
bool
keepdims
=
false
)
{
auto
ndim
=
data
->
shape
.
size
();
auto
ndim
=
data
->
shape
.
size
();
CHECK_NE
(
ndim
,
0
)
<<
"Cannot reduce a 0 dim Tensor"
;
CHECK_NE
(
ndim
,
0
)
<<
"Cannot reduce a 0 dim Tensor"
;
auto
axis_val
=
detail
::
GetConstIntValues
(
axis
,
"axis"
);
auto
axis_val
=
detail
::
GetConstIntValues
(
axis
,
"axis"
);
...
@@ -227,9 +227,9 @@ using FIdentity = std::function<Array<Expr>(std::vector<Type> types)>;
...
@@ -227,9 +227,9 @@ using FIdentity = std::function<Array<Expr>(std::vector<Type> types)>;
*
*
* \return A reducer function which creates a reduce expression over an axis.
* \return A reducer function which creates a reduce expression over an axis.
*/
*/
FCommReduce
MakeCommReducer
(
FCombine
fcombine
,
inline
FCommReduce
MakeCommReducer
(
FCombine
fcombine
,
FIdentity
fidentity
,
FIdentity
fidentity
,
std
::
string
name
=
"reduce"
)
{
std
::
string
name
=
"reduce"
)
{
return
[
fcombine
,
fidentity
,
&
name
]
return
[
fcombine
,
fidentity
,
&
name
]
(
Array
<
Expr
>
exprs
,
const
Array
<
IterVar
>&
axis
,
Expr
*
condition
)
{
(
Array
<
Expr
>
exprs
,
const
Array
<
IterVar
>&
axis
,
Expr
*
condition
)
{
Array
<
Var
>
lhs
,
rhs
;
Array
<
Var
>
lhs
,
rhs
;
...
@@ -277,7 +277,7 @@ inline Expr MaxOp(Expr source, Array<IterVar> axis) {
...
@@ -277,7 +277,7 @@ inline Expr MaxOp(Expr source, Array<IterVar> axis) {
*
*
* \return A Tensor whose op member is the sum operation
* \return A Tensor whose op member is the sum operation
*/
*/
Tensor
sum
(
const
Tensor
&
data
,
Array
<
Expr
>
axis
,
bool
keepdims
=
false
)
{
inline
Tensor
sum
(
const
Tensor
&
data
,
Array
<
Expr
>
axis
,
bool
keepdims
=
false
)
{
return
CommReduce
(
data
,
axis
,
tvm
::
sum
,
keepdims
);
return
CommReduce
(
data
,
axis
,
tvm
::
sum
,
keepdims
);
}
}
...
@@ -294,7 +294,7 @@ Tensor sum(const Tensor& data, Array<Expr> axis, bool keepdims = false) {
...
@@ -294,7 +294,7 @@ Tensor sum(const Tensor& data, Array<Expr> axis, bool keepdims = false) {
*
*
* \return A Tensor whose op member is the min operation
* \return A Tensor whose op member is the min operation
*/
*/
Tensor
min
(
const
Tensor
&
data
,
Array
<
Expr
>
axis
,
bool
keepdims
=
false
)
{
inline
Tensor
min
(
const
Tensor
&
data
,
Array
<
Expr
>
axis
,
bool
keepdims
=
false
)
{
return
CommReduce
(
data
,
axis
,
MinOp
,
keepdims
);
return
CommReduce
(
data
,
axis
,
MinOp
,
keepdims
);
}
}
...
@@ -311,7 +311,7 @@ Tensor min(const Tensor& data, Array<Expr> axis, bool keepdims = false) {
...
@@ -311,7 +311,7 @@ Tensor min(const Tensor& data, Array<Expr> axis, bool keepdims = false) {
*
*
* \return A Tensor whose op member is the max operation
* \return A Tensor whose op member is the max operation
*/
*/
Tensor
max
(
const
Tensor
&
data
,
Array
<
Expr
>
axis
,
bool
keepdims
=
false
)
{
// NOLINT(*)
inline
Tensor
max
(
const
Tensor
&
data
,
Array
<
Expr
>
axis
,
bool
keepdims
=
false
)
{
// NOLINT(*)
return
CommReduce
(
data
,
axis
,
MaxOp
,
keepdims
);
return
CommReduce
(
data
,
axis
,
MaxOp
,
keepdims
);
}
}
...
@@ -328,7 +328,7 @@ Tensor max(const Tensor& data, Array<Expr> axis, bool keepdims = false) { // NO
...
@@ -328,7 +328,7 @@ Tensor max(const Tensor& data, Array<Expr> axis, bool keepdims = false) { // NO
*
*
* \return A Tensor whose op member is the argmin operation
* \return A Tensor whose op member is the argmin operation
*/
*/
Tensor
argmin
(
const
Tensor
&
data
,
Array
<
Expr
>
axis
,
bool
keepdims
=
false
)
{
inline
Tensor
argmin
(
const
Tensor
&
data
,
Array
<
Expr
>
axis
,
bool
keepdims
=
false
)
{
auto
fcombine
=
[](
Array
<
Var
>
lhs
,
Array
<
Var
>
rhs
)
{
auto
fcombine
=
[](
Array
<
Var
>
lhs
,
Array
<
Var
>
rhs
)
{
Array
<
Expr
>
result
;
Array
<
Expr
>
result
;
result
.
push_back
(
tvm
::
select
(
lhs
[
1
]
<=
rhs
[
1
],
lhs
[
0
],
rhs
[
0
]));
// idx
result
.
push_back
(
tvm
::
select
(
lhs
[
1
]
<=
rhs
[
1
],
lhs
[
0
],
rhs
[
0
]));
// idx
...
@@ -358,7 +358,7 @@ Tensor argmin(const Tensor& data, Array<Expr> axis, bool keepdims = false) {
...
@@ -358,7 +358,7 @@ Tensor argmin(const Tensor& data, Array<Expr> axis, bool keepdims = false) {
*
*
* \return A Tensor whose op member is the argmax operation
* \return A Tensor whose op member is the argmax operation
*/
*/
Tensor
argmax
(
const
Tensor
&
data
,
Array
<
Expr
>
axis
,
bool
keepdims
=
false
)
{
inline
Tensor
argmax
(
const
Tensor
&
data
,
Array
<
Expr
>
axis
,
bool
keepdims
=
false
)
{
auto
fcombine
=
[](
Array
<
Var
>
lhs
,
Array
<
Var
>
rhs
)
{
auto
fcombine
=
[](
Array
<
Var
>
lhs
,
Array
<
Var
>
rhs
)
{
Array
<
Expr
>
result
;
Array
<
Expr
>
result
;
result
.
push_back
(
tvm
::
select
(
lhs
[
1
]
>=
rhs
[
1
],
lhs
[
0
],
rhs
[
0
]));
// idx
result
.
push_back
(
tvm
::
select
(
lhs
[
1
]
>=
rhs
[
1
],
lhs
[
0
],
rhs
[
0
]));
// idx
...
...
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