8282
8383# Fluid: 系统形态
8484
85- - <span style =" background-color :#ACD6FF ;" >[ 编译器式的执行流程,区分编译时和运行时] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/fluid/design/motivation/fluid_compiler.md ) </span >
85+ - <span style =" background-color :#ACD6FF ;" >[ 编译器式的执行流程,区分编译时和运行时] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/fluid/design/motivation/fluid_compiler.md ) </span >
8686<br >
8787
8888<p align =" center " >
89- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/fluid-compiler.png " width =100% >
89+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/fluid-compiler.png " width =100% >
9090</p >
9191
9292---
125125- 在科学计算领域,计算图是一种描述计算的经典方式。下图展示了从前向计算图(蓝色)开始,通过添加反向(红色)和优化算法相关(绿色)操作,构建出整个计算图的过程:
126126-
127127<p align =" center " >
128- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/graph_construction_example_all.png " width =60% >
128+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/graph_construction_example_all.png " width =60% >
129129</p >
130130
131131
2242241 . 创建` Block ` ,依次执行` Block `
225225
226226<p align =" center " >
227- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/compile_run_time.png " width =50% ><br >
227+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/compile_run_time.png " width =50% ><br >
228228<font size =3 > Figure. 编译时运行时概览</font >
229229</p >
230230
246246 cost = fluid.layers.square_error_cost(input = y_predict, label = y)
247247 ```
248248
249- - 条件分支: [swith](https:// github.com/ PaddlePaddle/ Paddle / blob/ develop/ doc/ fluid/ design/ execution/ switch.md)、[ifelse](https:// github.com/ PaddlePaddle/ Paddle / blob/ develop/ doc/ fluid/ design/ execution/ if_else_op.md)
249+ - 条件分支: [swith](https:// github.com/ PaddlePaddle/ Fluiddoc / blob/ develop/ doc/ fluid/ design/ execution/ switch.md)、[ifelse](https:// github.com/ PaddlePaddle/ Fluiddoc / blob/ develop/ doc/ fluid/ design/ execution/ if_else_op.md)
250250
251251 ```python
252252 a = fluid.Var(10 )
330330
331331---
332332
333- ### 编译时概念 :==** [ Transpiler] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/fluid/design/motivation/fluid_compiler.md ) ** ==
333+ ### 编译时概念 :==** [ Transpiler] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/fluid/design/motivation/fluid_compiler.md ) ** ==
334334<font size =5 >
335335
3363361 . 接受一段` ProgramDesc ` 作为输入,生成一段新的` ProgramDesc `
349349### Transplier
350350
351351<p align =" center " >
352- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/transpiler.png " width =70% >
352+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/transpiler.png " width =70% >
353353</p >
354354
355355---
356356
357357### 打印 ` ProgramDesc `
358358
359359<p align =" center " >
360- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/print_fluid_program.png " width =70% >
360+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/print_fluid_program.png " width =70% >
361361</p >
362362
363363<font size =5 >
384384</thead >
385385<tbody >
386386<tr >
387- <td ><img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/program_desc1.png " width =70% ></td >
388- <td ><img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/program_desc2.png " width =70% ></td >
387+ <td ><img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/program_desc1.png " width =70% ></td >
388+ <td ><img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/program_desc2.png " width =70% ></td >
389389</tr >
390390</tbody >
391391</table >
501501<font size =4 >
502502
503503<p align =" center " >
504- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/LoDTensor.png " width =43% >
504+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/LoDTensor.png " width =43% >
505505</p >
506506
507507- 图(a)的LoD 信息
518518#### Tensor, Variable, Scope 之间的关系
519519
520520<p align =" center " >
521- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/scope_variable_tensor.png " width =40% >
521+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/scope_variable_tensor.png " width =40% >
522522</p >
523523<font size =5 >
524524
541541<tbody >
542542<tr >
543543<td ><p align =" center " >
544- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/executor.png " width =60% >
544+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/executor.png " width =60% >
545545</p ></td >
546546<td ><span style =" background-color :#B3D9D9 ;" >输入</span ><br >1. `ProgramDesc`<br >2. `Scope`<br > 3.`block_id`<br ><br ><span style =" background-color :#B3D9D9 ;" >解释执行步骤</span ><br >1. 创建所有 Variables<br > 2. 逐一创建 Operator 并运行
547547</td >
554554<font size =5 >
555555
556556<p align =" center " >
557- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/operator1.png " width =50% >
557+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/operator1.png " width =50% >
558558</p >
559559
560560- operator 无状态,Operator的核心是==Run==方法
575575<tbody >
576576<tr >
577577<td ><p align =" center " >
578- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/layer.png " width =70% >
578+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/layer.png " width =70% >
579579</p ></td >
580580<td ><p align =" center " >
581- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/operator2.png " width =73% >
581+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/operator2.png " width =73% >
582582</p ></td >
583583</tr >
584584
@@ -800,7 +800,7 @@ class GPUAllocator : public SystemAllocator {
800800 - 可以将Place类型理解为一个整数加上一个枚举型,包括:设备号 + 设备类型
801801
802802 <p align="center">
803- <img src="https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/place.png" width=40%>
803+ <img src="https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/place.png" width=40%>
804804 </p>
805805- DeviceContext
806806 - 不同的Place会对应一个相应的DeviceContext,用于组织管理与设备相关的信息
@@ -938,7 +938,7 @@ void Run(const framework::Scope &scope,
938938<font size =5 >
939939
940940<p align =" center " >
941- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/user_interface.png " width =75% >
941+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/user_interface.png " width =75% >
942942</p >
943943
944944- ` dynamicRNN ` 中的重要元素
@@ -1003,7 +1003,7 @@ void Run(const framework::Scope &scope,
10031003
10041004- 以机器翻译的RNN encoder-decoder 模型(涉及了` dynamicRNN ` 的所有设计要素)为例,下图是 RNN encoder-decoder 的原始输入:
10051005 <p align =" center " >
1006- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/raw_input.png " width =100% ><br ><font size =3 > Figure. RNN encoder-decoder 原始batch 输入数据</font >
1006+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/raw_input.png " width =100% ><br ><font size =3 > Figure. RNN encoder-decoder 原始batch 输入数据</font >
10071007 </p >
10081008
10091009- source word sequences 是encoder RNN的输出,是一个LoDTensor
@@ -1035,14 +1035,14 @@ void Run(const framework::Scope &scope,
10351035### 运行实例
10361036
10371037<p align =" center " >
1038- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/sorted_input.png " width =100% >
1038+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/sorted_input.png " width =100% >
10391039</p >
10401040
10411041---
10421042### 运行实例
10431043
10441044<p align =" center " >
1045- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/1.png " width =100% >
1045+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/1.png " width =100% >
10461046</p >
10471047
10481048<font size =5 >
@@ -1055,7 +1055,7 @@ void Run(const framework::Scope &scope,
10551055### 运行实例
10561056
10571057<p align =" center " >
1058- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/1.png " width =80% >
1058+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/1.png " width =80% >
10591059</p >
10601060
10611061<font size =5 >
@@ -1071,22 +1071,22 @@ void Run(const framework::Scope &scope,
10711071### 运行实例:batch 1 ~ 2
10721072
10731073<p align =" center " >
1074- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/2.png " width =70% ><br ><font size =4 >Figure. 第1、2个batch输入dynamicRNN的batch输入</font >
1074+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/2.png " width =70% ><br ><font size =4 >Figure. 第1、2个batch输入dynamicRNN的batch输入</font >
10751075</p >
10761076
10771077---
10781078### 运行实例:batch 3 ~ 4
10791079
10801080<p align =" center " >
1081- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/3.png " width =70% ><br ><font size =4 >Figure. 第3、4个batch输入dynamicRNN的batch输入</font >
1081+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/3.png " width =70% ><br ><font size =4 >Figure. 第3、4个batch输入dynamicRNN的batch输入</font >
10821082</p >
10831083
10841084---
10851085
10861086### 运行实例:batch 5 ~ 7
10871087
10881088<p align =" center " >
1089- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/4.png " width =70% ><br ><font size =4 >Figure. 第5、6、7个batch输入dynamicRNN的batch输入</font >
1089+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/4.png " width =70% ><br ><font size =4 >Figure. 第5、6、7个batch输入dynamicRNN的batch输入</font >
10901090</p >
10911091
10921092---
@@ -1106,12 +1106,12 @@ void Run(const framework::Scope &scope,
11061106<tr >
11071107<td >
11081108<p align =" center " >
1109- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/fluid_module_1.png " width =60% >
1109+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/fluid_module_1.png " width =60% >
11101110</p >
11111111</td >
11121112<td >
11131113<p align =" center " >
1114- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle /develop/doc/fluid/images/fluid_module_2.png " width =60% >
1114+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Fluiddoc /develop/doc/fluid/images/fluid_module_2.png " width =60% >
11151115</p >
11161116</td >
11171117</tr >
@@ -1127,32 +1127,32 @@ void Run(const framework::Scope &scope,
11271127<font size =5 >
11281128
11291129- 设计概览
1130- - 重构概览 [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/refactorization.md )
1131- - fluid [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/fluid.md )
1132- - fluid_compiler [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/fluid/design/motivation/fluid_compiler.md )
1130+ - 重构概览 [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/refactorization.md )
1131+ - fluid [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/fluid.md )
1132+ - fluid_compiler [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/fluid/design/motivation/fluid_compiler.md )
11331133- 核心概念
1134- - variable 描述 [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/var_desc.md )
1134+ - variable 描述 [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/var_desc.md )
11351135 - Tensor [ ->] ( https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/framework/tensor.md )
11361136 - LoDTensor [ ->] ( https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/framework/lod_tensor.md )
1137- - TensorArray [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/tensor_array.md )
1138- - Program [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/program.md )
1139- - Block [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/block.md )
1140- - Scope [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/scope.md )
1137+ - TensorArray [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/tensor_array.md )
1138+ - Program [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/program.md )
1139+ - Block [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/block.md )
1140+ - Scope [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/scope.md )
11411141
11421142---
11431143
11441144- 重要功能模块
1145- - backward [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/backward.md )
1146- - 内存优化 [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/memory_optimization.md )
1147- - evaluator [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/executor.md )
1148- - python API [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/python_api.md )
1149- - regularization [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/regularization.md )
1145+ - backward [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/backward.md )
1146+ - 内存优化 [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/memory_optimization.md )
1147+ - evaluator [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/executor.md )
1148+ - python API [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/python_api.md )
1149+ - regularization [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/regularization.md )
11501150
11511151- 开发指南
1152- - 支持新设硬件设备库 [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/design/support_new_device.md )
1153- - 添加新的Operator [ ->] ( https://github.com/PaddlePaddle/Paddle /blob/develop/doc/howto/dev/new_op_cn.md )
1152+ - 支持新设硬件设备库 [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/design/support_new_device.md )
1153+ - 添加新的Operator [ ->] ( https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/howto/dev/new_op_cn.md )
11541154 - 添加新的Kernel [ ->] (
1155- https://github.com/PaddlePaddle/Paddle /blob/develop/doc/howto/dev/new_op_kernel_en.md )
1155+ https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/howto/dev/new_op_kernel_en.md )
11561156
11571157</font >
11581158
@@ -1487,7 +1487,7 @@ class ClipKernel : public framework::OpKernel<T> {
14871487
14881488- 为了使` OpKernel` 的计算过程书写更加简单,并且CPU、CUDA的代码可以复用, Fluid 使用 Eigen 作为基础的矩阵运算库
14891489- Fluid对Eigen unsupported Tensor提供了一些基本的封装,可以在` Compute` 接口中直接调用
1490- - 关于在PaddlePaddle中如何使用Eigen库,请参考[使用文档](https://github.com/PaddlePaddle/Paddle /blob/develop/doc/fluid/dev/use_eigen_cn.md)。
1490+ - 关于在PaddlePaddle中如何使用Eigen库,请参考[使用文档](https://github.com/PaddlePaddle/Fluiddoc /blob/develop/doc/fluid/dev/use_eigen_cn.md)。
14911491
14921492< /font>
14931493
0 commit comments