Files
calculet-npu-research-archive/source/repositories-complete/calrt-exact/calrt/doc/workflow.drawio
T

909 lines
88 KiB
Plaintext

<mxfile host="Electron" modified="2026-03-04T08:30:19.973Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.4.0 Chrome/112.0.5615.204 Electron/24.5.1 Safari/537.36" etag="QubUAcj6knHrdmYaBs74" version="21.4.0" type="device" pages="3">
<diagram name="DeployWorkflow" id="LzJQsPxNJvw67I1T4rUK">
<mxGraphModel dx="3164" dy="2313" 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="1lCEvAD2Rnn47IWYKUgo-96" value="&lt;br&gt;combined:&lt;br&gt;for calbin:" style="rounded=1;whiteSpace=wrap;html=1;align=left;dashed=1;fillColor=none;verticalAlign=top;arcSize=3;" parent="1" vertex="1">
<mxGeometry x="10" y="590" width="490" height="1630" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-92" value="&lt;br&gt;discrete:&lt;br&gt;foreach configuredNetwork:" style="rounded=1;whiteSpace=wrap;html=1;align=left;dashed=1;fillColor=none;verticalAlign=top;arcSize=3;" parent="1" vertex="1">
<mxGeometry x="-580" y="590" width="560" height="1630" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-1" value="bool AilLoadModel(&amp;amp;vDev, path)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="40" y="-360" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-2" value="Calbin createCalbin(path)" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="80" y="-260" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-3" value="bool Configure(&amp;amp;vDev, calbin)" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="80" y="-160" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-8" value="calbin {&lt;br&gt;&amp;nbsp; networkA/B/C: {&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp; &amp;nbsp; chip0/1/2/x: {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; cpu_cmd: {txt, size, ptr = -1},&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ccu_elf: {bin, size, ptr = -1},&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; so_file:{.so, size, ptr=-1},&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; network_param: {data, ptr, size},&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; network_ibuf: {ptr, size},&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; network_obuf: {ptr, size}&lt;br&gt;&amp;nbsp; &amp;nbsp; },&lt;br&gt;&amp;nbsp; &amp;nbsp; shared_ddr_space: {ptr, size}&lt;br&gt;&amp;nbsp; }&lt;br&gt;&amp;nbsp; job_type: {combined|discrete}&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&amp;nbsp; job_ibuf: {ptr, size},&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&amp;nbsp; job_obuf: {ptr, size},&lt;br&gt;}" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-240" y="-610" width="240" height="230" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-9" value="ConfiguredNetwork ConfigNetwork(&amp;amp;vDev, calbin)" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="120" y="-60" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-10" value="for tar_data in {cpu_cmd, ccu_elf, param}: {&lt;br&gt;&amp;nbsp; auto tar_data = GetParamFromCalbin(calbin);&lt;br&gt;&amp;nbsp; pcie.ioctrl(fp, DMA_WRITE, &amp;amp;tar_data, calbin.tar.ptr, calbin.tar.size);&lt;br&gt;}" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="160" y="40" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-11" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="2220" as="sourcePoint" />
<mxPoint x="600" y="-360" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-12" value="cpu_cmd, ccu_elf, param_data copied to {ptr, size}" style="rounded=1;whiteSpace=wrap;html=1;align=left;dashed=1;" parent="1" vertex="1">
<mxGeometry x="640" y="40" width="280" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-14" value="InputStream CreateInputStream(&lt;font color=&quot;#ff0000&quot;&gt;calbin&lt;/font&gt;)&lt;br&gt;OutputStream CreateOutputStream(calbin)" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="120" y="600" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-16" value="InputStream {&lt;br&gt;&amp;nbsp; direction HostToDev;&lt;br&gt;&amp;nbsp; void* hostBufPtr;&lt;br&gt;&amp;nbsp; dev_paddr;&lt;br&gt;&amp;nbsp; data_size,&lt;br&gt;&amp;nbsp; data_shape // ??&lt;br&gt;};&lt;br&gt;&lt;br&gt;OutputStream {&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&amp;nbsp; direction DevToHost;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&amp;nbsp; void* hostBufPtr;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&amp;nbsp; dev_paddr;&lt;br&gt;&amp;nbsp; data_size,&lt;br&gt;&amp;nbsp; data_shape // ??&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;};" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="240" y="-610" width="240" height="230" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-18" value="DevCache CreateCache(calbin.ddr_space.ptr, calbin.ddr_space.size)" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="120" y="700" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-20" value="RegisterResource(&amp;amp;vDev, ConfiguredNetwork, DevCache)&amp;nbsp;" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="120" y="800" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-21" value="HalCreateDevBuffer(&amp;amp;vDev, void** device_ptr, size);" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="160" y="900" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-22" value="void HalCreateHostBuffer(&amp;amp;inputStream)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="40" y="1020" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-23" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="1lCEvAD2Rnn47IWYKUgo-2" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="60" y="-280" as="sourcePoint" />
<mxPoint x="570" y="130" as="targetPoint" />
<Array as="points">
<mxPoint x="60" y="-220" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-24" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="1lCEvAD2Rnn47IWYKUgo-3" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="60" y="-220" as="sourcePoint" />
<mxPoint x="80" y="-121" as="targetPoint" />
<Array as="points">
<mxPoint x="60" y="-120" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-25" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.1;exitY=0.99;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="100" y="-80" as="sourcePoint" />
<mxPoint x="120" y="-19" as="targetPoint" />
<Array as="points">
<mxPoint x="100" y="-19" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-26" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.1;exitY=0.99;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="140" y="20" as="sourcePoint" />
<mxPoint x="160" y="81" as="targetPoint" />
<Array as="points">
<mxPoint x="140" y="81" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-27" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="100" y="-20" as="sourcePoint" />
<mxPoint x="120" y="641" as="targetPoint" />
<Array as="points">
<mxPoint x="100" y="641" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-28" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="100" y="640" as="sourcePoint" />
<mxPoint x="120" y="741" as="targetPoint" />
<Array as="points">
<mxPoint x="100" y="741" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-29" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="100" y="740" as="sourcePoint" />
<mxPoint x="120" y="841" as="targetPoint" />
<Array as="points">
<mxPoint x="100" y="841" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-30" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.1;exitY=0.99;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="140" y="880" as="sourcePoint" />
<mxPoint x="160" y="941" as="targetPoint" />
<Array as="points">
<mxPoint x="140" y="941" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-31" value="void HalCreateHostBuffer(&amp;amp;outputStream)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="40" y="1120" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-32" value="AilGetModelInputs(&amp;amp;inputStream)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="40" y="1220" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-35" value="pcie.ioctrl(fp, DMA_WRITE, istream.hostBufPtr, istream.dev_paddr, istream.data_size);" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="80" y="1320" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-36" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1408.3333333333333" y="1000" as="sourcePoint" />
<mxPoint x="-620" y="1000" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-37" value="input_data copied to dev {ptr, size}" style="rounded=1;whiteSpace=wrap;html=1;align=left;dashed=1;" parent="1" vertex="1">
<mxGeometry x="680" y="1320" width="280" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-38" value="Infer(calbin);" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="40" y="1420" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-39" value="pcie.ioctrl(fp, REG_WRITE, DEV_JOBQ_LOW, calbin.A.cpu_cmds.ptr &amp;amp; _32BIT_MASK);&lt;br&gt;pcie.ioctrl(fp, REG_WRITE, DEV_JOBQ_HIGH, (calbin.A.cpu_cmds.ptr &amp;gt;&amp;gt; 32) &amp;amp; _32BIT_MASK);" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="80" y="1520" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-40" value="int32_t doneStatus = 0;&lt;br&gt;while(doneStatus == 0) {&lt;br&gt;&amp;nbsp; pcie.ioctrl(fp, REG_READ, DEV_DONEQ_EMPTY, doneStatus);&lt;br&gt;}" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="80" y="1620" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-41" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.1;exitY=0.99;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="1lCEvAD2Rnn47IWYKUgo-39" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="60" y="1500" as="sourcePoint" />
<mxPoint x="80" y="1561" as="targetPoint" />
<Array as="points">
<mxPoint x="60" y="1560" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-45" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="60" y="1560" as="sourcePoint" />
<mxPoint x="80" y="1660" as="targetPoint" />
<Array as="points">
<mxPoint x="60" y="1660" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-50" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="60" y="1300" as="sourcePoint" />
<mxPoint x="80" y="1360" as="targetPoint" />
<Array as="points">
<mxPoint x="60" y="1360" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-51" value="AilGetModelOutputs(&amp;amp;OutputStream, hostData)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="40" y="1720" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-52" value="while(true) {&lt;br&gt;&amp;nbsp; cpuPollingJobStartQ();&lt;br&gt;&amp;nbsp; cpuExecCmd() {&lt;br&gt;&amp;nbsp; &amp;nbsp; cpuPreprocess(); // optional&lt;br&gt;&amp;nbsp; &amp;nbsp; chip0StartChipxCpu(); // optional&lt;br&gt;&amp;nbsp; &amp;nbsp; cpuStartCcu();&lt;br&gt;&amp;nbsp; &amp;nbsp; cpuPollingCcuDone();&lt;br&gt;&amp;nbsp; &amp;nbsp; cpuPollingChipxDone(); // optional&lt;br&gt;&amp;nbsp; &amp;nbsp; cpuPostprocess(); // optional&lt;br&gt;&amp;nbsp; &amp;nbsp; cpuUpdateJobDoneQ();&lt;br&gt;&amp;nbsp; }&lt;br&gt;}" style="rounded=1;whiteSpace=wrap;html=1;align=left;arcSize=7;" parent="1" vertex="1">
<mxGeometry x="680" y="1520" width="280" height="180" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-53" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="1lCEvAD2Rnn47IWYKUgo-39" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="520" y="1580" as="sourcePoint" />
<mxPoint x="680" y="1560" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-54" value="pcie.ioctrl(fp, DMA_READ, ostream.hostBufPtr, ostream.dev_paddr, ostream.data_size);" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="80" y="1820" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-55" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="60" y="1800" as="sourcePoint" />
<mxPoint x="80" y="1860" as="targetPoint" />
<Array as="points">
<mxPoint x="60" y="1860" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-56" value="output_data copied to hostBufPtr" style="rounded=1;whiteSpace=wrap;html=1;align=left;dashed=1;" parent="1" vertex="1">
<mxGeometry x="680" y="1820" width="280" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-57" value="" style="endArrow=classic;html=1;rounded=0;exitX=-0.001;exitY=0.774;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitPerimeter=0;" parent="1" source="1lCEvAD2Rnn47IWYKUgo-52" target="1lCEvAD2Rnn47IWYKUgo-40" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="1570" as="sourcePoint" />
<mxPoint x="690" y="1570" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-58" value="configuredNetwork {&lt;br&gt;&amp;nbsp; &amp;nbsp; chip0/1/2/x: {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; cpu_cmd: {txt, size, ptr = -1},&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ccu_elf: {bin, size, ptr = -1},&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; network_param: {data, ptr, size},&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; network_ibuf: {ptr, size},&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; network_obuf: {ptr, size}&lt;br&gt;&amp;nbsp; &amp;nbsp; },&lt;br&gt;&amp;nbsp; &amp;nbsp; shared_ddr_space: {ptr, size},&lt;br&gt;&amp;nbsp; &amp;nbsp; istream,&lt;br&gt;&amp;nbsp; &amp;nbsp; ostream&lt;br&gt;}" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry y="-610" width="240" height="230" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-59" value="Infer(configurednetworkA/B/C);" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-480" y="1420" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-60" value="pcie.ioctrl(fp, REG_WRITE, DEV_JOBQ_LOW, network.cpu_cmds.ptr &amp;amp; _32BIT_MASK);&lt;br&gt;pcie.ioctrl(fp, REG_WRITE, DEV_JOBQ_HIGH, (network.cpu_cmds.ptr &amp;gt;&amp;gt; 32) &amp;amp; _32BIT_MASK);" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-440" y="1520" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-61" value="int32_t doneStatus = 0;&lt;br&gt;while(doneStatus == 0) {&lt;br&gt;&amp;nbsp; pcie.ioctrl(fp, REG_READ, DEV_DONEQ_EMPTY, doneStatus);&lt;br&gt;}" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-440" y="1620" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-62" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.1;exitY=0.99;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="1lCEvAD2Rnn47IWYKUgo-60" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-460" y="1500" as="sourcePoint" />
<mxPoint x="-440" y="1561" as="targetPoint" />
<Array as="points">
<mxPoint x="-460" y="1560" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-63" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-460" y="1560" as="sourcePoint" />
<mxPoint x="-440" y="1660" as="targetPoint" />
<Array as="points">
<mxPoint x="-460" y="1660" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-64" value="AilGetModelOutputs(&amp;amp;OutputStream, hostData)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-480" y="1720" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-65" value="pcie.ioctrl(fp, DMA_READ, ostream.hostBufPtr, ostream.dev_paddr, ostream.data_size);" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-440" y="1820" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-66" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-460" y="1800" as="sourcePoint" />
<mxPoint x="-440" y="1860" as="targetPoint" />
<Array as="points">
<mxPoint x="-460" y="1860" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-67" value="void HalDevBufFree(&amp;amp;vDev)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="40" y="1920" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-68" value="void HalHostBufferFree(&amp;amp;inputStream)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="40" y="2020" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-69" value="void HalHostBufferFree(&amp;amp;outputStream)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="40" y="2120" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-70" value="bool AilLoadModel(&amp;amp;vDev, path)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-480" y="-360" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-71" value="Calbin createCalbin(path)" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-440" y="-260" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-72" value="bool Configure(&amp;amp;vDev, calbin)" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-440" y="-160" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-73" value="ConfiguredNetwork ConfigNetwork(&amp;amp;vDev, calbin)" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="-60" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-74" value="for tar_data in {cpu_cmd, ccu_elf, param}: {&lt;br&gt;&amp;nbsp; auto tar_data = GetParamFromCalbin(calbin);&lt;br&gt;&amp;nbsp; pcie.ioctrl(fp, DMA_WRITE, &amp;amp;tar_data, calbin.tar.ptr, calbin.tar.size);&lt;br&gt;}" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-360" y="40" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-75" value="InputStream CreateInputStream(&amp;amp;&lt;font color=&quot;#0000ff&quot;&gt;configuredNetwork&lt;/font&gt;)&lt;br&gt;OutputStream CreateOutputStream(&amp;amp;configuredNetwork)" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="600" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-76" value="DevCache CreateCache(configuredNetwork.ddr_space.ptr, configuredNetwork.ddr_space.size)" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="700" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-77" value="RegisterResource(&amp;amp;vDev, ConfiguredNetwork, DevCache)&amp;nbsp;" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="800" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-78" value="HalCreateDevBuffer(&amp;amp;vDev, void** device_ptr, size);" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-360" y="900" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-79" value="void HalCreateHostBuffer(&amp;amp;net.inputStream)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-480" y="1020" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-80" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="1lCEvAD2Rnn47IWYKUgo-71" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-460" y="-280" as="sourcePoint" />
<mxPoint x="50" y="130" as="targetPoint" />
<Array as="points">
<mxPoint x="-460" y="-220" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-81" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="1lCEvAD2Rnn47IWYKUgo-72" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-460" y="-220" as="sourcePoint" />
<mxPoint x="-440" y="-121" as="targetPoint" />
<Array as="points">
<mxPoint x="-460" y="-120" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-82" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.1;exitY=0.99;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-420" y="-80" as="sourcePoint" />
<mxPoint x="-400" y="-19" as="targetPoint" />
<Array as="points">
<mxPoint x="-420" y="-19" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-83" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.1;exitY=0.99;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-380" y="20" as="sourcePoint" />
<mxPoint x="-360" y="81" as="targetPoint" />
<Array as="points">
<mxPoint x="-380" y="81" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-84" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-420" y="-20" as="sourcePoint" />
<mxPoint x="-400" y="641" as="targetPoint" />
<Array as="points">
<mxPoint x="-420" y="641" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-85" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-420" y="640" as="sourcePoint" />
<mxPoint x="-400" y="741" as="targetPoint" />
<Array as="points">
<mxPoint x="-420" y="741" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-86" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-420" y="740" as="sourcePoint" />
<mxPoint x="-400" y="841" as="targetPoint" />
<Array as="points">
<mxPoint x="-420" y="841" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-87" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.1;exitY=0.99;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-380" y="880" as="sourcePoint" />
<mxPoint x="-360" y="941" as="targetPoint" />
<Array as="points">
<mxPoint x="-380" y="941" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-88" value="void HalCreateHostBuffer(&amp;amp;net.outputStream)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-480" y="1120" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-89" value="AilGetModelInputs(&amp;amp;nt.inputStream)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-480" y="1220" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-90" value="pcie.ioctrl(fp, DMA_WRITE, istream.hostBufPtr, istream.dev_paddr, istream.data_size);" style="rounded=1;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-440" y="1320" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-91" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-460" y="1300" as="sourcePoint" />
<mxPoint x="-440" y="1360" as="targetPoint" />
<Array as="points">
<mxPoint x="-460" y="1360" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-93" value="void HalDevBufFree(&amp;amp;vDev)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-480" y="1920" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-94" value="void HalHostBufferFree(&amp;amp;nt.inputStream)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-480" y="2020" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="1lCEvAD2Rnn47IWYKUgo-95" value="void HalHostBufferFree(&amp;amp;nt.outputStream)" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-480" y="2120" width="320" height="80" as="geometry" />
</mxCell>
<mxCell id="V4Q2w_theFtdO_9fRYQ5-1" value="&lt;b&gt;&lt;font style=&quot;font-size: 15px;&quot;&gt;if (.so == true)&lt;/font&gt;&lt;/b&gt;&lt;br&gt;for net.so in {netA/B/C}: {&lt;br&gt;&amp;nbsp; HalCreateDevBuffer(&amp;amp;vDev, void** device_ptr, net.so.size);&lt;br&gt;&amp;nbsp; auto tar_data = GetParamFromCalbin(calbin);&lt;br&gt;&amp;nbsp; pcie.ioctrl(fp, DMA_WRITE, &amp;amp;tar_data, calbin.tar.ptr, calbin.tar.size);&lt;br&gt;}" style="rounded=1;whiteSpace=wrap;html=1;align=left;arcSize=10;" parent="1" vertex="1">
<mxGeometry x="160" y="140" width="320" height="140" as="geometry" />
</mxCell>
<mxCell id="V4Q2w_theFtdO_9fRYQ5-2" value="&lt;b&gt;&lt;font style=&quot;font-size: 15px;&quot;&gt;if (.so == true || multichip == true)&lt;/font&gt;&lt;/b&gt;&lt;br&gt;auto deployCmd = CreateDeployCmd(calbin);&lt;br&gt;HalCreateDevBuffer(&amp;amp;vDev, void** device_ptr, deployCmd.size);&lt;br&gt;auto tar_data = DeployCmdToArray(deployCmd);&lt;br&gt;pcie.ioctrl(fp, DMA_WRITE, &amp;amp;tar_data, device_ptr, deployCmd.size);&lt;br&gt;pcie.ioctrl(fp, REG_WRITE, DEV_JOBQ, device_ptr);&lt;br&gt;status = 0;&lt;br&gt;while(status == 0) {&lt;br&gt;&amp;nbsp; pcie.ioctrl(fp. REG_READ, DEV_DONEQ, status)&lt;br&gt;}&lt;br&gt;HalDevBufferFree(&amp;amp;vDev, void** device_ptr, deployCmd.size)&lt;br&gt;HalDevBufferFree(&amp;amp;vDev, void** so_device_ptr, so.size)&lt;br&gt;&lt;b&gt;// multichip &amp;amp;&amp;amp; multichip .so udpate&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;align=left;arcSize=10;" parent="1" vertex="1">
<mxGeometry x="160" y="300" width="320" height="260" as="geometry" />
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-1" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="140" y="80" as="sourcePoint" />
<mxPoint x="160" y="211" as="targetPoint" />
<Array as="points">
<mxPoint x="140" y="211" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-2" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="140" y="210" as="sourcePoint" />
<mxPoint x="160" y="421" as="targetPoint" />
<Array as="points">
<mxPoint x="140" y="421" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-3" value="for net.so in {netA/B/C}: {&lt;br&gt;&amp;nbsp; HalCreateDevBuffer(&amp;amp;vDev, void** device_ptr, net.so.size);&lt;br&gt;&amp;nbsp; auto tar_data = GetParamFromCalbin(calbin);&lt;br&gt;&amp;nbsp; pcie.ioctrl(fp, DMA_WRITE, &amp;amp;tar_data, calbin.tar.ptr, calbin.tar.size);&lt;br&gt;}" style="rounded=1;whiteSpace=wrap;html=1;align=left;arcSize=10;" parent="1" vertex="1">
<mxGeometry x="-360" y="140" width="320" height="140" as="geometry" />
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-4" value="&lt;b&gt;&lt;font style=&quot;font-size: 15px;&quot;&gt;if (.so == true || multichip == true)&lt;/font&gt;&lt;/b&gt;&lt;br&gt;auto deployCmd = CreateDeployCmd(calbin);&lt;br&gt;HalCreateDevBuffer(&amp;amp;vDev, void** device_ptr, deployCmd.size);&lt;br&gt;auto tar_data = DeployCmdToArray(deployCmd);&lt;br&gt;pcie.ioctrl(fp, DMA_WRITE, &amp;amp;tar_data, device_ptr, deployCmd.size);&lt;br&gt;pcie.ioctrl(fp, REG_WRITE, DEV_JOBQ, device_ptr);&lt;br&gt;status = 0;&lt;br&gt;while(status == 0) {&lt;br&gt;&amp;nbsp; pcie.ioctrl(fp. REG_READ, DEV_DONEQ, status)&lt;br&gt;}&lt;br&gt;HalDevBufferFree(&amp;amp;vDev, void** device_ptr, deployCmd.size)&lt;br&gt;HalDevBufferFree(&amp;amp;vDev, void** so_device_ptr, so.size)&lt;br&gt;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;// multichip &amp;amp;&amp;amp; multichip .so udpate&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;align=left;arcSize=10;" parent="1" vertex="1">
<mxGeometry x="-360" y="300" width="320" height="260" as="geometry" />
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-5" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-380" y="210" as="sourcePoint" />
<mxPoint x="-360" y="421" as="targetPoint" />
<Array as="points">
<mxPoint x="-380" y="421" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-6" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-380" y="80" as="sourcePoint" />
<mxPoint x="-360" y="211" as="targetPoint" />
<Array as="points">
<mxPoint x="-380" y="211" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-7" value=".so copied to dev temp space" style="rounded=1;whiteSpace=wrap;html=1;align=left;dashed=1;" parent="1" vertex="1">
<mxGeometry x="640" y="140" width="280" height="80" as="geometry" />
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-8" value="deployCmd copied to dev temp space&lt;br&gt;&lt;br&gt;received deployCmd as Job&lt;br&gt;&lt;br&gt;push doneq when exec cmd done" style="rounded=1;whiteSpace=wrap;html=1;align=left;arcSize=5;" parent="1" vertex="1">
<mxGeometry x="640" y="300" width="280" height="260" as="geometry" />
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-10" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="480" y="440" as="sourcePoint" />
<mxPoint x="640" y="440" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-11" value="" style="endArrow=classic;html=1;rounded=0;exitX=-0.005;exitY=0.691;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="FGB3oFuBwOzjHJ2-TQwH-8" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="450" as="sourcePoint" />
<mxPoint x="480" y="480" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-12" value="HOST" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="480" y="-310" width="110" height="50" as="geometry" />
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-13" value="DEV" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="610" y="-310" width="110" height="50" as="geometry" />
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-14" value="DEPLOY" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="640" y="930" width="110" height="50" as="geometry" />
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-15" value="RUN / INFER" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="640" y="1020" width="110" height="50" as="geometry" />
</mxCell>
<mxCell id="FGB3oFuBwOzjHJ2-TQwH-16" value="TODO:&lt;br&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;1. multi-thread host, may start from HalCreateHostBuffer(), current thread need to get ping/pong net.istream from thread manager&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;2. multi-chip and chipx has .so update, TBD in createDeployCmd()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;ANS: chip0 has largest ocupied memory&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;3. each netA/B/C may has an optional .so, so host should tell dev which .so should be loaded while inferring net&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;4. hostrt thread manager take into account:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;4.1 ping/pong thread&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;&amp;nbsp;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;4.2 pcie driver multi-task rule&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;4.3 host app multi-thread&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;5. memcopy next input data to dev while inferring current job&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;6. netmodel pipeline -&amp;gt; combined or discrete ?&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;7. chip0 can&#39;t load all chip init data/program&lt;/div&gt;&lt;div style=&quot;&quot;&gt;8. dev init details, if device not ready, what is host driver response&lt;/div&gt;&lt;div style=&quot;&quot;&gt;9. input data A/B/C/D, shape struct stored in netA/B/C/D&lt;/div&gt;&lt;div style=&quot;&quot;&gt;10. user preprocess&lt;/div&gt;&lt;div style=&quot;&quot;&gt;11. delete useless .so&lt;/div&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;fontStyle=0;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="1000" y="1040" width="410" height="400" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-1" value="&lt;h1&gt;Data struct:&lt;/h1&gt;&lt;p&gt;CalrtCalbin:&amp;nbsp;&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;|- vector&amp;lt;CalbinNetwork&amp;gt;:&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;|- CalbinSchipNetwork:&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;|- CalbinSection&lt;br&gt;&lt;/p&gt;" style="text;html=1;strokeColor=none;fillColor=none;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1">
<mxGeometry x="-810" y="-1070" width="400" height="120" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-5" value="CalrtCalbin" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-810" y="-920" width="170" height="78" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-6" value="vector&amp;lt;CalbinNetwork&amp;gt;" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-5" vertex="1">
<mxGeometry y="26" width="170" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-8" value="CalbinJobType_e jobType" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-5" vertex="1">
<mxGeometry y="52" width="170" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-9" value="CalbinNetwork" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-600" y="-920" width="190" height="130" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-10" value="string networkName" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-9" vertex="1">
<mxGeometry y="26" width="190" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-11" value="int networkId" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-9" vertex="1">
<mxGeometry y="52" width="190" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-12" value="vector&amp;lt;int&amp;gt; targetChipIndex" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-9" vertex="1">
<mxGeometry y="78" width="190" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-13" value="vector&amp;lt;CalbinSchpNetwork&amp;gt;" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-9" vertex="1">
<mxGeometry y="104" width="190" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-17" value="CalbinSchipNetwork" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-380" y="-920" width="250" height="134" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-18" value="unordered_multimap&amp;lt;CalbinSectionType_e, Calbinsection&amp;gt;" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-17" vertex="1">
<mxGeometry y="26" width="250" height="54" as="geometry" />
</mxCell>
<mxCell id="AF61PKnEK5gGIBZ6lM1Z-20" value="CalbinCoreRsrc_e coreRsrc" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-17" vertex="1">
<mxGeometry y="80" width="250" height="54" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-21" value="CalbinSection" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="70" y="-920" width="160" height="260" as="geometry">
<mxRectangle x="-150" y="-922" width="110" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-22" value="name" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-21" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-23" value="path" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-21" vertex="1">
<mxGeometry y="52" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-24" value="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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-21" vertex="1">
<mxGeometry y="78" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-25" value="id" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-21" vertex="1">
<mxGeometry y="104" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-26" value="size" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-21" vertex="1">
<mxGeometry y="130" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-27" value="devAddr" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-21" vertex="1">
<mxGeometry y="156" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-28" value="offset" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-21" vertex="1">
<mxGeometry y="182" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="AF61PKnEK5gGIBZ6lM1Z-17" value="vector&amp;lt;CalbinTensorInfo&amp;gt;" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-21" vertex="1">
<mxGeometry y="208" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="AF61PKnEK5gGIBZ6lM1Z-16" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-21" vertex="1">
<mxGeometry y="234" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-29" value="CalbinSectionType_e" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-100" y="-920" width="140" height="234" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-30" value="NULL" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-29" vertex="1">
<mxGeometry y="26" width="140" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-31" value="CPU_CMD" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-29" vertex="1">
<mxGeometry y="52" width="140" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-32" value="CPU_SO" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-29" vertex="1">
<mxGeometry y="78" width="140" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-33" value="CCU_ELF" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-29" vertex="1">
<mxGeometry y="104" width="140" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-34" value="RODATA" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-29" vertex="1">
<mxGeometry y="130" width="140" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-35" value="IBUF" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-29" vertex="1">
<mxGeometry y="156" width="140" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-36" value="OBUF" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-29" vertex="1">
<mxGeometry y="182" width="140" height="26" as="geometry" />
</mxCell>
<mxCell id="kmocdT7iAFOh53ksdyXf-37" value="MEMRSVD" 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;whiteSpace=wrap;html=1;" parent="kmocdT7iAFOh53ksdyXf-29" vertex="1">
<mxGeometry y="208" width="140" height="26" as="geometry" />
</mxCell>
<mxCell id="AF61PKnEK5gGIBZ6lM1Z-21" value="CalbinCoreRsrc_e" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-380" y="-750" width="140" height="104" as="geometry" />
</mxCell>
<mxCell id="AF61PKnEK5gGIBZ6lM1Z-22" value="CPU+CCU" 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;whiteSpace=wrap;html=1;" parent="AF61PKnEK5gGIBZ6lM1Z-21" vertex="1">
<mxGeometry y="26" width="140" height="26" as="geometry" />
</mxCell>
<mxCell id="AF61PKnEK5gGIBZ6lM1Z-23" value="CPU" 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;whiteSpace=wrap;html=1;" parent="AF61PKnEK5gGIBZ6lM1Z-21" vertex="1">
<mxGeometry y="52" width="140" height="26" as="geometry" />
</mxCell>
<mxCell id="AF61PKnEK5gGIBZ6lM1Z-24" value="CCU" 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;whiteSpace=wrap;html=1;" parent="AF61PKnEK5gGIBZ6lM1Z-21" vertex="1">
<mxGeometry y="78" width="140" height="26" as="geometry" />
</mxCell>
<mxCell id="Xjp-Nfv6kiYs2145v0fd-1" value="CalbinJobType_e" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-810" y="-760" width="170" height="78" as="geometry" />
</mxCell>
<mxCell id="Xjp-Nfv6kiYs2145v0fd-2" value="COMBINED" 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;whiteSpace=wrap;html=1;" parent="Xjp-Nfv6kiYs2145v0fd-1" vertex="1">
<mxGeometry y="26" width="170" height="26" as="geometry" />
</mxCell>
<mxCell id="Xjp-Nfv6kiYs2145v0fd-3" value="DISCRETE" 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;whiteSpace=wrap;html=1;" parent="Xjp-Nfv6kiYs2145v0fd-1" vertex="1">
<mxGeometry y="52" width="170" height="26" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="oiehN0wZ6b7ckfR2zWyT" name="InferBlock">
<mxGraphModel dx="3164" dy="1213" 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="jgqe-8yhuYv_FWsh-zXU-3" value="CPU" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="280" y="120" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-4" value="CCU" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="680" y="120" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-7" value="Start" style="rounded=0;whiteSpace=wrap;html=1;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="280" y="200" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-8" value="Calc" style="rounded=0;whiteSpace=wrap;html=1;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="280" y="280" width="80" height="280" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-10" value="" style="endArrow=classic;html=1;rounded=0;fontSize=12;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="150" y="200" as="sourcePoint" />
<mxPoint x="260" y="200" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-21" value="Job Start" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="jgqe-8yhuYv_FWsh-zXU-10" vertex="1" connectable="0">
<mxGeometry x="0.1262" y="-1" relative="1" as="geometry">
<mxPoint x="-3" y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-11" value="End" style="rounded=0;whiteSpace=wrap;html=1;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="280" y="560" width="80" height="120" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-13" value="runtime" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="160" y="220" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-14" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;labelPosition=left;verticalLabelPosition=middle;align=right;verticalAlign=middle;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="260" y="200" width="20" height="80" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-15" value="compiler" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="160" y="400" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-16" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;labelPosition=left;verticalLabelPosition=middle;align=right;verticalAlign=middle;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="260" y="280" width="20" height="280" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-17" value="compiler" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="120" y="600" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-18" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;labelPosition=left;verticalLabelPosition=middle;align=right;verticalAlign=middle;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="260" y="560" width="20" height="120" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-19" value="" style="endArrow=classic;html=1;rounded=0;fontSize=12;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="370" y="280.31" as="sourcePoint" />
<mxPoint x="670" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-29" value="CCU Start" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="jgqe-8yhuYv_FWsh-zXU-19" vertex="1" connectable="0">
<mxGeometry x="0.25" relative="1" as="geometry">
<mxPoint x="-27" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-22" value="Calc" style="rounded=0;whiteSpace=wrap;html=1;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="680" y="280" width="80" height="240" as="geometry" />
</mxCell>
<mxCell id="jgqe-8yhuYv_FWsh-zXU-24" value="End" style="rounded=0;whiteSpace=wrap;html=1;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="680" y="520" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-1" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;fontSize=12;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="370" y="360" as="sourcePoint" />
<mxPoint x="670" y="360" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-2" value="data sync" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="eEd2hMc1vHw8OQm65ahl-1" vertex="1" connectable="0">
<mxGeometry x="0.0522" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-3" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;fontSize=12;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="370" y="399.17" as="sourcePoint" />
<mxPoint x="670" y="399.17" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-4" value="data sync" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="eEd2hMc1vHw8OQm65ahl-3" vertex="1" connectable="0">
<mxGeometry x="0.0522" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-5" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;fontStyle=1;fontSize=12;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="370" y="440" as="sourcePoint" />
<mxPoint x="670" y="440" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-6" value="data sync" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="eEd2hMc1vHw8OQm65ahl-5" vertex="1" connectable="0">
<mxGeometry x="0.0522" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-7" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;fontSize=12;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="370" y="320" as="sourcePoint" />
<mxPoint x="670" y="320" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-8" value="data sync" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="eEd2hMc1vHw8OQm65ahl-7" vertex="1" connectable="0">
<mxGeometry x="0.0522" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-11" value="..." style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="490" y="460" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-18" value="" style="endArrow=classic;html=1;rounded=0;fontSize=12;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="670" y="520" as="sourcePoint" />
<mxPoint x="370" y="520" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-19" value="last data sync" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="eEd2hMc1vHw8OQm65ahl-18" vertex="1" connectable="0">
<mxGeometry x="0.5" y="-4" relative="1" as="geometry">
<mxPoint x="85" y="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-20" value="CPU Start code by runtime: (ccu_scalar_ddr_offset, program_addr, pingpong_flag)&lt;br style=&quot;font-size: 12px;&quot;&gt;1. schip&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;1.1 (&lt;font color=&quot;#0000ff&quot;&gt;rt optional&lt;/font&gt;) start_ccu(ccu_scalar_ddr_offset, program_addr, pingpong_flag)&lt;br&gt;&amp;nbsp; &amp;nbsp; 1.2 (&lt;font color=&quot;#0000ff&quot;&gt;rt optional&lt;/font&gt;) jr to cpu cmd&lt;br style=&quot;font-size: 12px;&quot;&gt;2. mchip&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;2.1 chip0&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;2.1.1 clear sync reg; // TBD&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;2.1.2 send chipx ccu start cmds, start chipx&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;2.1.3 (&lt;font style=&quot;border-color: var(--border-color);&quot; color=&quot;#0000ff&quot;&gt;rt optional&lt;/font&gt;) start_ccu(program_addr, pingpong_flag);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2.1.4 (&lt;font style=&quot;border-color: var(--border-color);&quot; color=&quot;#0000ff&quot;&gt;rt optional&lt;/font&gt;) jr to cpu cmd&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;2.2 chipx&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;2.2.1 (&lt;font color=&quot;#0000ff&quot;&gt;rt optional&lt;/font&gt;) start_ccu(ccu_scalar_ddr_offset, program_addr, pingpong_flag);&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2.2.2 (&lt;font style=&quot;border-color: var(--border-color);&quot; color=&quot;#0000ff&quot;&gt;rt optional&lt;/font&gt;) jr to cpu cmd" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="-520" y="200" width="520" height="200" as="geometry" />
</mxCell>
<mxCell id="eEd2hMc1vHw8OQm65ahl-22" value="CPU End code by runtime: (sync_reg_idx)&lt;br style=&quot;font-size: 12px;&quot;&gt;1. schip&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12px;&quot;&gt;&#x9;&lt;/span&gt;1.1 if (jobInfo.ccu_en) polling ccu_done&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;1.2 push job_done&lt;br style=&quot;font-size: 12px;&quot;&gt;2. mchip&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12px;&quot;&gt;&#x9;&lt;/span&gt;2.1 chip0&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12px;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre; font-size: 12px;&quot;&gt;&#x9;&lt;/span&gt;2.1.1 if (jobInfo.ccu_en) polling ccu_done&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;2.1.2 write_local_sync_unit(jobinfo.sync_reg_idx, op(+1));&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12px;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre; font-size: 12px;&quot;&gt;&#x9;&lt;/span&gt;2.1.2 polling jobInfo.sync_reg_idx == jobInfo.sync_reg_exp; clear jobInfo.sync_reg_idx;&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12px;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre; font-size: 12px;&quot;&gt;&#x9;&lt;/span&gt;2.1.3 push job_done&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12px;&quot;&gt;&#x9;&lt;/span&gt;2.2 chipx&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12px;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre; font-size: 12px;&quot;&gt;&#x9;&lt;/span&gt;2.2.1 if (jobInfo.ccu_en) polling ccu_done&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;2&lt;/span&gt;.2.2 write_remote_sync_unit(jobInfo.sync_reg_idx, op(+1));" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="-520" y="560" width="520" height="240" as="geometry" />
</mxCell>
<mxCell id="F161TMbsHR6VZL9ehucd-1" value="" style="endArrow=classic;html=1;rounded=0;fontSize=12;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="260" y="680" as="sourcePoint" />
<mxPoint x="150" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="F161TMbsHR6VZL9ehucd-2" value="Job Done" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="F161TMbsHR6VZL9ehucd-1" vertex="1" connectable="0">
<mxGeometry x="0.1262" y="-1" relative="1" as="geometry">
<mxPoint x="12" y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="F161TMbsHR6VZL9ehucd-3" value="HOST" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="80" y="120" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="yjv4cu9iE-W4nzvc3sZl-1" value="JobInfo {&lt;br&gt;&amp;nbsp; jobId = {id};&lt;br&gt;&amp;nbsp; jobPingPong = {ping, pong};&lt;br&gt;&amp;nbsp; jobChipArch = {schip, mchip};&lt;br&gt;&amp;nbsp; jobMchpSyncRegIdx = {index};&lt;br&gt;&amp;nbsp; jobMchpSyncRegExp = {n};&lt;br&gt;&amp;nbsp; jobCurCcuEn = {true, false};&lt;br&gt;&amp;nbsp; jobCurCpuEn = {true};&lt;br&gt;};" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="-520" y="40" width="520" height="120" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-1" value="CPU" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="1120" y="120.00000000000001" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-2" value="CCU" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="1520" y="120.00000000000001" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-3" value="Start" style="rounded=0;whiteSpace=wrap;html=1;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="1120" y="200" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-5" value="" style="endArrow=classic;html=1;rounded=0;fontSize=12;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="990" y="200" as="sourcePoint" />
<mxPoint x="1100" y="200" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-6" value="Job Start" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="5Su-P1HTbWHp4YXqfi5x-5" vertex="1" connectable="0">
<mxGeometry x="0.1262" y="-1" relative="1" as="geometry">
<mxPoint x="-3" y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-7" value="End" style="rounded=0;whiteSpace=wrap;html=1;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="1120" y="560" width="80" height="120" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-8" value="runtime" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="1000" y="220" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-9" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;labelPosition=left;verticalLabelPosition=middle;align=right;verticalAlign=middle;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="1100" y="200" width="20" height="80" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-12" value="runtime" style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="960" y="600" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-13" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;labelPosition=left;verticalLabelPosition=middle;align=right;verticalAlign=middle;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="1100" y="560" width="20" height="120" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-14" value="" style="endArrow=classic;html=1;rounded=0;fontSize=12;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1210" y="280.31" as="sourcePoint" />
<mxPoint x="1510" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-15" value="CCU Start" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="5Su-P1HTbWHp4YXqfi5x-14" vertex="1" connectable="0">
<mxGeometry x="0.25" relative="1" as="geometry">
<mxPoint x="-27" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-16" value="Calc" style="rounded=0;whiteSpace=wrap;html=1;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="1520" y="280" width="80" height="240" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-17" value="End" style="rounded=0;whiteSpace=wrap;html=1;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="1520" y="520" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-29" value="" style="endArrow=classic;html=1;rounded=0;fontSize=12;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1100" y="680" as="sourcePoint" />
<mxPoint x="990" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-30" value="Job Done" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="5Su-P1HTbWHp4YXqfi5x-29" vertex="1" connectable="0">
<mxGeometry x="0.1262" y="-1" relative="1" as="geometry">
<mxPoint x="12" y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-31" value="HOST" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="920" y="120.00000000000001" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-33" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1160" y="540" as="sourcePoint" />
<mxPoint x="1160" y="300" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-34" value="Mchip Runtime Flow" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="80" y="40" width="200" height="40" as="geometry" />
</mxCell>
<mxCell id="5Su-P1HTbWHp4YXqfi5x-35" value="Schip Runtime Flow" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" parent="1" vertex="1">
<mxGeometry x="920" y="40" width="200" height="40" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="k9IGYZkrFEUXVz7xOHqi" name="Ping-pong_hostSide_design">
<mxGraphModel dx="1194" dy="663" 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="79QYY43FKgEBDrAf7__8-26" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="140" y="170" width="110" height="210" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-22" value="" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="79QYY43FKgEBDrAf7__8-26" vertex="1">
<mxGeometry width="110" height="210" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-25" value="Host" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="79QYY43FKgEBDrAf7__8-26" vertex="1">
<mxGeometry y="10" width="40" height="10" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=-0.004;entryY=0.098;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="79QYY43FKgEBDrAf7__8-1" target="79QYY43FKgEBDrAf7__8-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-7" value="ping" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="79QYY43FKgEBDrAf7__8-5" vertex="1" connectable="0">
<mxGeometry x="-0.3211" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" parent="1" source="79QYY43FKgEBDrAf7__8-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="630" y="245" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-8" value="pong" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="79QYY43FKgEBDrAf7__8-6" vertex="1" connectable="0">
<mxGeometry x="-0.332" y="-2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-1" value="in-sw-queue" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="380" y="200" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=-0.015;exitY=0.905;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;exitPerimeter=0;" parent="1" source="79QYY43FKgEBDrAf7__8-3" target="79QYY43FKgEBDrAf7__8-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-12" value="pong" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="79QYY43FKgEBDrAf7__8-10" vertex="1" connectable="0">
<mxGeometry x="0.1386" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1.013;entryY=0.911;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="79QYY43FKgEBDrAf7__8-2" target="79QYY43FKgEBDrAf7__8-4" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-2" value="out-sw-queue" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="380" y="300" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" parent="1" source="79QYY43FKgEBDrAf7__8-3" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="500" y="320" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-11" value="ping" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="79QYY43FKgEBDrAf7__8-9" vertex="1" connectable="0">
<mxGeometry x="0.1485" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-3" value="DEV" style="whiteSpace=wrap;html=1;aspect=fixed;" parent="1" vertex="1">
<mxGeometry x="630" y="200" width="160" height="160" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.004;entryY=0.671;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="79QYY43FKgEBDrAf7__8-4" target="79QYY43FKgEBDrAf7__8-1" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-4" value="istream0...ostream0&lt;br&gt;istream1...ostream1&lt;br&gt;istream2...ostream2&lt;br&gt;...&lt;br&gt;istream5...ostream5&lt;br&gt;istream6...ostream6" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="150" y="200" width="120" height="160" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-18" value="multi-threads submit job" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="290" y="200" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-19" value="multi-threads get job done" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="290" y="300" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="79QYY43FKgEBDrAf7__8-21" value="two thread: ping and pong, pull job from in-sw-queue to dev. Then wait dev done and push done signal to out-sw-queue" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="460" y="140" width="230" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>