aboutsummaryrefslogtreecommitdiff
path: root/docs/kernel_network.svg
blob: 2b8f753ebf58b90defa945df6c297042073dc934 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?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]
@startuml

skinparam backgroundColor #FEFEFE

box "Application" #0091BD
participant "main()" as main
end box

box "Driver library" #00C1DE
participant "Device" as ddev
participant "Buffer" as dbuf
participant "Network" as dnet
participant "Inference" as dinf
end box

box "Kernel driver" #7D868C
participant "Device" as kdev
participant "Buffer" as kbuf
participant "Network" as knet
participant "Inference" as kinf
end box

activate main

note over main
    Create device
    Provide user buffer with network model
end note

main -> dnet++: Network(device, user_buffer, size)
    dnet -> kdev++: ioctl(NETWORK_CREATE, user_buffer, size)
        note over knet
            Create network and return file descriptor
        end note

        kdev -> knet++: create(user_buffer, size)
        return file descriptor
    return file descriptor
return

@enduml

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.20.1+1-post-Ubuntu-0ubuntu122.04
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>