Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
94e49fae
MegEngine
项目概览
MegEngine 天元
/
MegEngine
1 年多 前同步成功
通知
404
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看板
提交
94e49fae
编写于
10月 14, 2022
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(serilization): fix elemwise multitype compatibilty in v1.11.0
GitOrigin-RevId: 40b51d9d82aaaa52263934a289590464acf544c4
上级
0aeabd6b
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
42 addition
and
7 deletion
+42
-7
src/opr/impl/nn_int.sereg.h
src/opr/impl/nn_int.sereg.h
+1
-1
src/serialization/impl/opr_registry.cpp
src/serialization/impl/opr_registry.cpp
+6
-5
src/serialization/include/megbrain/serialization/opr_registry.h
...rialization/include/megbrain/serialization/opr_registry.h
+2
-1
src/serialization/include/megbrain/serialization/sereg.h
src/serialization/include/megbrain/serialization/sereg.h
+33
-0
未找到文件。
src/opr/impl/nn_int.sereg.h
浏览文件 @
94e49fae
...
...
@@ -72,7 +72,7 @@ struct OprLoadDumpImplV2<opr::ElemwiseMultiType, 0> {
namespace
opr
{
MGB_SEREG_OPR_CONDITION
(
ElemwiseMultiType
,
0
,
false
);
MGB_SEREG_OPR_V2
(
MGB_SEREG_OPR_V2
_HASH_WITHOUT_TAIL_0
(
ElemwiseMultiType
,
0
,
(
mgb
::
serialization
::
OprLoadDumpImplV2
<
opr
::
ElemwiseMultiType
,
0
>::
replace_opr
),
VERSION_1
,
VERSION_1
);
...
...
src/serialization/impl/opr_registry.cpp
浏览文件 @
94e49fae
...
...
@@ -64,8 +64,8 @@ const OprRegistryV2* dynamic_registry_v2() {
auto
id
=
MGB_HASH_STR
(
"dynamic"
);
OprRegistryV2
::
versioned_add
(
{
nullptr
,
id
,
{},
{},
dynamic_loader
,
{}},
CURRENT_VERSION
,
CURRENT_VERSION
);
{
nullptr
,
id
,
{},
{},
dynamic_loader
,
{}},
CURRENT_VERSION
,
CURRENT_VERSION
,
true
);
ret
=
OprRegistryV2
::
versioned_find_by_id
(
id
,
CURRENT_VERSION
);
mgb_assert
(
ret
);
return
ret
;
...
...
@@ -182,7 +182,8 @@ const OprRegistryV2* OprRegistryV2::versioned_find_by_typeinfo(
}
void
OprRegistryV2
::
versioned_add
(
const
OprRegistryV2
&
record
,
uint8_t
min_version
,
uint8_t
max_version
)
{
const
OprRegistryV2
&
record
,
uint8_t
min_version
,
uint8_t
max_version
,
bool
dynamic
)
{
mgb_assert
(
max_version
>=
min_version
);
auto
&&
sd
=
static_data
();
...
...
@@ -190,7 +191,7 @@ void OprRegistryV2::versioned_add(
uint64_t
type_id
=
id
;
//! record.type->name is nullptr when MGB_VERBOSE_TYPEINFO_NAME==0
#if MGB_VERBOSE_TYPEINFO_NAME
if
(
record
.
type
&&
record
.
type
->
name
)
{
if
(
dynamic
&&
record
.
type
&&
record
.
type
->
name
)
{
type_id
=
MGB_HASH_RUNTIME
(
std
::
string
(
record
.
type
->
name
));
}
#endif
...
...
@@ -236,7 +237,7 @@ void OprRegistry::add_using_dynamic_loader(
OprRegistryV2
::
versioned_add
(
{
type
,
dynamic_registry_v2
()
->
type_id
,
type
->
name
,
dumper
,
dynamic_registry_v2
()
->
loader
,
nullptr
},
CURRENT_VERSION
,
CURRENT_VERSION
);
CURRENT_VERSION
,
CURRENT_VERSION
,
true
);
}
#if MGB_ENABLE_DEBUG_UTIL
...
...
src/serialization/include/megbrain/serialization/opr_registry.h
浏览文件 @
94e49fae
...
...
@@ -111,7 +111,8 @@ struct OprRegistryV2 {
//! register opr load/dump to version2regmap
MGE_WIN_DECLSPEC_FUC
static
void
versioned_add
(
const
OprRegistryV2
&
record
,
uint8_t
min_version
,
uint8_t
max_version
);
const
OprRegistryV2
&
record
,
uint8_t
min_version
,
uint8_t
max_version
,
bool
dynamic
=
false
);
MGE_WIN_DECLSPEC_FUC
static
const
OprRegistryV2
*
versioned_find_by_id
(
const
size_t
id
,
uint8_t
version
);
...
...
src/serialization/include/megbrain/serialization/sereg.h
浏览文件 @
94e49fae
...
...
@@ -180,6 +180,18 @@ struct OprRegistryCaller : public OprRegistryCallerDefaultImpl<Callee> {};
_version_min, _version_max); \
} while (0)
//! in order to compatibility with MGB_SEREG_OPR_INTL_CALL_ADD, the macro use
//! the same hash with MGB_SEREG_OPR_INTL_CALL_ADD,
//! MGB_HASH_STR_WITHOUT_TAIL_0_AND_VERSION is different with MGB_HASH_STR
#define MGB_SEREG_OPR_INTL_CALL_ADD_V2_WITHOUT_TAIL_0_AND_VERSION_HASH( \
_cls, _dump, _load, _convert, _version_min, _version_max) \
do { \
::mgb::serialization::OprRegistryV2::versioned_add( \
{_cls::typeinfo(), MGB_HASH_STR_WITHOUT_TAIL_0_AND_VERSION(#_cls), \
_MGB_SEREG_OPR_NAME_FROM_CLS(_cls), _dump, _load, _convert}, \
_version_min, _version_max); \
} while (0)
/*!
* \brief register opr serialization methods
*/
...
...
@@ -223,6 +235,27 @@ struct OprRegistryCaller : public OprRegistryCallerDefaultImpl<Callee> {};
} \
MGB_SEREG_OPR_INTL_CALL_ENTRY_V2(_cls, _OprRegV2##_cls)
//! using MGB_HASH_STR_WITHOUT_TAIL_0_AND_VERSION macro to get the type id
#define MGB_SEREG_OPR_V2_HASH_WITHOUT_TAIL_0( \
_cls, _arity, _converter, _version_min, _version_max) \
namespace { \
namespace ser = ::mgb::serialization; \
struct _OprRegV2##_cls { \
using Impl = ser::OprLoadDumpImplV2<_cls, _arity>; \
static ser::OprWithOutputAccessor wrap_loader( \
ser::OprLoadContext& ctx, const mgb::cg::VarNodeArray& inputs, \
const mgb::cg::OperatorNodeConfig& config) { \
return ser::OprWithOutputAccessor(Impl::load(ctx, inputs, config)); \
} \
static void entry() { \
MGB_SEREG_OPR_INTL_CALL_ADD_V2_WITHOUT_TAIL_0_AND_VERSION_HASH( \
_cls, Impl::dump, wrap_loader, _converter, _version_min, \
_version_max); \
} \
}; \
} \
MGB_SEREG_OPR_INTL_CALL_ENTRY_V2(_cls, _OprRegV2##_cls)
//! use to check type is complete or not, midout need a complete type
template
<
class
T
,
class
=
void
>
struct
IsComplete
:
std
::
false_type
{};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录