Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
f3d38dda
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
5
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
f3d38dda
编写于
10月 12, 2018
作者:
S
Shan Yi
提交者:
GitHub
10月 12, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #161 from tink2123/fix_doc_typo
fix doc typo for release/1.0.0
上级
18fbfe83
1f91c7ce
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
56 addition
and
62 deletion
+56
-62
doc/fluid/advanced_usage/deploy/anakin_tutorial.md
doc/fluid/advanced_usage/deploy/anakin_tutorial.md
+35
-38
doc/fluid/advanced_usage/development/gpu_profiling_cn.rst
doc/fluid/advanced_usage/development/gpu_profiling_cn.rst
+1
-4
doc/fluid/user_guides/howto/inference/native_infer.md
doc/fluid/user_guides/howto/inference/native_infer.md
+18
-18
doc/fluid/user_guides/howto/inference/paddle_tensorrt_infer.md
...luid/user_guides/howto/inference/paddle_tensorrt_infer.md
+2
-2
未找到文件。
doc/fluid/advanced_usage/deploy/anakin_tutorial.md
浏览文件 @
f3d38dda
...
...
@@ -114,67 +114,64 @@ Anakin中数据类型与基本数据类型的对应如下:
理论上,Anakin支持申明1维以上的tensor,但是对于Anakin中的Op来说,只支持NW、NHW、NCHW、NCHW_C4这四种LayOut,其中NCHW是默认的LayOuteType,NCHW_C4是专门针对于int8这种数据类型的。
例子
**例子:**
下面的代码将展示如何使用tensor, 我们建议先看看这些示例。
下面的代码将展示如何使用tensor, 我们建议先看看这些示例。
要想获得更多关于tensor的信息, 请参考 *soure_path/core/tensor.h*
要想获得更多关于tensor的信息, 请参考
*soure_path/core/tensor.h*
>
1. 使用shape对象初始化tensor
1.
使用shape对象初始化tensor
```c
++
//create a null tensor. A null tensor holds for nothing.
//tensor's buffer is resident at CPU and its datatype is AK_FLOAT.
//tensor's Layout is NCHW(default)
Tensor<X86, AK_FLOAT> mytensor;
```c
pp
//create a null tensor. A null tensor holds for nothing.
//tensor's buffer is resident at CPU and its datatype is AK_FLOAT.
//tensor's Layout is NCHW(default)
Tensor<X86, AK_FLOAT> mytensor;
//1. using shape object to create a tensor.
Shape shape1(NUM); //1-D shape. NUM is the number of dimention.
Tensor<X86, AK_FLOAT, W> mytensor1(shape1); //1-D tensor.
//1. using shape object to create a tensor.
Shape shape1(NUM); //1-D shape. NUM is the number of dimention.
Tensor<X86, AK_FLOAT, W> mytensor1(shape1); //1-D tensor.
// A 4-D shape
Shape shape2(N, C, H, W); // batch x channel x height x width
// A 4-D shape
Shape shape2(N, C, H, W); // batch x channel x height x width
```
>
`注意:Shape的维度必须和tensor的`[LayoutType](#layout)`相同,比如Shape(N,C,H,W), 那么Tensor的 LayoutType必须是NCHW,否则会出错。如下列代码所示`
`注意:Shape的维度必须和tensor的`[LayoutType](#layout)`相同,比如Shape(N,C,H,W), 那么Tensor的 LayoutType必须是NCHW,否则会出错。如下列代码所示`
```c++
// A 4-D tensor.
Tensor<X86, AK_FLOAT> mytensor2(shape2); //right
//A 4-D tensor which is resident at GPU and its datatype is AK_INT8
Tensor<NV, AK_INT8> mytensor3(shape2); //right
// A 4-D tensor.
Tensor<X86, AK_FLOAT> mytensor2(shape2); //right
Tensor<X86, AK_FLOAT, NHW> mytensor4(shape2); //wrong!! shape's dimetion must be equal to tensor's Layout.
Tensor<NV, AK_FLOAT, NCHW_C4> mytensor5(shape2); //wrong!!!!
//A 4-D tensor which is resident at GPU and its datatype is AK_INT8
Tensor<NV, AK_INT8> mytensor3(shape2); //right
Tensor<X86, AK_FLOAT, NHW> mytensor4(shape2); //wrong!! shape's dimetion must be equal to tensor's Layout.
Tensor<NV, AK_FLOAT, NCHW_C4> mytensor5(shape2); //wrong!!!!
```
>
2. 使用现有的数据和shape初始化tensor
2.
使用现有的数据和shape初始化tensor
```c++
/**
* A construtor of Tensor.
* data_ptr is a pointer to any data type of data
* TargetType is type of a platform [Anakin TargetType]
* id : device id
* shape: a Anakin shape
*/
Tensor(Dtype* data_ptr, TargetType_t target, int id, Shape shape);
/**
* A construtor of Tensor.
* data_ptr is a pointer to any data type of data
* TargetType is type of a platform [Anakin TargetType]
* id : device id
* shape: a Anakin shape
*/
Tensor(Dtype* data_ptr, TargetType_t target, int id, Shape shape);
//using existing data feed to a tensor
Tensor<X86, AK_FLOAT> mytensor(data_ptr, TargetType, device_id, shape); //shape must has dimention (N, C, H, W).
//using existing data feed to a tensor
Tensor<X86, AK_FLOAT> mytensor(data_ptr, TargetType, device_id, shape); //shape must has dimention (N, C, H, W).
```
>
3. 使用tensor初始化tensor
3.
使用tensor初始化tensor
```c++
Tensor<NV, AK_FLOAT> tensor(exist_tensor);
Tensor<NV, AK_FLOAT> tensor(exist_tensor);
```
>
提示: 你可以用` typedef Tensor<X86, AK_FLOAT> Tensor4d_X86 `方便定义tensor
>
提示: 你可以用` typedef Tensor<X86, AK_FLOAT> Tensor4d_X86 `方便定义tensor
#### 填充tensor数据区
...
...
doc/fluid/advanced_usage/development/gpu_profiling_cn.rst
浏览文件 @
f3d38dda
...
...
@@ -63,10 +63,7 @@ above profilers.
上述的代码片段包含了两种方法,您可以任意使用一个或两个来对感兴趣的代码段做性能分析。
1. :code:`REGISTER_TIMER_INFO` 是一个内置的定时器封装,可以用来计算CPU函数或cuda内核的时间消耗。
2. :code:`REGISTER_GPU_PROFILER` is a general purpose wrapper object of :code:`cudaProfilerStart` and :code:`cudaProfilerStop` to avoid
program crashes when CPU version of PaddlePaddle invokes them.
2. :code:`REGISTER_GPU_PROFILER` 是 :code:`cudaProfilerStart` 和 :code:`cudaProfilerStop` 的通用包装对象,避免当CPU版本的PaddlePaddle调用它们时程序崩溃。
3. :code:`REGISTER_GPU_PROFILER` 是一个封装对象,封装了 :code:`cudaProfilerStart` 和 :code:`cudaProfileStop` 两个操作;同时其内部实现可以避免纯CPU版本PaddlePaddle在执行本语句时发生崩溃。
您会在接下来的部分中获得更多的细节介绍。
...
...
doc/fluid/user_guides/howto/inference/native_infer.md
浏览文件 @
f3d38dda
...
...
@@ -75,26 +75,26 @@ CHECK(predictor->Run(slots, &outputs));
`PaddleBuf`
在内存管理方面有两种模式:
1.
自动分配和管理内存
```
c++
int
some_size
=
1024
;
PaddleTensor
tensor
;
tensor
.
data
.
Resize
(
some_size
);
```
```
c++
int
some_size
=
1024
;
PaddleTensor
tensor
;
tensor
.
data
.
Resize
(
some_size
);
```
2.
外部内存传入
```
c++
int
some_size
=
1024
;
// 用户外部分配内存并保证 PaddleTensor 使用过程中,内存一直可用
void
*
memory
=
new
char
[
some_size
];
tensor
.
data
.
Reset
(
memory
,
some_size
);
// ...
// 用户最后需要自行删除内存以避免内存泄漏
delete
[]
memory
;
```
```
c++
int
some_size
=
1024
;
// 用户外部分配内存并保证 PaddleTensor 使用过程中,内存一直可用
void
*
memory
=
new
char
[
some_size
];
tensor
.
data
.
Reset
(
memory
,
some_size
);
// ...
// 用户最后需要自行删除内存以避免内存泄漏
delete
[]
memory
;
```
两种模式中,第一种比较方便;第二种则可以严格控制内存的管理,便于与
`tcmalloc`
等库的集成。
...
...
doc/fluid/user_guides/howto/inference/paddle_tensorrt_infer.md
浏览文件 @
f3d38dda
...
...
@@ -113,12 +113,12 @@ int main() {
**原始网络**
<p
align=
"center"
>
<img
src=
"https://raw.githubusercontent.com/NHZlX/FluidDoc/add_trt_doc/doc/fluid/user_guides/howto/inference/image/model_graph_original.png"
width=
800
>
<img
src=
"https://raw.githubusercontent.com/NHZlX/FluidDoc/add_trt_doc/doc/fluid/user_guides/howto/inference/image/model_graph_original.png"
width=
"600"
>
</p>
**转换的网络**
<p
align=
"center"
>
<img
src=
"https://raw.githubusercontent.com/NHZlX/FluidDoc/add_trt_doc/doc/fluid/user_guides/howto/inference/image/model_graph_trt.png"
width=
800
>
<img
src=
"https://raw.githubusercontent.com/NHZlX/FluidDoc/add_trt_doc/doc/fluid/user_guides/howto/inference/image/model_graph_trt.png"
width=
"600"
>
</p>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录