Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
magicwindyyd
mindspore
提交
39e1fa09
M
mindspore
项目概览
magicwindyyd
/
mindspore
与 Fork 源项目一致
Fork自
MindSpore / mindspore
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mindspore
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
39e1fa09
编写于
8月 18, 2020
作者:
S
sunsuodong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor_kernel_creator
上级
f912b14b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
16 addition
and
47 deletion
+16
-47
mindspore/lite/src/kernel_registry.cc
mindspore/lite/src/kernel_registry.cc
+4
-40
mindspore/lite/src/kernel_registry.h
mindspore/lite/src/kernel_registry.h
+12
-7
未找到文件。
mindspore/lite/src/kernel_registry.cc
浏览文件 @
39e1fa09
...
...
@@ -28,30 +28,8 @@ using mindspore::kernel::kCPU;
using
mindspore
::
kernel
::
KERNEL_ARCH
;
using
mindspore
::
kernel
::
KernelCreator
;
using
mindspore
::
kernel
::
KernelKey
;
using
mindspore
::
kernel
::
kKernelArch_MAX
;
using
mindspore
::
kernel
::
kKernelArch_MIN
;
using
mindspore
::
schema
::
PrimitiveType_MAX
;
using
mindspore
::
schema
::
PrimitiveType_MIN
;
namespace
mindspore
::
lite
{
KernelRegistry
::
KernelRegistry
()
{
device_type_length_
=
kKernelArch_MAX
-
kKernelArch_MIN
+
1
;
data_type_length_
=
kNumberTypeEnd
-
kNumberTypeBegin
+
1
;
op_type_length_
=
PrimitiveType_MAX
-
PrimitiveType_MIN
+
1
;
// malloc an array contain creator functions of kernel
array_size_
=
device_type_length_
*
data_type_length_
*
op_type_length_
;
creator_arrays_
=
(
kernel
::
KernelCreator
*
)
malloc
(
array_size_
*
sizeof
(
kernel
::
KernelCreator
));
if
(
creator_arrays_
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"malloc creator_arrays_ failed."
;
}
else
{
for
(
int
i
=
0
;
i
<
array_size_
;
++
i
)
{
creator_arrays_
[
i
]
=
nullptr
;
}
}
}
KernelRegistry
::~
KernelRegistry
()
{
FreeCreatorArray
();
}
KernelRegistry
*
KernelRegistry
::
GetInstance
()
{
static
KernelRegistry
instance
;
return
&
instance
;
...
...
@@ -69,18 +47,7 @@ int KernelRegistry::Init() {
return
RET_OK
;
}
void
KernelRegistry
::
FreeCreatorArray
()
{
if
(
creator_arrays_
!=
nullptr
)
{
free
(
creator_arrays_
);
creator_arrays_
=
nullptr
;
}
}
kernel
::
KernelCreator
KernelRegistry
::
GetCreator
(
const
KernelKey
&
desc
)
{
if
(
creator_arrays_
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"Creator func array is null."
;
return
nullptr
;
}
int
index
=
GetCreatorFuncIndex
(
desc
);
if
(
index
>=
array_size_
)
{
MS_LOG
(
ERROR
)
<<
"invalid kernel key, arch "
<<
desc
.
arch
<<
", data_type"
<<
desc
.
data_type
<<
",op type "
...
...
@@ -104,20 +71,17 @@ int KernelRegistry::GetCreatorFuncIndex(const kernel::KernelKey desc) {
}
void
KernelRegistry
::
RegKernel
(
const
KernelKey
desc
,
kernel
::
KernelCreator
creator
)
{
if
(
creator_arrays_
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"Creator func array is null."
;
int
index
=
GetCreatorFuncIndex
(
desc
);
if
(
index
>=
array_size_
)
{
MS_LOG
(
ERROR
)
<<
"invalid kernel key, arch "
<<
desc
.
arch
<<
", data_type"
<<
desc
.
data_type
<<
",op type "
<<
desc
.
type
;
return
;
}
int
index
=
GetCreatorFuncIndex
(
desc
);
creator_arrays_
[
index
]
=
creator
;
}
void
KernelRegistry
::
RegKernel
(
const
KERNEL_ARCH
arch
,
const
TypeId
data_type
,
const
schema
::
PrimitiveType
op_type
,
kernel
::
KernelCreator
creator
)
{
if
(
creator_arrays_
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"Creator func array is null."
;
return
;
}
KernelKey
desc
=
{
arch
,
data_type
,
op_type
};
int
index
=
GetCreatorFuncIndex
(
desc
);
if
(
index
>=
array_size_
)
{
...
...
mindspore/lite/src/kernel_registry.h
浏览文件 @
39e1fa09
...
...
@@ -23,11 +23,16 @@
#include "src/lite_kernel.h"
#include "schema/model_generated.h"
using
mindspore
::
kernel
::
kKernelArch_MAX
;
using
mindspore
::
kernel
::
kKernelArch_MIN
;
using
mindspore
::
schema
::
PrimitiveType_MAX
;
using
mindspore
::
schema
::
PrimitiveType_MIN
;
namespace
mindspore
::
lite
{
class
KernelRegistry
{
public:
KernelRegistry
();
virtual
~
KernelRegistry
();
KernelRegistry
()
=
default
;
virtual
~
KernelRegistry
()
=
default
;
static
KernelRegistry
*
GetInstance
();
int
Init
();
...
...
@@ -44,11 +49,11 @@ class KernelRegistry {
const
Context
*
ctx
,
const
kernel
::
KernelKey
&
key
);
protected:
kernel
::
KernelCreator
*
creator_arrays_
=
nullptr
;
s
ize_t
array_size_
;
int
device_type_length_
;
int
data_type_length_
;
int
op_type_length_
;
static
const
int
device_type_length_
{
kKernelArch_MAX
-
kKernelArch_MIN
+
1
}
;
s
tatic
const
int
data_type_length_
{
kNumberTypeEnd
-
kNumberTypeBegin
+
1
}
;
static
const
int
op_type_length_
{
PrimitiveType_MAX
-
PrimitiveType_MIN
+
1
}
;
static
const
int
array_size_
{
device_type_length_
*
data_type_length_
*
op_type_length_
}
;
kernel
::
KernelCreator
creator_arrays_
[
array_size_
]
=
{
0
}
;
};
class
KernelRegistrar
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录