Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
3d45d352
MegEngine
项目概览
MegEngine 天元
/
MegEngine
1 年多 前同步成功
通知
403
Star
4705
Fork
582
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
MegEngine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
3d45d352
编写于
9月 24, 2021
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(mgb/gopt): profiler support checking algo availability
GitOrigin-RevId: 39cad612ccb0484e5ccc38200293387a131a96d0
上级
5f15f759
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
23 addition
and
22 deletion
+23
-22
dnn/include/megdnn/common.h
dnn/include/megdnn/common.h
+2
-7
src/gopt/impl/global_layout_transform/opr_format_modifier.cpp
...gopt/impl/global_layout_transform/opr_format_modifier.cpp
+5
-10
src/gopt/impl/global_layout_transform/opr_format_modifier.h
src/gopt/impl/global_layout_transform/opr_format_modifier.h
+0
-2
src/gopt/impl/global_layout_transform/reformat_manager.cpp
src/gopt/impl/global_layout_transform/reformat_manager.cpp
+6
-3
src/gopt/include/megbrain/gopt/reformat_manager.h
src/gopt/include/megbrain/gopt/reformat_manager.h
+10
-0
未找到文件。
dnn/include/megdnn/common.h
浏览文件 @
3d45d352
...
...
@@ -32,13 +32,8 @@ namespace megdnn {
*/
template
<
class
Opr
,
typename
...
Args
>
bool
has_available_algo
(
Opr
*
opr
,
Args
&&
...
args
)
{
const
typename
Opr
::
AlgoBase
::
SizeArgs
size_args
(
opr
,
std
::
forward
<
Args
>
(
args
)...);
for
(
auto
i
:
Opr
::
algo_pack
().
all_algos
)
{
if
(
i
->
is_available
(
size_args
))
{
return
true
;
}
}
return
false
;
auto
&&
all_algos
=
opr
->
get_all_algorithms_info
(
std
::
forward
<
Args
>
(
args
)...);
return
!
all_algos
.
empty
();
}
}
// namespace megdnn
...
...
src/gopt/impl/global_layout_transform/opr_format_modifier.cpp
浏览文件 @
3d45d352
...
...
@@ -157,7 +157,6 @@ struct ConvMaker<opr::BatchConvBiasForward>
MakeConvCaller4
<
megdnn
::
BatchConvBiasForward
>
,
megdnn
::
param
::
BatchConvBias
>
{};
#if 0
#include "../../opr/impl/internal/invoke.h"
template
<
typename
Opr
>
struct
MultiAlgoOprTrait
;
...
...
@@ -202,7 +201,6 @@ INST(ConvolutionBackwardData)
INST
(
PoolingForward
)
#undef APPLY
#undef INST
#endif
}
// namespace
namespace
mgb
{
...
...
@@ -291,9 +289,7 @@ VarNode* modify_opr_format(
#undef cb
}
#if 0
bool has_available_algo(const VarNodeArray& i,
const cg::OperatorNodeBase* opr) {
bool
has_available_algo
(
const
VarNodeArray
&
i
,
const
cg
::
OperatorNodeBase
*
opr
)
{
#define cb(_Opr) \
if (opr->dyn_typeinfo() == _Opr::typeinfo()) { \
MGB_MARK_USED_VAR(MultiAlgoOprTrait<_Opr>::has_algo); \
...
...
@@ -301,13 +297,12 @@ bool has_available_algo(const VarNodeArray& i,
_.emplace_back(opr->output(0)); \
return MultiAlgoOprTrait<_Opr>::has_available_algo(_, opr); \
} else
cb(Convolution) cb(ConvBiasForward) cb(ConvolutionBackwardData)
cb(PoolingForward) {
mgb_throw(
InternalError, "invalid multi-algo operator(got:%s)",
opr->dyn_typeinfo()->name);
cb
(
Convolution
)
cb
(
ConvBiasForward
)
cb
(
ConvolutionBackwardData
)
cb
(
PoolingForward
)
{
mgb_throw
(
InternalError
,
"invalid multi-algo operator(got:%s)"
,
opr
->
dyn_typeinfo
()
->
name
);
}
}
#endif
}
// namespace intl
}
// namespace gopt
...
...
src/gopt/impl/global_layout_transform/opr_format_modifier.h
浏览文件 @
3d45d352
...
...
@@ -21,9 +21,7 @@ namespace intl {
#define FOREACH_FORMAT_AWARE_OPR(cb) \
cb(Convolution) cb(ConvBiasForward) cb(ConvolutionBackwardData) cb(PoolingForward) \
cb(WarpPerspective) cb(Resize)
#if 0
bool
has_available_algo
(
const
VarNodeArray
&
i
,
const
cg
::
OperatorNodeBase
*
opr
);
#endif
VarNode
*
modify_opr_format
(
opr
::
ConvBias
::
Param
::
Format
opr_format
,
const
VarNodeArray
&
i
,
...
...
src/gopt/impl/global_layout_transform/reformat_manager.cpp
浏览文件 @
3d45d352
...
...
@@ -43,7 +43,8 @@ static inline size_t extra_alignment(
size_t
dtype_bits
=
dt
.
is_low_bit
()
?
dt
.
low_bit
()
:
dt
.
size
(
1
)
*
8
;
size_t
extra_alignment
=
alignment_in_bits
>=
dtype_bits
?
alignment_in_bits
/
dtype_bits
:
1
;
if
(
target_formats
==
TensorFormats
::
NHWC
)
if
(
target_formats
==
TensorFormats
::
NHWC
||
target_formats
==
TensorFormats
::
KRSC
)
channel_alignment
=
extra_alignment
*
channel_alignment
/
gcd
(
channel_alignment
,
extra_alignment
);
return
channel_alignment
;
...
...
@@ -60,10 +61,12 @@ static inline std::tuple<size_t, size_t> extra_alignment(
size_t
dtype_bits
=
dt
.
is_low_bit
()
?
dt
.
low_bit
()
:
dt
.
size
(
1
)
*
8
;
size_t
extra_alignment
=
alignment_in_bits
>=
dtype_bits
?
alignment_in_bits
/
dtype_bits
:
1
;
if
(
key
.
input_format
==
TensorFormats
::
NHWC
)
if
(
key
.
input_format
==
TensorFormats
::
NHWC
||
key
.
input_format
==
TensorFormats
::
KRSC
)
input_channel_alignment
=
input_channel_alignment
*
extra_alignment
/
gcd
(
input_channel_alignment
,
extra_alignment
);
if
(
key
.
output_format
==
TensorFormats
::
NHWC
)
if
(
key
.
output_format
==
TensorFormats
::
NHWC
||
key
.
output_format
==
TensorFormats
::
KRSC
)
output_channel_alignment
=
output_channel_alignment
*
extra_alignment
/
gcd
(
output_channel_alignment
,
extra_alignment
);
return
std
::
make_tuple
(
input_channel_alignment
,
output_channel_alignment
);
...
...
src/gopt/include/megbrain/gopt/reformat_manager.h
浏览文件 @
3d45d352
...
...
@@ -62,6 +62,16 @@ enum class TensorFormats : uint32_t {
KCRS
=
24
,
///< [K, C, R, S]
GKCRS
=
25
,
///< [G, K, C, R, S]
C11RS
=
26
,
///< [C, 1, 1, R, S]
// NHWC
KRSC
=
27
,
/// < [K, R, S, C]
// NCHW32
KCRSc32
=
28
,
///<[K, C/32, R, S, C%32]
// NCHW64
KCRSc64
=
29
,
///<[K, C/64, R, S, C%64]
// CHWN4
CRSKc4
=
30
,
///< [C/4, R, S, K, C%4]
};
class
ReformatManager
:
public
NonCopyableObj
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录