blob: adac2f989d2feaf4e34f6691721190e5a07df913 [file] [log] [blame]
Kristofer Jonsson0c79f892021-06-02 17:15:57 +02001@startuml
2
3skinparam backgroundColor #FEFEFE
4
5box "Application" #0091BD
6participant "main()" as main
7end box
8
9box "Driver library" #00C1DE
10participant "Device" as ddev
11participant "Buffer" as dbuf
12participant "Network" as dnet
13participant "Inference" as dinf
14end box
15
16box "Kernel driver" #7D868C
17participant "Device" as kdev
18participant "Buffer" as kbuf
19participant "Network" as knet
20participant "Inference" as kinf
21end box
22
23note over ddev
24 Create device
25end note
26activate main
27main -> ddev++: Device()
28 ddev -> kdev++: open(<device node>)
29 return file descriptor
30return
31
32note over dnet
33 Allocate and fill network buffer
34end note
35
36main -> dbuf++: Buffer(device)
37 dbuf -> kbuf++: ioctl(BUFFER_CREATE)
38 return file descriptor
39return
40
41note over dnet
42 Create network, parse network model
43end note
44
45main -> dnet++: Network(device, buffer)
46 dnet -> knet++: ioctl(NETWORK_CREATE)
47 return file descriptor
48
49 dnet -> dnet: Parse network model
50return
51
52loop Allocate and fill IFM buffers
53 main -> dbuf++: Buffer(device)
54 dbuf -> kbuf++: ioctl(BUFFER_CREATE)
55 return file descriptor
56 return
57end loop
58
59loop Allocate OFM buffers
60 main -> dbuf++: Buffer(device)
61 dbuf -> kbuf++: ioctl(BUFFER_CREATE)
62 return file descriptor
63 return
64end loop
65
66note over dinf
67 Create and run inference
68end note
69main -> dinf++: Inference(network, ifm, ofm)
70 dinf -> kinf++: ioctl(INFERENCE_CREATE)
71 return file descriptor
72return
73
74main -> dinf++: wait(file descriptor)
75 dinf -> kinf++: poll(file descriptor)
76 return
77return
78
79@enduml