aboutsummaryrefslogtreecommitdiff
path: root/docs/driver_library_sequence.puml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/driver_library_sequence.puml')
-rw-r--r--docs/driver_library_sequence.puml79
1 files changed, 79 insertions, 0 deletions
diff --git a/docs/driver_library_sequence.puml b/docs/driver_library_sequence.puml
new file mode 100644
index 0000000..adac2f9
--- /dev/null
+++ b/docs/driver_library_sequence.puml
@@ -0,0 +1,79 @@
+@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
+
+note over ddev
+ Create device
+end note
+activate main
+main -> ddev++: Device()
+ ddev -> kdev++: open(<device node>)
+ return file descriptor
+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)
+ dnet -> knet++: ioctl(NETWORK_CREATE)
+ return file descriptor
+
+ dnet -> dnet: Parse network model
+return
+
+loop Allocate and fill IFM buffers
+ main -> dbuf++: Buffer(device)
+ dbuf -> kbuf++: ioctl(BUFFER_CREATE)
+ return file descriptor
+ return
+end loop
+
+loop Allocate OFM buffers
+ main -> dbuf++: Buffer(device)
+ dbuf -> kbuf++: ioctl(BUFFER_CREATE)
+ return file descriptor
+ return
+end loop
+
+note over dinf
+ Create and run inference
+end note
+main -> dinf++: Inference(network, ifm, ofm)
+ dinf -> kinf++: ioctl(INFERENCE_CREATE)
+ return file descriptor
+return
+
+main -> dinf++: wait(file descriptor)
+ dinf -> kinf++: poll(file descriptor)
+ return
+return
+
+@enduml