aboutsummaryrefslogtreecommitdiff
path: root/docs/driver_library_sequence.svg
diff options
context:
space:
mode:
authorMikael Olsson <mikael.olsson@arm.com>2023-10-30 11:10:56 +0100
committerMikael Olsson <mikael.olsson@arm.com>2023-11-06 09:36:00 +0100
commitc081e5954cd92165b139488e76bdfef1402acee6 (patch)
tree32bc237c124e21f12287150cba040c87c8e8b7e3 /docs/driver_library_sequence.svg
parent9c999fdd40c0bf2ae420f6f3bfe013dc6baa73c1 (diff)
downloadethos-u-linux-driver-stack-c081e5954cd92165b139488e76bdfef1402acee6.tar.gz
Change create network UAPI to take a user buffer
To not allow the buffer for a network instance to be changed after creation, the create network UAPI will now take the network model data as a user buffer. The content of the user buffer is copied into an internally allocated DMA buffer that cannot be accessed by the user. This breaks the current API so the Linux kernel NPU driver version and the driver library version have been given major version bumps. All the tests, documentation and other applications affected by the changes have been updated accordingly. Change-Id: I25c785d75a24794c3db632e4abe5cfbb1c7ac190 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
Diffstat (limited to 'docs/driver_library_sequence.svg')
-rw-r--r--docs/driver_library_sequence.svg18
1 files changed, 4 insertions, 14 deletions
diff --git a/docs/driver_library_sequence.svg b/docs/driver_library_sequence.svg
index 1103a05..b1ac54c 100644
--- a/docs/driver_library_sequence.svg
+++ b/docs/driver_library_sequence.svg
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1083px" preserveAspectRatio="none" style="width:831px;height:1083px;background:#FEFEFE;" version="1.1" viewBox="0 0 831 1083" width="831px" zoomAndPan="magnify"><defs><filter height="300%" id="f528w0w85mfwd" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#0091BD" height="1068.3125" style="stroke: #A80036; stroke-width: 1.0;" width="89" x="9" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="83" x="12" y="16.0669">Application</text><rect fill="#00C1DE" height="1068.3125" style="stroke: #A80036; stroke-width: 1.0;" width="389" x="109" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="96" x="255.5" y="16.0669">Driver library</text><rect fill="#7D868C" height="1068.3125" style="stroke: #A80036; stroke-width: 1.0;" width="320" x="500" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="95" x="612.5" y="16.0669">Kernel driver</text><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="956.5859" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="48.5" y="68.4297"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="140.5" y="128.5625"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="269.0938"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="577.2891"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="709.8203"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="114.5313" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="289.5" y="409.625"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="447.5" y="857.3516"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="57.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="447.5" y="958.75"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="531.5" y="157.6953"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="298.2266"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="606.4219"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="738.9531"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="680.5" y="438.7578"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="769.5" y="886.4844"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="14.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="769.5" y="987.8828"/><rect fill="#FEFEFE" filter="url(#f528w0w85mfwd)" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="635" x="13" y="539.1563"/><rect fill="#FEFEFE" filter="url(#f528w0w85mfwd)" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="635" x="13" y="671.6875"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="53" x2="53" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="145" x2="145" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="217" x2="217" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="294" x2="294" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="452" x2="452" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="536" x2="536" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="608" x2="608" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="685" x2="685" y1="58.4297" y2="1034.0156"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="774" x2="774" y1="58.4297" y2="1034.0156"/><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="23" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="30" y="43.1279">main()</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="23" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="30" y="1053.0107">main()</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="113" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="120" y="43.1279">Device</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="113" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="120" y="1053.0107">Device</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="188" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="195" y="43.1279">Buffer</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="188" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="195" y="1053.0107">Buffer</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="257" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="264" y="43.1279">Network</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="257" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="264" y="1053.0107">Network</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="411" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="418" y="43.1279">Inference</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="411" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="418" y="1053.0107">Inference</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="504" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="511" y="43.1279">Device</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="504" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="511" y="1053.0107">Device</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="579" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="586" y="43.1279">Buffer</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="579" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="586" y="1053.0107">Buffer</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="648" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="655" y="43.1279">Network</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="648" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="655" y="1053.0107">Network</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="733" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="740" y="43.1279">Inference</text><rect fill="#FEFECE" filter="url(#f528w0w85mfwd)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="733" y="1033.0156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="740" y="1053.0107">Inference</text><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="956.5859" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="48.5" y="68.4297"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="140.5" y="128.5625"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="269.0938"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="577.2891"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="709.8203"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="114.5313" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="289.5" y="409.625"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="72.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="447.5" y="857.3516"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="57.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="447.5" y="958.75"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="531.5" y="157.6953"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="298.2266"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="606.4219"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="603.5" y="738.9531"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="680.5" y="438.7578"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="769.5" y="886.4844"/><rect fill="#FFFFFF" filter="url(#f528w0w85mfwd)" height="14.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="769.5" y="987.8828"/><polygon fill="#FBFB77" filter="url(#f528w0w85mfwd)" points="89,73.4297,89,98.4297,198,98.4297,198,83.4297,188,73.4297,89,73.4297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="188" x2="188" y1="73.4297" y2="83.4297"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="198" x2="188" y1="83.4297" y2="83.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="95" y="90.4966">Create device</text><polygon fill="#A80036" points="128.5,124.5625,138.5,128.5625,128.5,132.5625,132.5,128.5625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="134.5" y1="128.5625" y2="128.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="53" x="65.5" y="123.6294">Device()</text><polygon fill="#A80036" points="519.5,153.6953,529.5,157.6953,519.5,161.6953,523.5,157.6953" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="150.5" x2="525.5" y1="157.6953" y2="157.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="141" x="157.5" y="152.7622">open(&lt;device node&gt;)</text><polygon fill="#A80036" points="161.5,182.8281,151.5,186.8281,161.5,190.8281,157.5,186.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="155.5" x2="535.5" y1="186.8281" y2="186.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="167.5" y="181.895">file descriptor</text><polygon fill="#A80036" points="69.5,196.9609,59.5,200.9609,69.5,204.9609,65.5,200.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="144.5" y1="200.9609" y2="200.9609"/><polygon fill="#FBFB77" filter="url(#f528w0w85mfwd)" points="186,213.9609,186,238.9609,398,238.9609,398,223.9609,388,213.9609,186,213.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="388" x2="388" y1="213.9609" y2="223.9609"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="398" x2="388" y1="223.9609" y2="223.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="191" x="192" y="231.0278">Allocate and fill network buffer</text><polygon fill="#A80036" points="200.5,265.0938,210.5,269.0938,200.5,273.0938,204.5,269.0938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="206.5" y1="269.0938" y2="269.0938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="65.5" y="264.1606">Buffer(device)</text><polygon fill="#A80036" points="591.5,294.2266,601.5,298.2266,591.5,302.2266,595.5,298.2266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="597.5" y1="298.2266" y2="298.2266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="141" x="229.5" y="293.2935">ioctl(BUFFER_CREATE)</text><polygon fill="#A80036" points="233.5,323.3594,223.5,327.3594,233.5,331.3594,229.5,327.3594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="227.5" x2="607.5" y1="327.3594" y2="327.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="239.5" y="322.4263">file descriptor</text><polygon fill="#A80036" points="69.5,337.4922,59.5,341.4922,69.5,345.4922,65.5,341.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="216.5" y1="341.4922" y2="341.4922"/><polygon fill="#FBFB77" filter="url(#f528w0w85mfwd)" points="162,354.4922,162,379.4922,422,379.4922,422,364.4922,412,354.4922,162,354.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="412" x2="412" y1="354.4922" y2="364.4922"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="422" x2="412" y1="364.4922" y2="364.4922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="239" x="168" y="371.5591">Create network, parse network model</text><polygon fill="#A80036" points="277.5,405.625,287.5,409.625,277.5,413.625,281.5,409.625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="283.5" y1="409.625" y2="409.625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="148" x="65.5" y="404.6919">Network(device, buffer)</text><polygon fill="#A80036" points="668.5,434.7578,678.5,438.7578,668.5,442.7578,672.5,438.7578" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="299.5" x2="674.5" y1="438.7578" y2="438.7578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="154" x="306.5" y="433.8247">ioctl(NETWORK_CREATE)</text><polygon fill="#A80036" points="310.5,463.8906,300.5,467.8906,310.5,471.8906,306.5,467.8906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="304.5" x2="684.5" y1="467.8906" y2="467.8906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="316.5" y="462.9575">file descriptor</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="299.5" x2="341.5" y1="497.1563" y2="497.1563"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="341.5" x2="341.5" y1="497.1563" y2="510.1563"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="300.5" x2="341.5" y1="510.1563" y2="510.1563"/><polygon fill="#A80036" points="310.5,506.1563,300.5,510.1563,310.5,514.1563,306.5,510.1563" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="306.5" y="492.0903">Parse network model</text><polygon fill="#A80036" points="69.5,520.1563,59.5,524.1563,69.5,528.1563,65.5,524.1563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="293.5" y1="524.1563" y2="524.1563"/><rect fill="none" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="635" x="13" y="539.1563"/><polygon fill="#EEEEEE" points="13,539.1563,90,539.1563,90,546.1563,80,556.1563,13,556.1563,13,539.1563" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="32" x="28" y="552.2231">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="188" x="105" y="551.3667">[Allocate and fill IFM buffers]</text><polygon fill="#A80036" points="200.5,573.2891,210.5,577.2891,200.5,581.2891,204.5,577.2891" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="206.5" y1="577.2891" y2="577.2891"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="65.5" y="572.356">Buffer(device)</text><polygon fill="#A80036" points="591.5,602.4219,601.5,606.4219,591.5,610.4219,595.5,606.4219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="597.5" y1="606.4219" y2="606.4219"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="141" x="229.5" y="601.4888">ioctl(BUFFER_CREATE)</text><polygon fill="#A80036" points="233.5,631.5547,223.5,635.5547,233.5,639.5547,229.5,635.5547" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="227.5" x2="607.5" y1="635.5547" y2="635.5547"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="239.5" y="630.6216">file descriptor</text><polygon fill="#A80036" points="69.5,645.6875,59.5,649.6875,69.5,653.6875,65.5,649.6875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="216.5" y1="649.6875" y2="649.6875"/><rect fill="none" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="635" x="13" y="671.6875"/><polygon fill="#EEEEEE" points="13,671.6875,90,671.6875,90,678.6875,80,688.6875,13,688.6875,13,671.6875" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="32" x="28" y="684.7544">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="145" x="105" y="683.8979">[Allocate OFM buffers]</text><polygon fill="#A80036" points="200.5,705.8203,210.5,709.8203,200.5,713.8203,204.5,709.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="206.5" y1="709.8203" y2="709.8203"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="65.5" y="704.8872">Buffer(device)</text><polygon fill="#A80036" points="591.5,734.9531,601.5,738.9531,591.5,742.9531,595.5,738.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="597.5" y1="738.9531" y2="738.9531"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="141" x="229.5" y="734.02">ioctl(BUFFER_CREATE)</text><polygon fill="#A80036" points="233.5,764.0859,223.5,768.0859,233.5,772.0859,229.5,768.0859" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="227.5" x2="607.5" y1="768.0859" y2="768.0859"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="239.5" y="763.1528">file descriptor</text><polygon fill="#A80036" points="69.5,778.2188,59.5,782.2188,69.5,786.2188,65.5,782.2188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="216.5" y1="782.2188" y2="782.2188"/><polygon fill="#FBFB77" filter="url(#f528w0w85mfwd)" points="360,802.2188,360,827.2188,540,827.2188,540,812.2188,530,802.2188,360,802.2188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="530" x2="530" y1="802.2188" y2="812.2188"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="540" x2="530" y1="812.2188" y2="812.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="159" x="366" y="819.2856">Create and run inference</text><polygon fill="#A80036" points="435.5,853.3516,445.5,857.3516,435.5,861.3516,439.5,857.3516" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="441.5" y1="857.3516" y2="857.3516"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="180" x="65.5" y="852.4185">Inference(network, ifm, ofm)</text><polygon fill="#A80036" points="757.5,882.4844,767.5,886.4844,757.5,890.4844,761.5,886.4844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="457.5" x2="763.5" y1="886.4844" y2="886.4844"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="163" x="464.5" y="881.5513">ioctl(INFERENCE_CREATE)</text><polygon fill="#A80036" points="468.5,911.6172,458.5,915.6172,468.5,919.6172,464.5,915.6172" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="462.5" x2="773.5" y1="915.6172" y2="915.6172"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="474.5" y="910.6841">file descriptor</text><polygon fill="#A80036" points="69.5,925.75,59.5,929.75,69.5,933.75,65.5,929.75" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="451.5" y1="929.75" y2="929.75"/><polygon fill="#A80036" points="435.5,954.75,445.5,958.75,435.5,962.75,439.5,958.75" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="441.5" y1="958.75" y2="958.75"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="121" x="65.5" y="953.8169">wait(file descriptor)</text><polygon fill="#A80036" points="757.5,983.8828,767.5,987.8828,757.5,991.8828,761.5,987.8828" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="457.5" x2="763.5" y1="987.8828" y2="987.8828"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="118" x="464.5" y="982.9497">poll(file descriptor)</text><polygon fill="#A80036" points="468.5,998.0156,458.5,1002.0156,468.5,1006.0156,464.5,1002.0156" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="462.5" x2="773.5" y1="1002.0156" y2="1002.0156"/><polygon fill="#A80036" points="69.5,1012.0156,59.5,1016.0156,69.5,1020.0156,65.5,1016.0156" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="451.5" y1="1016.0156" y2="1016.0156"/><!--
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="942px" preserveAspectRatio="none" style="width:845px;height:942px;background:#FEFEFE;" version="1.1" viewBox="0 0 845 942" width="845px" zoomAndPan="magnify"><defs><filter height="300%" id="f105wwwd7nmw4q" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#0091BD" height="927.7813" style="stroke: #A80036; stroke-width: 1.0;" width="89" x="9" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="83" x="12" y="16.0669">Application</text><rect fill="#00C1DE" height="927.7813" style="stroke: #A80036; stroke-width: 1.0;" width="403" x="109" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="96" x="262.5" y="16.0669">Driver library</text><rect fill="#7D868C" height="927.7813" style="stroke: #A80036; stroke-width: 1.0;" width="320" x="514" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="95" x="626.5" y="16.0669">Kernel driver</text><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="816.0547" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="48.5" y="68.4297"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="72.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="140.5" y="128.6953"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="72.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="436.8906"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="72.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="569.4219"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="114.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="303.5" y="269.2266"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="72.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="461.5" y="716.9531"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="57.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="461.5" y="818.3516"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="545.5" y="157.8281"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="617.5" y="466.0234"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="617.5" y="598.5547"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="694.5" y="298.3594"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="783.5" y="746.0859"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="14" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="783.5" y="847.4844"/><rect fill="#FEFEFE" filter="url(#f105wwwd7nmw4q)" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="649" x="13" y="398.625"/><rect fill="#FEFEFE" filter="url(#f105wwwd7nmw4q)" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="649" x="13" y="531.1563"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="53" x2="53" y1="58.4297" y2="893.4844"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="145" x2="145" y1="58.4297" y2="893.4844"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="217" x2="217" y1="58.4297" y2="893.4844"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="308" x2="308" y1="58.4297" y2="893.4844"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="466" x2="466" y1="58.4297" y2="893.4844"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="550" x2="550" y1="58.4297" y2="893.4844"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="622" x2="622" y1="58.4297" y2="893.4844"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="699" x2="699" y1="58.4297" y2="893.4844"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="788" x2="788" y1="58.4297" y2="893.4844"/><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="23" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="30" y="43.1279">main()</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="23" y="892.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="30" y="912.4795">main()</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="113" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="120" y="43.1279">Device</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="113" y="892.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="120" y="912.4795">Device</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="188" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="195" y="43.1279">Buffer</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="188" y="892.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="195" y="912.4795">Buffer</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="271" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="278" y="43.1279">Network</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="271" y="892.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="278" y="912.4795">Network</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="425" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="432" y="43.1279">Inference</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="425" y="892.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="432" y="912.4795">Inference</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="518" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="525" y="43.1279">Device</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="518" y="892.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="525" y="912.4795">Device</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="593" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="600" y="43.1279">Buffer</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="593" y="892.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="600" y="912.4795">Buffer</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="662" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="669" y="43.1279">Network</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="662" y="892.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="669" y="912.4795">Network</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="747" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="754" y="43.1279">Inference</text><rect fill="#FEFECE" filter="url(#f105wwwd7nmw4q)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="747" y="892.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="754" y="912.4795">Inference</text><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="816.0547" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="48.5" y="68.4297"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="72.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="140.5" y="128.6953"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="72.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="436.8906"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="72.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="212.5" y="569.4219"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="114.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="303.5" y="269.2266"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="72.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="461.5" y="716.9531"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="57.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="461.5" y="818.3516"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="545.5" y="157.8281"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="617.5" y="466.0234"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="617.5" y="598.5547"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="694.5" y="298.3594"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="783.5" y="746.0859"/><rect fill="#FFFFFF" filter="url(#f105wwwd7nmw4q)" height="14" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="783.5" y="847.4844"/><path d="M89,73.4297 L89,98.4297 L198,98.4297 L198,83.4297 L188,73.4297 L89,73.4297 " fill="#FBFB77" filter="url(#f105wwwd7nmw4q)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M188,73.4297 L188,83.4297 L198,83.4297 L188,73.4297 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="95" y="90.4966">Create device</text><polygon fill="#A80036" points="128.5,124.6953,138.5,128.6953,128.5,132.6953,132.5,128.6953" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="134.5" y1="128.6953" y2="128.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="53" x="65.5" y="123.6294">Device()</text><polygon fill="#A80036" points="533.5,153.8281,543.5,157.8281,533.5,161.8281,537.5,157.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="150.5" x2="539.5" y1="157.8281" y2="157.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="141" x="157.5" y="152.7622">open(&lt;device node&gt;)</text><polygon fill="#A80036" points="161.5,182.9609,151.5,186.9609,161.5,190.9609,157.5,186.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="155.5" x2="549.5" y1="186.9609" y2="186.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="167.5" y="181.895">file descriptor</text><polygon fill="#A80036" points="69.5,196.9609,59.5,200.9609,69.5,204.9609,65.5,200.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="144.5" y1="200.9609" y2="200.9609"/><path d="M176,213.9609 L176,238.9609 L436,238.9609 L436,223.9609 L426,213.9609 L176,213.9609 " fill="#FBFB77" filter="url(#f105wwwd7nmw4q)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M426,213.9609 L426,223.9609 L436,223.9609 L426,213.9609 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="239" x="182" y="231.0278">Create network, parse network model</text><polygon fill="#A80036" points="291.5,265.2266,301.5,269.2266,291.5,273.2266,295.5,269.2266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="297.5" y1="269.2266" y2="269.2266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="216" x="65.5" y="264.1606">Network(device, user_buffer, size)</text><polygon fill="#A80036" points="682.5,294.3594,692.5,298.3594,682.5,302.3594,686.5,298.3594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="313.5" x2="688.5" y1="298.3594" y2="298.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="154" x="320.5" y="293.2935">ioctl(NETWORK_CREATE)</text><polygon fill="#A80036" points="324.5,323.4922,314.5,327.4922,324.5,331.4922,320.5,327.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="318.5" x2="698.5" y1="327.4922" y2="327.4922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="330.5" y="322.4263">file descriptor</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="313.5" x2="355.5" y1="356.625" y2="356.625"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="355.5" x2="355.5" y1="356.625" y2="369.625"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="314.5" x2="355.5" y1="369.625" y2="369.625"/><polygon fill="#A80036" points="324.5,365.625,314.5,369.625,324.5,373.625,320.5,369.625" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="320.5" y="351.5591">Parse network model</text><polygon fill="#A80036" points="69.5,379.625,59.5,383.625,69.5,387.625,65.5,383.625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="307.5" y1="383.625" y2="383.625"/><path d="M13,398.625 L90,398.625 L90,405.625 L80,415.625 L13,415.625 L13,398.625 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="649" x="13" y="398.625"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="32" x="28" y="411.6919">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="188" x="105" y="410.8354">[Allocate and fill IFM buffers]</text><polygon fill="#A80036" points="200.5,432.8906,210.5,436.8906,200.5,440.8906,204.5,436.8906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="206.5" y1="436.8906" y2="436.8906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="65.5" y="431.8247">Buffer(device)</text><polygon fill="#A80036" points="605.5,462.0234,615.5,466.0234,605.5,470.0234,609.5,466.0234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="611.5" y1="466.0234" y2="466.0234"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="141" x="229.5" y="460.9575">ioctl(BUFFER_CREATE)</text><polygon fill="#A80036" points="233.5,491.1563,223.5,495.1563,233.5,499.1563,229.5,495.1563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="227.5" x2="621.5" y1="495.1563" y2="495.1563"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="239.5" y="490.0903">file descriptor</text><polygon fill="#A80036" points="69.5,505.1563,59.5,509.1563,69.5,513.1563,65.5,509.1563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="216.5" y1="509.1563" y2="509.1563"/><path d="M13,531.1563 L90,531.1563 L90,538.1563 L80,548.1563 L13,548.1563 L13,531.1563 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="118.5313" style="stroke: #000000; stroke-width: 2.0;" width="649" x="13" y="531.1563"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="32" x="28" y="544.2231">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="145" x="105" y="543.3667">[Allocate OFM buffers]</text><polygon fill="#A80036" points="200.5,565.4219,210.5,569.4219,200.5,573.4219,204.5,569.4219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="206.5" y1="569.4219" y2="569.4219"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="65.5" y="564.356">Buffer(device)</text><polygon fill="#A80036" points="605.5,594.5547,615.5,598.5547,605.5,602.5547,609.5,598.5547" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="611.5" y1="598.5547" y2="598.5547"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="141" x="229.5" y="593.4888">ioctl(BUFFER_CREATE)</text><polygon fill="#A80036" points="233.5,623.6875,223.5,627.6875,233.5,631.6875,229.5,627.6875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="227.5" x2="621.5" y1="627.6875" y2="627.6875"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="239.5" y="622.6216">file descriptor</text><polygon fill="#A80036" points="69.5,637.6875,59.5,641.6875,69.5,645.6875,65.5,641.6875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="216.5" y1="641.6875" y2="641.6875"/><path d="M374,661.6875 L374,686.6875 L554,686.6875 L554,671.6875 L544,661.6875 L374,661.6875 " fill="#FBFB77" filter="url(#f105wwwd7nmw4q)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M544,661.6875 L544,671.6875 L554,671.6875 L544,661.6875 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="159" x="380" y="678.7544">Create and run inference</text><polygon fill="#A80036" points="449.5,712.9531,459.5,716.9531,449.5,720.9531,453.5,716.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="455.5" y1="716.9531" y2="716.9531"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="180" x="65.5" y="711.8872">Inference(network, ifm, ofm)</text><polygon fill="#A80036" points="771.5,742.0859,781.5,746.0859,771.5,750.0859,775.5,746.0859" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="471.5" x2="777.5" y1="746.0859" y2="746.0859"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="163" x="478.5" y="741.02">ioctl(INFERENCE_CREATE)</text><polygon fill="#A80036" points="482.5,771.2188,472.5,775.2188,482.5,779.2188,478.5,775.2188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="476.5" x2="787.5" y1="775.2188" y2="775.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="488.5" y="770.1528">file descriptor</text><polygon fill="#A80036" points="69.5,785.2188,59.5,789.2188,69.5,793.2188,65.5,789.2188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="465.5" y1="789.2188" y2="789.2188"/><polygon fill="#A80036" points="449.5,814.3516,459.5,818.3516,449.5,822.3516,453.5,818.3516" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58.5" x2="455.5" y1="818.3516" y2="818.3516"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="121" x="65.5" y="813.2856">wait(file descriptor)</text><polygon fill="#A80036" points="771.5,843.4844,781.5,847.4844,771.5,851.4844,775.5,847.4844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="471.5" x2="777.5" y1="847.4844" y2="847.4844"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="118" x="478.5" y="842.4185">poll(file descriptor)</text><polygon fill="#A80036" points="482.5,857.4844,472.5,861.4844,482.5,865.4844,478.5,861.4844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="476.5" x2="787.5" y1="861.4844" y2="861.4844"/><polygon fill="#A80036" points="69.5,871.4844,59.5,875.4844,69.5,879.4844,65.5,875.4844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="63.5" x2="465.5" y1="875.4844" y2="875.4844"/><!--MD5=[aa4ced5da24ed5aa951387ff7db834b9]
@startuml
skinparam backgroundColor #FEFEFE
@@ -31,19 +31,10 @@ main -> ddev++: Device()
return
note over dnet
- Allocate and fill network buffer
-end note
-
-main -> dbuf++: Buffer(device)
- dbuf -> kbuf++: ioctl(BUFFER_CREATE)
- return file descriptor
-return
-
-note over dnet
Create network, parse network model
end note
-main -> dnet++: Network(device, buffer)
+main -> dnet++: Network(device, user_buffer, size)
dnet -> knet++: ioctl(NETWORK_CREATE)
return file descriptor
@@ -79,13 +70,12 @@ return
@enduml
-PlantUML version 1.2017.15(Mon Jul 03 18:45:34 CEST 2017)
+PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
-Java Version: 11.0.11+9-Ubuntu-0ubuntu2.18.04
+Java Version: 11.0.20.1+1-post-Ubuntu-0ubuntu122.04
Operating System: Linux
-OS Version: 5.4.0-73-generic
Default Encoding: UTF-8
Language: en
Country: US