Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
s920243400
PaddleDetection
提交
55fac551
P
PaddleDetection
项目概览
s920243400
/
PaddleDetection
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleDetection
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleDetection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
55fac551
编写于
8月 09, 2017
作者:
F
fengjiayi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refine code according to reviewer's advices
上级
e81a5f87
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
13 addition
and
6 deletion
+13
-6
paddle/framework/op_registry.h
paddle/framework/op_registry.h
+13
-6
未找到文件。
paddle/framework/op_registry.h
浏览文件 @
55fac551
...
@@ -309,6 +309,14 @@ class OpRegistry {
...
@@ -309,6 +309,14 @@ class OpRegistry {
class
Registrar
{
class
Registrar
{
public:
public:
// In our design, various kinds of classes, e.g., operators and kernels, have
// their corresponding registry and registrar. The action of registration is
// in the constructor of a global registrar variable, which, however, are not
// used in the code that calls package framework, and would be removed from
// the generated binary file by the linker. To avoid such removal, we add
// Touch to all registrar classes and make USE_OP macros to call this
// method. So, as long as the callee code calls USE_OP, the global
// registrar variable won't be removed by the linker.
void
Touch
()
{}
void
Touch
()
{}
};
};
...
@@ -332,10 +340,9 @@ template <typename PlaceType, typename KernelType>
...
@@ -332,10 +340,9 @@ template <typename PlaceType, typename KernelType>
class
OpKernelRegistrar
:
public
Registrar
{
class
OpKernelRegistrar
:
public
Registrar
{
public:
public:
explicit
OpKernelRegistrar
(
const
char
*
op_type
)
{
explicit
OpKernelRegistrar
(
const
char
*
op_type
)
{
::
paddle
::
framework
::
OperatorWithKernel
::
OpKernelKey
key
;
OperatorWithKernel
::
OpKernelKey
key
;
key
.
place_
=
PlaceType
();
key
.
place_
=
PlaceType
();
::
paddle
::
framework
::
OperatorWithKernel
::
AllOpKernels
()[
op_type
][
key
].
reset
(
OperatorWithKernel
::
AllOpKernels
()[
op_type
][
key
].
reset
(
new
KernelType
);
new
KernelType
);
}
}
};
};
...
@@ -349,7 +356,7 @@ class OpKernelRegistrar : public Registrar {
...
@@ -349,7 +356,7 @@ class OpKernelRegistrar : public Registrar {
msg)
msg)
/**
/**
* Macro to
R
egister Operator.
* Macro to
r
egister Operator.
*/
*/
#define REGISTER_OP(op_type, op_class, op_maker_class) \
#define REGISTER_OP(op_type, op_class, op_maker_class) \
STATIC_ASSERT_GLOBAL_NAMESPACE( \
STATIC_ASSERT_GLOBAL_NAMESPACE( \
...
@@ -362,7 +369,7 @@ class OpKernelRegistrar : public Registrar {
...
@@ -362,7 +369,7 @@ class OpKernelRegistrar : public Registrar {
}
}
/**
/**
* Macro to
R
egister Gradient Operator.
* Macro to
r
egister Gradient Operator.
*/
*/
#define REGISTER_GRADIENT_OP(op_type, grad_op_type, grad_op_class) \
#define REGISTER_GRADIENT_OP(op_type, grad_op_type, grad_op_class) \
STATIC_ASSERT_GLOBAL_NAMESPACE( \
STATIC_ASSERT_GLOBAL_NAMESPACE( \
...
@@ -377,7 +384,7 @@ class OpKernelRegistrar : public Registrar {
...
@@ -377,7 +384,7 @@ class OpKernelRegistrar : public Registrar {
}
}
/**
/**
* Macro to
R
egister OperatorKernel.
* Macro to
r
egister OperatorKernel.
*/
*/
#define REGISTER_OP_KERNEL(op_type, DEVICE_TYPE, place_class, ...) \
#define REGISTER_OP_KERNEL(op_type, DEVICE_TYPE, place_class, ...) \
STATIC_ASSERT_GLOBAL_NAMESPACE( \
STATIC_ASSERT_GLOBAL_NAMESPACE( \
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录