Skip to content

Commit

Permalink
Merge pull request PaddlePaddle#161 from tink2123/fix_doc_typo
Browse files Browse the repository at this point in the history
fix doc typo for release/1.0.0
  • Loading branch information
shanyi15 committed Oct 12, 2018
2 parents 18fbfe8 + 1f91c7c commit f3d38dd
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 62 deletions.
73 changes: 35 additions & 38 deletions doc/fluid/advanced_usage/deploy/anakin_tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -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;
```cpp
//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数据区

Expand Down
5 changes: 1 addition & 4 deletions doc/fluid/advanced_usage/development/gpu_profiling_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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在执行本语句时发生崩溃。

您会在接下来的部分中获得更多的细节介绍。
Expand Down
36 changes: 18 additions & 18 deletions doc/fluid/user_guides/howto/inference/native_infer.md
Original file line number Diff line number Diff line change
Expand Up @@ -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` 等库的集成。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down

0 comments on commit f3d38dd

Please sign in to comment.