blob: 2b8f753ebf58b90defa945df6c297042073dc934 [file] [log] [blame]
Mikael Olssonc081e592023-10-30 11:10:56 +01001<?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="380px" preserveAspectRatio="none" style="width:1029px;height:380px;background:#FEFEFE;" version="1.1" viewBox="0 0 1029 380" width="1029px" zoomAndPan="magnify"><defs><filter height="300%" id="fppms3ru5k1wp" 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="365.7891" style="stroke: #A80036; stroke-width: 1.0;" width="89" x="99" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="83" x="102" y="16.0669">Application</text><rect fill="#00C1DE" height="365.7891" style="stroke: #A80036; stroke-width: 1.0;" width="343" x="190" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="96" x="313.5" y="16.0669">Driver library</text><rect fill="#7D868C" height="365.7891" style="stroke: #A80036; stroke-width: 1.0;" width="356" x="658" y="4"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="95" x="788.5" y="16.0669">Kernel driver</text><rect fill="#FFFFFF" filter="url(#fppms3ru5k1wp)" height="254.0625" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="138.5" y="68.4297"/><rect fill="#FFFFFF" filter="url(#fppms3ru5k1wp)" height="169.6641" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="393.5" y="143.8281"/><rect fill="#FFFFFF" filter="url(#fppms3ru5k1wp)" height="126.5313" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="689.5" y="172.9609"/><rect fill="#FFFFFF" filter="url(#fppms3ru5k1wp)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="874.5" y="241.2266"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="143" x2="143" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="226" x2="226" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="298" x2="298" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="398" x2="398" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="487" x2="487" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="694" x2="694" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="766" x2="766" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="879" x2="879" y1="58.4297" y2="331.4922"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="968" x2="968" y1="58.4297" y2="331.4922"/><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="113" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="120" y="43.1279">main()</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="113" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="120" y="350.4873">main()</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="194" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="201" y="43.1279">Device</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="194" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="201" y="350.4873">Device</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="269" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="276" y="43.1279">Buffer</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="269" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="276" y="350.4873">Buffer</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="361" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="368" y="43.1279">Network</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="361" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="368" y="350.4873">Network</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="446" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="453" y="43.1279">Inference</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="446" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="453" y="350.4873">Inference</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="662" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="669" y="43.1279">Device</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="662" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="669" y="350.4873">Device</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="737" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="744" y="43.1279">Buffer</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="737" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="744" y="350.4873">Buffer</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="842" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="849" y="43.1279">Network</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="842" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="849" y="350.4873">Network</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="927" y="23.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="934" y="43.1279">Inference</text><rect fill="#FEFECE" filter="url(#fppms3ru5k1wp)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="927" y="330.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="934" y="350.4873">Inference</text><rect fill="#FFFFFF" filter="url(#fppms3ru5k1wp)" height="254.0625" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="138.5" y="68.4297"/><rect fill="#FFFFFF" filter="url(#fppms3ru5k1wp)" height="169.6641" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="393.5" y="143.8281"/><rect fill="#FFFFFF" filter="url(#fppms3ru5k1wp)" height="126.5313" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="689.5" y="172.9609"/><rect fill="#FFFFFF" filter="url(#fppms3ru5k1wp)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="874.5" y="241.2266"/><path d="M8,73.4297 L8,113.4297 L276,113.4297 L276,83.4297 L266,73.4297 L8,73.4297 " fill="#FBFB77" filter="url(#fppms3ru5k1wp)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M266,73.4297 L266,83.4297 L276,83.4297 L266,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="14" y="90.4966">Create device</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="247" x="14" y="105.6294">Provide user buffer with network model</text><polygon fill="#A80036" points="381.5,139.8281,391.5,143.8281,381.5,147.8281,385.5,143.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="148.5" x2="387.5" y1="143.8281" y2="143.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="216" x="155.5" y="138.7622">Network(device, user_buffer, size)</text><polygon fill="#A80036" points="677.5,168.9609,687.5,172.9609,677.5,176.9609,681.5,172.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="403.5" x2="683.5" y1="172.9609" y2="172.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="410.5" y="167.895">ioctl(NETWORK_CREATE, user_buffer, size)</text><path d="M738,185.9609 L738,210.9609 L1017,210.9609 L1017,195.9609 L1007,185.9609 L738,185.9609 " fill="#FBFB77" filter="url(#fppms3ru5k1wp)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1007,185.9609 L1007,195.9609 L1017,195.9609 L1007,185.9609 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="258" x="744" y="203.0278">Create network and return file descriptor</text><polygon fill="#A80036" points="862.5,237.2266,872.5,241.2266,862.5,245.2266,866.5,241.2266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="699.5" x2="868.5" y1="241.2266" y2="241.2266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="156" x="706.5" y="236.1606">create(user_buffer, size)</text><polygon fill="#A80036" points="710.5,266.3594,700.5,270.3594,710.5,274.3594,706.5,270.3594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="704.5" x2="878.5" y1="270.3594" y2="270.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="716.5" y="265.2935">file descriptor</text><polygon fill="#A80036" points="414.5,295.4922,404.5,299.4922,414.5,303.4922,410.5,299.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="408.5" x2="693.5" y1="299.4922" y2="299.4922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="420.5" y="294.4263">file descriptor</text><polygon fill="#A80036" points="159.5,309.4922,149.5,313.4922,159.5,317.4922,155.5,313.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="153.5" x2="397.5" y1="313.4922" y2="313.4922"/><!--MD5=[237279265ff59fe4aa02ccba32edf4aa]
Kristofer Jonsson0c79f892021-06-02 17:15:57 +02002@startuml
3
4skinparam backgroundColor #FEFEFE
5
6box "Application" #0091BD
7participant "main()" as main
8end box
9
10box "Driver library" #00C1DE
11participant "Device" as ddev
12participant "Buffer" as dbuf
13participant "Network" as dnet
14participant "Inference" as dinf
15end box
16
17box "Kernel driver" #7D868C
18participant "Device" as kdev
19participant "Buffer" as kbuf
20participant "Network" as knet
21participant "Inference" as kinf
22end box
23
24activate main
25
26note over main
27 Create device
Mikael Olssonc081e592023-10-30 11:10:56 +010028 Provide user buffer with network model
Kristofer Jonsson0c79f892021-06-02 17:15:57 +020029end note
30
Mikael Olssonc081e592023-10-30 11:10:56 +010031main -> dnet++: Network(device, user_buffer, size)
32 dnet -> kdev++: ioctl(NETWORK_CREATE, user_buffer, size)
Kristofer Jonsson0c79f892021-06-02 17:15:57 +020033 note over knet
34 Create network and return file descriptor
35 end note
36
Mikael Olssonc081e592023-10-30 11:10:56 +010037 kdev -> knet++: create(user_buffer, size)
Kristofer Jonsson0c79f892021-06-02 17:15:57 +020038 return file descriptor
39 return file descriptor
40return
41
42@enduml
43
Mikael Olssonc081e592023-10-30 11:10:56 +010044PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
Kristofer Jonsson0c79f892021-06-02 17:15:57 +020045(GPL source distribution)
46Java Runtime: OpenJDK Runtime Environment
47JVM: OpenJDK 64-Bit Server VM
Mikael Olssonc081e592023-10-30 11:10:56 +010048Java Version: 11.0.20.1+1-post-Ubuntu-0ubuntu122.04
Kristofer Jonsson0c79f892021-06-02 17:15:57 +020049Operating System: Linux
Kristofer Jonsson0c79f892021-06-02 17:15:57 +020050Default Encoding: UTF-8
51Language: en
52Country: US
53--></g></svg>