Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
674bd839
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
674bd839
编写于
5月 14, 2018
作者:
Y
Yan Chunwei
提交者:
GitHub
5月 14, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
OpConverter change BlockDesc to proto::BlockDesc (#10623)
上级
de81ccb5
变更
7
显示空白变更内容
内联
并排
Showing
7 changed file
with
21 addition
and
16 deletion
+21
-16
paddle/fluid/inference/tensorrt/convert/CMakeLists.txt
paddle/fluid/inference/tensorrt/convert/CMakeLists.txt
+1
-1
paddle/fluid/inference/tensorrt/convert/activation_op.cc
paddle/fluid/inference/tensorrt/convert/activation_op.cc
+6
-3
paddle/fluid/inference/tensorrt/convert/conv2d_op.cc
paddle/fluid/inference/tensorrt/convert/conv2d_op.cc
+1
-1
paddle/fluid/inference/tensorrt/convert/mul_op.cc
paddle/fluid/inference/tensorrt/convert/mul_op.cc
+1
-1
paddle/fluid/inference/tensorrt/convert/op_converter.h
paddle/fluid/inference/tensorrt/convert/op_converter.h
+9
-7
paddle/fluid/inference/tensorrt/convert/test_activation_op.cc
...le/fluid/inference/tensorrt/convert/test_activation_op.cc
+2
-2
paddle/fluid/inference/tensorrt/convert/test_op_converter.cc
paddle/fluid/inference/tensorrt/convert/test_op_converter.cc
+1
-1
未找到文件。
paddle/fluid/inference/tensorrt/convert/CMakeLists.txt
浏览文件 @
674bd839
nv_test
(
test_op_converter SRCS test_op_converter.cc mul_op.cc conv2d_op.cc DEPS
${
FLUID_CORE_MODULES
}
)
nv_test
(
test_op_converter SRCS test_op_converter.cc mul_op.cc conv2d_op.cc
op_converter.h
DEPS
${
FLUID_CORE_MODULES
}
)
nv_test
(
test_trt_activation_op SRCS test_activation_op.cc activation_op.cc
nv_test
(
test_trt_activation_op SRCS test_activation_op.cc activation_op.cc
DEPS
${
FLUID_CORE_MODULES
}
activation_op tensorrt_engine
)
DEPS
${
FLUID_CORE_MODULES
}
activation_op tensorrt_engine
)
nv_test
(
test_io_converter SRCS test_io_converter.cc io_converter.cc DEPS dynload_cuda dynamic_loader lod_tensor
)
nv_test
(
test_io_converter SRCS test_io_converter.cc io_converter.cc DEPS dynload_cuda dynamic_loader lod_tensor
)
paddle/fluid/inference/tensorrt/convert/activation_op.cc
浏览文件 @
674bd839
...
@@ -21,15 +21,18 @@ namespace tensorrt {
...
@@ -21,15 +21,18 @@ namespace tensorrt {
class
ReluOpConverter
:
public
OpConverter
{
class
ReluOpConverter
:
public
OpConverter
{
public:
public:
ReluOpConverter
()
{}
ReluOpConverter
()
{}
void
operator
()(
const
framework
::
OpDesc
&
op
)
override
{
void
operator
()(
const
framework
::
proto
::
OpDesc
&
op
)
override
{
// Here the two nullptr looks strange, that's because the
// framework::OpDesc's constructor is strange.
framework
::
OpDesc
op_desc
(
op
,
nullptr
,
nullptr
);
LOG
(
INFO
)
<<
"convert a fluid relu op to tensorrt activation layer whose "
LOG
(
INFO
)
<<
"convert a fluid relu op to tensorrt activation layer whose "
"type is Relu"
;
"type is Relu"
;
const
nvinfer1
::
ITensor
*
input_tensor
=
const
nvinfer1
::
ITensor
*
input_tensor
=
engine_
->
GetITensor
(
op
.
Input
(
"X"
)[
0
]);
engine_
->
GetITensor
(
op
_desc
.
Input
(
"X"
)[
0
]);
nvinfer1
::
IActivationLayer
*
layer
=
TRT_ENGINE_ADD_LAYER
(
nvinfer1
::
IActivationLayer
*
layer
=
TRT_ENGINE_ADD_LAYER
(
engine_
,
Activation
,
*
const_cast
<
nvinfer1
::
ITensor
*>
(
input_tensor
),
engine_
,
Activation
,
*
const_cast
<
nvinfer1
::
ITensor
*>
(
input_tensor
),
nvinfer1
::
ActivationType
::
kRELU
);
nvinfer1
::
ActivationType
::
kRELU
);
engine_
->
SetITensor
(
op
.
Output
(
"Out"
)[
0
],
layer
->
getOutput
(
0
));
engine_
->
SetITensor
(
op
_desc
.
Output
(
"Out"
)[
0
],
layer
->
getOutput
(
0
));
}
}
};
};
...
...
paddle/fluid/inference/tensorrt/convert/conv2d_op.cc
浏览文件 @
674bd839
...
@@ -21,7 +21,7 @@ namespace tensorrt {
...
@@ -21,7 +21,7 @@ namespace tensorrt {
class
Conv2dOpConverter
:
public
OpConverter
{
class
Conv2dOpConverter
:
public
OpConverter
{
public:
public:
Conv2dOpConverter
()
{}
Conv2dOpConverter
()
{}
void
operator
()(
const
framework
::
OpDesc
&
op
)
override
{
void
operator
()(
const
framework
::
proto
::
OpDesc
&
op
)
override
{
LOG
(
INFO
)
LOG
(
INFO
)
<<
"convert a fluid conv2d op to tensorrt conv layer without bias"
;
<<
"convert a fluid conv2d op to tensorrt conv layer without bias"
;
}
}
...
...
paddle/fluid/inference/tensorrt/convert/mul_op.cc
浏览文件 @
674bd839
...
@@ -21,7 +21,7 @@ namespace tensorrt {
...
@@ -21,7 +21,7 @@ namespace tensorrt {
class
MulOpConverter
:
public
OpConverter
{
class
MulOpConverter
:
public
OpConverter
{
public:
public:
MulOpConverter
()
{}
MulOpConverter
()
{}
void
operator
()(
const
framework
::
OpDesc
&
op
)
override
{
void
operator
()(
const
framework
::
proto
::
OpDesc
&
op
)
override
{
LOG
(
INFO
)
<<
"convert a fluid mul op to tensorrt fc layer without bias"
;
LOG
(
INFO
)
<<
"convert a fluid mul op to tensorrt fc layer without bias"
;
}
}
};
};
...
...
paddle/fluid/inference/tensorrt/convert/op_converter.h
浏览文件 @
674bd839
...
@@ -31,10 +31,10 @@ namespace tensorrt {
...
@@ -31,10 +31,10 @@ namespace tensorrt {
class
OpConverter
{
class
OpConverter
{
public:
public:
OpConverter
()
{}
OpConverter
()
{}
virtual
void
operator
()(
const
framework
::
OpDesc
&
op
)
{}
virtual
void
operator
()(
const
framework
::
proto
::
OpDesc
&
op
)
{}
void
Run
(
const
framework
::
OpDesc
&
op
,
TensorRTEngine
*
engine
)
{
void
Run
(
const
framework
::
proto
::
OpDesc
&
op
,
TensorRTEngine
*
engine
)
{
std
::
string
type
=
op
.
T
ype
();
std
::
string
type
=
op
.
t
ype
();
auto
*
it
=
Registry
<
OpConverter
>::
Lookup
(
type
);
auto
*
it
=
Registry
<
OpConverter
>::
Lookup
(
type
);
PADDLE_ENFORCE_NOT_NULL
(
it
,
"no OpConverter for optype [%s]"
,
type
);
PADDLE_ENFORCE_NOT_NULL
(
it
,
"no OpConverter for optype [%s]"
,
type
);
it
->
SetEngine
(
engine
);
it
->
SetEngine
(
engine
);
...
@@ -42,14 +42,16 @@ class OpConverter {
...
@@ -42,14 +42,16 @@ class OpConverter {
}
}
// convert fluid op to tensorrt layer
// convert fluid op to tensorrt layer
void
ConvertOp
(
const
framework
::
OpDesc
&
op
,
TensorRTEngine
*
engine
)
{
void
ConvertOp
(
const
framework
::
proto
::
OpDesc
&
op
,
TensorRTEngine
*
engine
)
{
OpConverter
::
Run
(
op
,
engine
);
OpConverter
::
Run
(
op
,
engine
);
}
}
// convert fluid block to tensorrt network
// convert fluid block to tensorrt network
void
ConvertBlock
(
const
framework
::
BlockDesc
&
block
,
TensorRTEngine
*
engine
)
{
void
ConvertBlock
(
const
framework
::
proto
::
BlockDesc
&
block
,
for
(
auto
op
:
block
.
AllOps
())
{
TensorRTEngine
*
engine
)
{
OpConverter
::
Run
(
*
op
,
engine
);
for
(
size_t
i
=
0
;
i
<
block
.
ops_size
();
i
++
)
{
const
auto
&
op
=
block
.
ops
(
i
);
OpConverter
::
Run
(
op
,
engine
);
}
}
}
}
...
...
paddle/fluid/inference/tensorrt/convert/test_activation_op.cc
浏览文件 @
674bd839
...
@@ -49,7 +49,7 @@ void Compare(float input, float expect) {
...
@@ -49,7 +49,7 @@ void Compare(float input, float expect) {
op_desc
.
SetInput
(
"X"
,
{
"X"
});
op_desc
.
SetInput
(
"X"
,
{
"X"
});
op_desc
.
SetOutput
(
"Out"
,
{
"Out"
});
op_desc
.
SetOutput
(
"Out"
,
{
"Out"
});
auto
relu_op
=
framework
::
OpRegistry
::
CreateOp
(
op_desc
);
auto
relu_op
=
framework
::
OpRegistry
::
CreateOp
(
*
op_desc
.
Proto
()
);
// run fluid op
// run fluid op
relu_op
->
Run
(
scope
,
place
);
relu_op
->
Run
(
scope
,
place
);
...
@@ -65,7 +65,7 @@ void Compare(float input, float expect) {
...
@@ -65,7 +65,7 @@ void Compare(float input, float expect) {
nvinfer1
::
DimsCHW
{
1
,
1
,
1
});
nvinfer1
::
DimsCHW
{
1
,
1
,
1
});
OpConverter
op_converter
;
OpConverter
op_converter
;
op_converter
.
ConvertOp
(
op_desc
,
engine
);
op_converter
.
ConvertOp
(
*
op_desc
.
Proto
()
,
engine
);
engine
->
DeclareOutput
(
"Out"
);
engine
->
DeclareOutput
(
"Out"
);
engine
->
FreezeNetwork
();
engine
->
FreezeNetwork
();
...
...
paddle/fluid/inference/tensorrt/convert/test_op_converter.cc
浏览文件 @
674bd839
...
@@ -29,7 +29,7 @@ TEST(OpConverter, ConvertBlock) {
...
@@ -29,7 +29,7 @@ TEST(OpConverter, ConvertBlock) {
conv2d_op
->
SetType
(
"conv2d"
);
conv2d_op
->
SetType
(
"conv2d"
);
OpConverter
converter
;
OpConverter
converter
;
converter
.
ConvertBlock
(
*
block
,
nullptr
/*TensorRTEngine*/
);
converter
.
ConvertBlock
(
*
block
->
Proto
()
,
nullptr
/*TensorRTEngine*/
);
}
}
}
// namespace tensorrt
}
// namespace tensorrt
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录