From 873cb9bcc71e8bcc089e50186a30e0cc35f06665 Mon Sep 17 00:00:00 2001 From: Thuan Nguyen Date: Tue, 20 Mar 2018 12:10:42 -0700 Subject: [PATCH] Create select_op design document (#9139) * Create select_op design document * Fix pre-commit issues * Update select op as per varun's comments --- .../concurrent/images/select_op_workflow.png | Bin 0 -> 101447 bytes doc/fluid/design/concurrent/select_op.md | 265 ++++++++++++++++++ 2 files changed, 265 insertions(+) create mode 100644 doc/fluid/design/concurrent/images/select_op_workflow.png create mode 100644 doc/fluid/design/concurrent/select_op.md diff --git a/doc/fluid/design/concurrent/images/select_op_workflow.png b/doc/fluid/design/concurrent/images/select_op_workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..719ed76f9d542d6c4f20c30f27656bb53325aa85 GIT binary patch literal 101447 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�Kn-87(87yIo2v+x=e$t}=M1nL5t6s56>FFahwB5g;eFx?*h4Fik zk7;lgP2%x3vS5BvBeb82z%1mK13#Bi_`z4h)iNz+dcv^3&PEJwB%LWxqz#!dqF3KR z2e?DMN0J{h${u^%F`zfH;jl?$SDlUfppGutVr+A)L3zHdajFWs~G7ZhKJ4-EM);>j>Mcopcq$2xU@`M{@PRR&H~_lDEPm3Ux4@@k3YI%~QhK4AP@N7LA?Z#K?W1~g#kuQuvv1TCysSl(cU;MOuHW|LDkzQ_7QC>`vo_RcaA z1p*es4^do2^H=e%IbS6Lv>BpYhc%m1$2IvfC>fQd<3oQIzh$#!D^^HBlLgX1# zL7t(x-OKD{bJU|r%^G~Ue00cEAgc0ZJz@mlb zqE{b{<_XJoGqOhiqRv~RRL@0tQ7MFYt)sHW&B9s6UDq>=lonkk4~QGR|KJc zDunmnBngMEDGI#?6^nYfFUmNZAY|%YNtL@a^hQNlIng$SI)g-oy!m_aep>EwrgrS* z#*j(Cg{;S~(mYSg%nMTL8;R*LS2nd1?jxB#zDeiL1q6-U84Tt)V0dq;o6_p*7}n}7 zIB|ZsuC)Y0-F~X|)(27$S>Tl|q=e0A`Nbvl5@l!nso zeAuN#BqJ$7G7{rdi1Pp4uFxt({u)K~*=YWTUmXgx z>n+(dQUuWh>{M+)Ezk~yrH)HC1Lr-HcZxT<>zFUe0M_e7Nz_O3ayJIaji&8@>mD|L z^zW&e#i_KVC*Xk$~oIP%%lAb+9O83$!T^a*dmS+p=b z**TrWy4$sPyWc-b9UY(@k8D`wefYX#&!1MNf*L~?GZjsNJ5pWq>~r&-_sWE=D3$;T zDleK~wg+pE>%jZcg2+vNchD!6ll=O*sOT~T=s3y7rFiDjW&!&$lzvSMLbaQR)s@UH z1Hr?G2j3RnEq>NiL+RpB9O8`7DR(28Jrb2|-dD*jnwrmOUr2l47E2Y&YqAiLIrgVn zMzavbZM?bq{%~$w`8VL3W1icEp!M<2La+5#`3&$H&%H$7{Fea_^j# z``FhmLTn0MjzPI^U}lkK0jW+VlA3%YZ2mEK_&kK>O2~VpJBsE=?O$KmT+*K=K)T_x z+!HqeF~q^=Kr24|)ru&AwWQRwsH@Wo$>`tC##K7(4-|a;%3DT{8Lq6)8TSezlP>^a zfJRGKq|SA;T#4Gvl$4G}PIdT4Xs#Sywx9WRTi8E$`1#|oneORhk&~`=91f^tkrG3V z@W2fa@pz-1{Kkv#cjwcmv6s&W1KI!#sF

vzt&RNNH3?3?TyVjCtoGCY?=lOv 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 literal 0 HcmV?d00001 diff --git a/doc/fluid/design/concurrent/select_op.md b/doc/fluid/design/concurrent/select_op.md new file mode 100644 index 0000000000..52c226bc94 --- /dev/null +++ b/doc/fluid/design/concurrent/select_op.md @@ -0,0 +1,265 @@ +# select_op Design + +## Introduction + +In golang, the [**select**](https://golang.org/ref/spec#Select_statements) +statement lets a goroutine wait on multiple communication operations at the +same time. The **select** blocks until one of its cases can run, then +executes the case. If multiple cases are ready to run, then one case is +choosen at random to be executed. + +With the introduction of CSP for Paddle, we mimic this behavior by +creating a ***select_op***. + +## How to use it + +The **select_op** is available as a c++ operator. However most users +will prefer to use the much simplier Python API. + +- **fluid.Select()**: Creates a select operator and adds it to the current +block within the main program. Also creates a sub block and adds it to the +main program. This sub block is used to hold all variables and operators +used by the case statements. + +Within the select block, users can add cases by +calling **select.case** or **select.default** method. + +- **fluid.Select.case(channel_action, channel, result_variable)**: Represents +a fluid channel send/recv case. This method creates a SelectCase block +guard and adds it to the Select block. The arguments into this method tells +the select which channel operation to listen to. + +- **fluid.Select.default()**: Represents the fluid default case. This default +case is executed if none of the channel send/recv cases are available to +execute. + +**Example:** +``` +ch1 = fluid.make_channel(dtype=core.VarDesc.VarType.LOD_TENSOR) +quit_ch = fluid.make_channel(dtype=core.VarDesc.VarType.LOD_TENSOR) + +x = fill_constant(shape=[1], dtype=core.VarDesc.VarType.INT32, value=0) +y = fill_constant(shape=[1], dtype=core.VarDesc.VarType.INT32, value=1) + +while_cond = fill_constant(shape=[1], dtype=core.VarDesc.VarType.BOOL, value=True) +while_op = While(cond=while_cond) + +with while_op.block(): + with fluid.Select() as select: + with select.case(fluid.channel_send, channel, x): + # Send x, then perform Fibonacci calculation on x and y + x_tmp = fill_constant(shape=[1], dtype=core.VarDesc.VarType.INT32, value=0) + assign(input=x, output=x_tmp) + assign(input=y, output=x) + assign(elementwise_add(x=x_tmp, y=y), output=y) + with select.case(fluid.channel_recv, quit_channel, result2): + # Exit out of While loop + while_false = fill_constant(shape=[1], dtype=core.VarDesc.VarType.BOOL, value=False) + helper = layer_helper.LayerHelper('assign') + helper.append_op( + type='assign', + inputs={'X': [while_false]}, + outputs={'Out': [while_cond]}) +``` + +## How it Works + +### Program Description + +``` +blocks { + idx: 0 + ... + // Create "case_to_execute" variable + ops { + outputs { + parameter: "Out" + arguments: "fill_constant_110.tmp_0" + } + type: "fill_constant" + attrs { + name: "force_cpu" + type: BOOLEAN + b: false + } + attrs { + name: "value" + type: FLOAT + f: -1.0 + } + attrs { + name: "shape" + type: INTS + ints: 1 + } + attrs { + name: "dtype" + type: INT + i: 2 + } + } + // Create "select" operator. + // inputs: + // X: All input variables used by operators within the select block + // case_to_execute: Variable filled in by select_op when it determines + // which case to execute. + // + // outputs: + // Out: All output variables referenced by operators within select block. + // + // attrs: + // sub_block: The block id containing the select "cases" + // cases: Serialized list of all cases in the select op. + // Each case is serialized as: ',,,' + // where type is 0 for default, 1 for send, and 2 for receive. + // No channel and values are needed for default cases. + ops { + inputs { + parameter: "X" + arguments: "fill_constant_103.tmp_0" + arguments: "fill_constant_104.tmp_0" + } + inputs { + parameter: "case_to_execute" + arguments: "fill_constant_110.tmp_0" + } + outputs { + parameter: "Out" + arguments: "fill_constant_110.tmp_0" + } + type: "select" + attrs { + name: "sub_block" + type: BLOCK + block_idx: 1 + } + attrs { + name: "cases" + type: STRINGS + strings: "0,1,channel_101,fill_constant_109.tmp_0" + strings: "1,2,channel_102,fill_constant_108.tmp_0" + } + } + ... +} +``` + +The python select API will add the **select_op** to the current block. In addition, it will +iterate through all it's case statements and add any input variables required by case statements +into **X**. It will also create a temp variable called **case_to_execute**. This variable is +filled in by the select_op after it has completed processing the case statements. + +If there are no available cases to execute (ie: all cases are blocked on channel operations, and +there is no default statement), then the select_op will block the current thread. The thread will +unblock once there is a channel operation affecting one of the case statements, at which point, the +**select_op** will set the **case_to_execute** variable to the index of the case to execute. + +Finally the select_op will call executor.run on the **sub_block**. + +``` +blocks { + idx: 1 + parent_idx: 0 + ... + // Fill a tensor with the case index (ie: 0,1,2,3,ect.) + ops { + outputs { + parameter: "Out" + arguments: "fill_constant_111.tmp_0" + } + type: "fill_constant" + attrs { + name: "force_cpu" + type: BOOLEAN + b: false + } + attrs { + name: "value" + type: FLOAT + f: 0.0 + } + attrs { + name: "shape" + type: INTS + ints: 1 + } + attrs { + name: "dtype" + type: INT + i: 2 + } + } + // Create an "equal" operator to compare the case index with the "case_to_execute" + // tensor (which was filled in by the select op). + ops { + inputs { + parameter: "X" + arguments: "fill_constant_111.tmp_0" // case 0 + } + inputs { + parameter: "Y" + arguments: "fill_constant_110.tmp_0" // case_to_execute + } + outputs { + parameter: "Out" + arguments: "equal_0.tmp_0" + } + type: "equal" + attrs { + name: "axis" + type: INT + i: -1 + } + } + // Use the output of the "equal" operator as a condition for the "conditional_block". + // If the condition evaluates to true, then execute the "sub_block" (which represents + // the select case's body) + ops { + inputs { + parameter: "Params" + } + inputs { + parameter: "X" + arguments: "equal_0.tmp_0" + } + outputs { + parameter: "Out" + } + outputs { + parameter: "Scope" + arguments: "_generated_var_0" + } + type: "conditional_block" + attrs { + name: "is_scalar_condition" + type: BOOLEAN + b: true + } + attrs { + name: "sub_block" + type: BLOCK + block_idx: 4 + } + } + ... + // Repeat the above operators for each case statements inside the select body +} + +``` + +Cases are represented by a **conditional_block operator**, whose's condition is set as the output of +equal(**case_to_execute**, **case_index**). Since each case index is unique in this sub-block, +only one case will be executed. + +### select_op flow + +

+
+

+ +The select algorithm is inspired by golang's select routine. Please refer to +http://www.tapirgames.com/blog/golang-concurrent-select-implementation for more information. + +## Backward Pass + +TODO -- GitLab