Add description of a reference NN runtime
authorHyung-Kyu Choi <hk0110.choi@samsung.com>
Wed, 21 Mar 2018 00:35:24 +0000 (09:35 +0900)
committer최형규/동작제어Lab(SR)/Senior Engineer/삼성전자 <hk0110.choi@samsung.com>
Thu, 22 Mar 2018 05:00:04 +0000 (14:00 +0900)
- Add description and reasonings of a reference NN runtime

Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
src/runtime/ref/README.md

index dff5e43..bd51cbf 100644 (file)
@@ -2,7 +2,26 @@
 
 This directory will host a reference implementation of NN runtime.
 
-## Design philosophies for this reference implemenation
+## What is a reference NN runtime ?
+
+A reference NN runtime is a the first  PoC (Proof of concept) implementation of NN runtime for quick development without concrete design.
+
+At the time of decision for this reference NN runtime, we don't have much time to bring up NN runtime. Precisely, by the first milestone, it would be great to have a naive but working SW stack. This is a our main goal of this reference NN runtime.
+
+There will be various approaches to implement NN runtime and this reference NN runtime is a designed from three possible approaches.
+  - (Plan A) Implement by importing Android NN components as needed
+  - (Plan B) Import and migrate Android NN to our environment and objectives, (i.e. porting and refactoring Android NN)
+  - (Plan C) Implement from scratch (with knowledge from Android NN after analysis)
+
+Considering given restrictions, Plan C might be not feasible for us right now, because it requires correct and time consuming analysis. Drop Plan C. And Plan B might not be easy to be worked by several developers in parallel.
+Therefore, we decide to take below two approaches in parallel.
+  - (1) start to implement NN runtime with Plan A by developers in parallel
+  - (2) make use of knowledge and result from Plan C. Of course, it would be great if we can successfully port Android NN in time. (Plan C). Then we can make use of Android NN itself for our purpose for later milestones.
+
+Therefore we decide to implement a reference NN runtime with Plan A for quick development without concrete design.
+We will follow below philosophies to achieve a main goal.
+
+## Design philosophies for this reference implementation
 
 We will follow below philosophies until we have a working stack of NN runtime.
 
@@ -13,4 +32,4 @@ We will follow below philosophies until we have a working stack of NN runtime.
 - Introduce a new file if we have to introduce and define our own type, variable, function, namespace and etc. of C++ source code.
   - Don't share existing file of `experiments/android_nn` for our own implementation.
 
-Simply keep as much as possible of `experiments/android_nn` when importing and introduce new files for our own implementaion.
+Simply keep as much as possible of `experiments/android_nn` when importing and introduce new files for our own implementation.