-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPaddleDygraphNewDepends.drawio
385 lines (385 loc) · 35.9 KB
/
PaddleDygraphNewDepends.drawio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
<mxfile host="app.diagrams.net" modified="2021-09-03T09:52:38.578Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36" etag="8PpqtJsWUln5rhYWzoYh" version="15.0.3" type="github">
<diagram id="ArWPOSI7bu41XnjhQvvm" name="Page-1">
<mxGraphModel dx="366" dy="769" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="lcERAHbh8Opt-ypFuVCq-1" value="FowardWrapper" style="swimlane;" parent="1" vertex="1">
<mxGeometry x="2175" y="272" width="280" height="490" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-2" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="lcERAHbh8Opt-ypFuVCq-1" source="lcERAHbh8Opt-ypFuVCq-3" target="lcERAHbh8Opt-ypFuVCq-5" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-3" value="AutoCast For Inputs" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-1" vertex="1">
<mxGeometry x="75" y="30" width="130" height="30" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-4" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="lcERAHbh8Opt-ypFuVCq-1" source="lcERAHbh8Opt-ypFuVCq-5" target="lcERAHbh8Opt-ypFuVCq-7" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-5" value="SetDeviceId" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-1" vertex="1">
<mxGeometry x="75" y="70" width="130" height="29" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-6" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="lcERAHbh8Opt-ypFuVCq-1" source="lcERAHbh8Opt-ypFuVCq-7" target="lcERAHbh8Opt-ypFuVCq-9" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-7" value="OpInfo::InferVarType" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-1" vertex="1">
<mxGeometry x="75" y="110" width="130" height="30" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-8" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="lcERAHbh8Opt-ypFuVCq-1" source="lcERAHbh8Opt-ypFuVCq-9" target="lcERAHbh8Opt-ypFuVCq-11" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-9" value="NewChooseKernel(using DataType/Place)" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-1" vertex="1">
<mxGeometry x="10" y="155" width="260" height="50" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-10" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="lcERAHbh8Opt-ypFuVCq-1" source="lcERAHbh8Opt-ypFuVCq-11" target="lcERAHbh8Opt-ypFuVCq-19" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-11" value="NewPrepareData(TransformData)" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-1" vertex="1">
<mxGeometry x="10" y="220" width="260" height="50" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-12" value="RunKernel" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-1" vertex="1">
<mxGeometry x="60" y="428" width="160" height="50" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-13" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="lcERAHbh8Opt-ypFuVCq-1" source="lcERAHbh8Opt-ypFuVCq-14" target="lcERAHbh8Opt-ypFuVCq-12" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-14" value="PrepareBackward" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-1" vertex="1">
<mxGeometry x="70" y="358" width="140" height="50" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-15" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="lcERAHbh8Opt-ypFuVCq-1" source="lcERAHbh8Opt-ypFuVCq-19" target="lcERAHbh8Opt-ypFuVCq-14" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-16" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="lcERAHbh8Opt-ypFuVCq-15" vertex="1" connectable="0">
<mxGeometry x="-0.1" y="2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-17" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="lcERAHbh8Opt-ypFuVCq-1" source="lcERAHbh8Opt-ypFuVCq-19" target="lcERAHbh8Opt-ypFuVCq-12" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="20" y="313" />
<mxPoint x="20" y="453" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-18" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="lcERAHbh8Opt-ypFuVCq-17" vertex="1" connectable="0">
<mxGeometry x="-0.784" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-19" value="RequireGrad" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" parent="lcERAHbh8Opt-ypFuVCq-1" vertex="1">
<mxGeometry x="90" y="288" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-55" value="TensorWrapper" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;" parent="1" vertex="1">
<mxGeometry x="2090" y="110" width="450" height="112" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-56" value="+ intermediate_tensor_: framework::Tensor" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-55" vertex="1">
<mxGeometry y="26" width="450" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-60" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-55" vertex="1">
<mxGeometry y="52" width="450" height="8" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-61" value="+ inplace related methods" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-55" vertex="1">
<mxGeometry y="60" width="450" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-62" value="+ variableHooks related methods" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-55" vertex="1">
<mxGeometry y="86" width="450" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-76" value="pt::Tensor" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;" parent="1" vertex="1">
<mxGeometry x="2670" y="20" width="180" height="78" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-77" value="+ SomeGetter/Setter Methods: .." style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-76" vertex="1">
<mxGeometry y="26" width="180" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-78" value="+ unique_ptr<TensorImpl>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-76" vertex="1">
<mxGeometry y="52" width="180" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-86" value="AutogradMeta" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;" parent="1" vertex="1">
<mxGeometry x="2610" y="390" width="300" height="190" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-87" value="+ grad_tensor: framework::Tensor" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-86" vertex="1">
<mxGeometry y="26" width="300" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-88" value="+ grad_node_: std::shared_ptr<GradOpNode>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-86" vertex="1">
<mxGeometry y="52" width="300" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-89" value="+ var_hooks: std::map<int64_t, std::shared_ptr<VariableWrapperHook>>rHook>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-86" vertex="1">
<mxGeometry y="78" width="300" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-90" value="+ ..." style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-86" vertex="1">
<mxGeometry y="104" width="300" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-91" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-86" vertex="1">
<mxGeometry y="130" width="300" height="8" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-92" value="+ inplace related methods" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-86" vertex="1">
<mxGeometry y="138" width="300" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-93" value="+ variableHooks related methods" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-86" vertex="1">
<mxGeometry y="164" width="300" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-94" value="NewTensorSystem" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;" parent="1" vertex="1">
<mxGeometry x="3030" y="20" width="270" height="208" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-95" value="+ holder_: std::shared_ptr<memory::Allocation>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-94" vertex="1">
<mxGeometry y="26" width="270" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-96" value="+ type_: proto::VarType::Type" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-94" vertex="1">
<mxGeometry y="52" width="270" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-97" value="+ dims_: DDim" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-94" vertex="1">
<mxGeometry y="78" width="270" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-98" value="+ layout_: DataLayout" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-94" vertex="1">
<mxGeometry y="104" width="270" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-99" value="+ offset_: size_t" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-94" vertex="1">
<mxGeometry y="130" width="270" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-100" value="+ inplace_version_counter_: .." style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-94" vertex="1">
<mxGeometry y="156" width="270" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-101" value="+ unique_ptr<AutogradMeta>: autograd_meta_" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-94" vertex="1">
<mxGeometry y="182" width="270" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-102" value="" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="lcERAHbh8Opt-ypFuVCq-78" edge="1" target="lcERAHbh8Opt-ypFuVCq-96">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1870" y="380" as="sourcePoint" />
<mxPoint x="3020" y="175" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-108" style="edgeStyle=orthogonalEdgeStyle;shape=arrow;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" parent="1" source="lcERAHbh8Opt-ypFuVCq-105" target="lcERAHbh8Opt-ypFuVCq-76" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="2470" y="35" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-109" value="shared_ptr" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="lcERAHbh8Opt-ypFuVCq-108" vertex="1" connectable="0">
<mxGeometry x="-0.2564" y="-52" relative="1" as="geometry">
<mxPoint y="-52" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-105" value="UserEnd" style="html=1;" parent="1" vertex="1">
<mxGeometry x="1930" y="15" width="110" height="50" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-147" value="DispatchMacro" style="html=1;" parent="1" vertex="1">
<mxGeometry x="2975" y="580" width="180" height="50" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-148" value="dispatch" style="html=1;verticalAlign=bottom;startArrow=oval;startFill=1;endArrow=block;startSize=8;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="lcERAHbh8Opt-ypFuVCq-147" target="lcERAHbh8Opt-ypFuVCq-159" edge="1">
<mxGeometry width="60" relative="1" as="geometry">
<mxPoint x="1958.5700000000002" y="755" as="sourcePoint" />
<mxPoint x="2018.5700000000002" y="755" as="targetPoint" />
<Array as="points">
<mxPoint x="3020" y="455" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-149" value="BackwardPrepare" style="swimlane;" parent="1" vertex="1">
<mxGeometry x="2215" y="790" width="200" height="230" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-150" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="lcERAHbh8Opt-ypFuVCq-149" source="lcERAHbh8Opt-ypFuVCq-151" target="lcERAHbh8Opt-ypFuVCq-157" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-151" value="CreateGradNode" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-149" vertex="1">
<mxGeometry x="30" y="30" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-152" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="lcERAHbh8Opt-ypFuVCq-149" source="lcERAHbh8Opt-ypFuVCq-153" target="lcERAHbh8Opt-ypFuVCq-155" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-153" value="SetGradPendingNodes" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-149" vertex="1">
<mxGeometry x="30" y="110" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-154" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="lcERAHbh8Opt-ypFuVCq-149" source="lcERAHbh8Opt-ypFuVCq-155" target="lcERAHbh8Opt-ypFuVCq-158" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-155" value="SetGradPendingNodes" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-149" vertex="1">
<mxGeometry x="30" y="150" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-156" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="lcERAHbh8Opt-ypFuVCq-149" source="lcERAHbh8Opt-ypFuVCq-157" target="lcERAHbh8Opt-ypFuVCq-153" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-157" value="&nbsp;SetGradNode" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-149" vertex="1">
<mxGeometry x="30" y="70" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-158" value="BindGradNodeOnOutput" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-149" vertex="1">
<mxGeometry x="30" y="190" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-162" value="xxxGradNode" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;" parent="1" vertex="1">
<mxGeometry x="2630" y="652" width="260" height="138" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-163" value="+ input0_: TensorWrapper" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-162" vertex="1">
<mxGeometry y="26" width="260" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-164" value="+ input1_: TensorWrapper" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-162" vertex="1">
<mxGeometry y="52" width="260" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-165" value="+ ..." style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-162" vertex="1">
<mxGeometry y="78" width="260" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-166" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-162" vertex="1">
<mxGeometry y="104" width="260" height="8" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-167" value="+ apply(Tensor): std::vector<Tensor>() grads_" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-162" vertex="1">
<mxGeometry y="112" width="260" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-168" value="GradNodeBase" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;" parent="1" vertex="1">
<mxGeometry x="2585" y="850" width="330" height="112" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-169" value="+ Inplace_map_" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-168" vertex="1">
<mxGeometry y="26" width="330" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-170" value="+ next_edges: std::vector<Edges>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-168" vertex="1">
<mxGeometry y="52" width="330" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-171" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-168" vertex="1">
<mxGeometry y="78" width="330" height="8" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-172" value="+ HelperFunctions ..." style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="lcERAHbh8Opt-ypFuVCq-168" vertex="1">
<mxGeometry y="86" width="330" height="26" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-175" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.462;entryY=1.115;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="lcERAHbh8Opt-ypFuVCq-168" target="lcERAHbh8Opt-ypFuVCq-167" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="2248.57" y="925" as="sourcePoint" />
<mxPoint x="2408.57" y="925" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-180" value="" style="group;" parent="1" vertex="1" connectable="0">
<mxGeometry x="3060" y="380" width="260" height="170" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-159" value="KernelFunction" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-180" vertex="1">
<mxGeometry width="240" height="150" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-160" value="KernelFunction" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-180" vertex="1">
<mxGeometry x="10" y="10" width="240" height="150" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-161" value="KernelFunction" style="html=1;" parent="lcERAHbh8Opt-ypFuVCq-180" vertex="1">
<mxGeometry x="20" y="20" width="240" height="150" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-184" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="lcERAHbh8Opt-ypFuVCq-9" target="lcERAHbh8Opt-ypFuVCq-147" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="2480" y="452" />
<mxPoint x="2480" y="605" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-185" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="lcERAHbh8Opt-ypFuVCq-167" target="lcERAHbh8Opt-ypFuVCq-161" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-186" style="edgeStyle=orthogonalEdgeStyle;shape=flexArrow;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="lcERAHbh8Opt-ypFuVCq-55" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="2315" y="80" />
</Array>
<mxPoint x="2670" y="80" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="lcERAHbh8Opt-ypFuVCq-187" value="Construct" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="lcERAHbh8Opt-ypFuVCq-186" vertex="1" connectable="0">
<mxGeometry x="0.2449" y="-4" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="l6J4jQjPSFMSGiB9nFQ--1" value="Edge" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;" parent="1" vertex="1">
<mxGeometry x="2990" y="849" width="280" height="112" as="geometry" />
</mxCell>
<mxCell id="l6J4jQjPSFMSGiB9nFQ--2" value="+ grad_node_: shared_ptr<GradNodeBase>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="l6J4jQjPSFMSGiB9nFQ--1" vertex="1">
<mxGeometry y="26" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="l6J4jQjPSFMSGiB9nFQ--3" value="+ input_rank_: size_t " style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="l6J4jQjPSFMSGiB9nFQ--1" vertex="1">
<mxGeometry y="52" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="l6J4jQjPSFMSGiB9nFQ--4" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="l6J4jQjPSFMSGiB9nFQ--1" vertex="1">
<mxGeometry y="78" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="l6J4jQjPSFMSGiB9nFQ--5" value="+ Setter/Getters" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="l6J4jQjPSFMSGiB9nFQ--1" vertex="1">
<mxGeometry y="86" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="l6J4jQjPSFMSGiB9nFQ--6" value="" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="lcERAHbh8Opt-ypFuVCq-170" target="l6J4jQjPSFMSGiB9nFQ--3" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="3070" y="980" as="sourcePoint" />
<mxPoint x="3230" y="980" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-1" value="AbstractAutogradMeta" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;" vertex="1" parent="1">
<mxGeometry x="2670" y="220" width="180" height="52" as="geometry" />
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-4" style="edgeStyle=orthogonalEdgeStyle;shape=arrow;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="2760" y="220" as="targetPoint" />
<mxPoint x="2759.5" y="98" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-5" value="shared_ptr" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="YwdyLJWhu6x3MBrnwfMt-4">
<mxGeometry x="0.0759" y="39" relative="1" as="geometry">
<mxPoint x="-39" y="-26" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-6" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="YwdyLJWhu6x3MBrnwfMt-1" target="lcERAHbh8Opt-ypFuVCq-86">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="2680" y="310" as="sourcePoint" />
<mxPoint x="2840" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-7" style="edgeStyle=orthogonalEdgeStyle;shape=flexArrow;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="lcERAHbh8Opt-ypFuVCq-78" target="lcERAHbh8Opt-ypFuVCq-1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="2610" y="85" />
<mxPoint x="2610" y="272" />
</Array>
<mxPoint x="2865" y="280" as="sourcePoint" />
<mxPoint x="2510" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-8" value="Inputs/Outputs" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="YwdyLJWhu6x3MBrnwfMt-7">
<mxGeometry x="0.2449" y="-4" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-9" value="" style="shape=flexArrow;endArrow=classic;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="lcERAHbh8Opt-ypFuVCq-88" target="lcERAHbh8Opt-ypFuVCq-163">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="2530" y="470" as="sourcePoint" />
<mxPoint x="2610" y="710" as="targetPoint" />
<Array as="points">
<mxPoint x="2540" y="455" />
<mxPoint x="2540" y="691" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-10" value="shared_ptr" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="YwdyLJWhu6x3MBrnwfMt-9">
<mxGeometry x="-0.2475" y="-4" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-11" value="" style="shape=flexArrow;endArrow=classic;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="lcERAHbh8Opt-ypFuVCq-61" target="lcERAHbh8Opt-ypFuVCq-149">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="2000" y="250" as="sourcePoint" />
<mxPoint x="2220" y="912" as="targetPoint" />
<Array as="points">
<mxPoint x="2070" y="183" />
<mxPoint x="2070" y="905" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-13" value="fwd_input" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="YwdyLJWhu6x3MBrnwfMt-11">
<mxGeometry x="-0.3326" y="-3" relative="1" as="geometry">
<mxPoint x="63" y="446" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-12" value="" style="shape=flexArrow;endArrow=classic;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="lcERAHbh8Opt-ypFuVCq-77" target="lcERAHbh8Opt-ypFuVCq-149">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1860" y="190" as="sourcePoint" />
<mxPoint x="1910" y="140" as="targetPoint" />
<Array as="points">
<mxPoint x="2050" y="59" />
<mxPoint x="2050" y="963" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="YwdyLJWhu6x3MBrnwfMt-15" value="grads" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="YwdyLJWhu6x3MBrnwfMt-12">
<mxGeometry x="0.8887" y="-4" relative="1" as="geometry">
<mxPoint x="4" y="-5" as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>