[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[UNIKRAFT/LIBTFLITE PATCH 1/4] Library skeleton



Signed-off-by: George Muraru <murarugeorgec@xxxxxxxxx>
---
 CONTRIBUTING.md |  4 ++++
 COPYING.md      | 38 ++++++++++++++++++++++++++++++++++
 Config.uk       | 50 ++++++++++++++++++++++++++++++++++++++++++++
 MAINTAINERS.md  | 10 +++++++++
 README.md       | 55 +++++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 157 insertions(+)
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 README.md

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..14f6ac6
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing to Unikraft
+========================
+
+Please refer to the `CONTRIBUTING.md` file in the main Unikraft repository.
diff --git a/COPYING.md b/COPYING.md
new file mode 100644
index 0000000..fd1dc8e
--- /dev/null
+++ b/COPYING.md
@@ -0,0 +1,38 @@
+License
+=======
+
+Unikraft tensorflowlite wrappers
+----------------------------------
+
+This repository contains wrapper code to build tensorflowlite with Unikraft.
+Each C code file in this repository should declare who is the
+copyright owner and under which terms and conditions the code is
+licensed. If such a licence note is missing, the following copyright
+notice will apply:
+
+       Copyright (c) Year, Institution. All rights reserved.
+
+       Redistribution and use in source and binary forms, with or without
+       modification, are permitted provided that the following conditions
+       are met:
+
+       1. Redistributions of source code must retain the above copyright
+          notice, this list of conditions and the following disclaimer.
+       2. Redistributions in binary form must reproduce the above copyright
+          notice, this list of conditions and the following disclaimer in the
+          documentation and/or other materials provided with the distribution.
+       3. Neither the name of the copyright holder nor the names of its
+          contributors may be used to endorse or promote products derived from
+          this software without specific prior written permission.
+
+       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 
IS"
+       AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
THE
+       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
PURPOSE
+       ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS 
BE
+       LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+       CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+       SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+       INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+       CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+       ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
THE
+       POSSIBILITY OF SUCH DAMAGE.
diff --git a/Config.uk b/Config.uk
new file mode 100644
index 0000000..8d483a2
--- /dev/null
+++ b/Config.uk
@@ -0,0 +1,50 @@
+menuconfig LIBTFLITE
+    bool "TensorFlowLite - tensorflow lite library"
+    select LIBCXX
+    select LIBNEWLIBC
+    select LIBPOSIX_SYSINFO
+    select LIBPTHREAD_EMBEDDED
+    select LIBCOMPILTER_RT
+    select LIBCOMPILER_RT_ATOMIC
+    select LIBEIGEN
+    select LIBFFT2D
+    select LIBFLATBUFFERS
+    select LIBGEMMLOWP
+    select LIBFARMHASH
+    select LIBUK9P
+    select LIB9PFS
+    select LIBDEVFS
+    select LIBDEVFS_AUTOMOUNT
+    select LIBVFSCORE_AUTOMOUNT_ROOTFS
+    select LIBUKLIBPARAM
+    default n
+
+if LIBTFLITE
+    choice LIBVFSCORE_ROOTFS
+    default LIBVFSCORE_ROOTFS_9PFS
+    endchoice
+endif
+
+if LIBTFLITE
+    config LIBTFLITE_EIGEN_DONT_ALIGN
+    bool "Do not align the buffers used by eigen library"
+    default y
+endif
+
+if LIBTFLITE
+    config LIBTFLITE_BUILD_WITH_RUY
+    bool "Matrix multiplication library"
+    default y
+endif
+
+if LIBTFLITE
+    config LIBTFLITE_BUILD_WITH_NNAPI
+    bool "Build with Neural Network API"
+    default n
+endif
+
+if LIBTFLITE
+    config LIBTFLITE_MAIN_FUNCTION
+       bool "Provide main function"
+       default y
+endif
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..f53ffe5
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,10 @@
+Maintainers List
+================
+
+For notes on how to read this information, please refer to `MAINTAINERS.md` in
+the main Unikraft repository.
+
+       LIBGEMMLOWP-UNIKRAFT
+       M:      George Muraru <murarugeorgec@xxxxxxxxx>
+       L:      minios-devel@xxxxxxxxxxxxx
+       F: *
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..cc8cfda
--- /dev/null
+++ b/README.md
@@ -0,0 +1,55 @@
+TensorFlowLite for Unikraft
+=============================
+
+This is the port of tensorflowlite as external library
+Please refer to the `README.md` as well as the documentation in the `doc/`
+subdirectory of the main unikraft repository.
+
+## Build
+TensorFlowLite interpreter depends on the following libraries, that need to
+be added to `Makefile` in this order:
+
+* `pthreads`, e.g. `pthread-embedded`
+* `libcxx`
+* `libcxxabi`
+* `libc`, e.g. `newlib`
+* `libunwind`
+* `libcompilerrt`
+* `libgemmlowp`
+* `libflatbuffers`
+* `libfarmhash`
+* `libeigen`
+* `libfft2`
+
+## Root filesystem
+### Creating the filesystem
+TensorFlowLite needs a filesystem which should contain one or more *tflite*
+models. Therefore, the filesystem needs to be created before running the VM. 
+
+### Using the filesystem
+Mounting the filesystem is a transparent operation. All you have to do
+is to provide the right Qemu parameters in order for Unikraft to mount
+the filesystem.  We will use the 9pfs support for filesystems and for
+this you will need to use the following parameters:
+
+```bash
+-fsdev local,id=myid,path=<some directory>,security_model=none \
+-device 
virtio-9p-pci,fsdev=myid,mount_tag=rootfs,disable-modern=on,disable-legacy=off
+```
+You should also use `vfs.rootdev=rootfs` (set by default) to specify the 9pfs 
mounting
+tag to Unikraft. To enable 9pfs, you'll need to select the following
+menu options, all under `Library Configuration` (this should be already done 
by the
+`tflite` config file):
+
+* `uk9p: 9p client`
+* `vfscore: VFS Core Interface`
+         &rarr; `vfscore: Configuration`
+         &rarr; `Automatically mount a root filesysytem`
+         &rarr; `Default root filesystem`
+         &rarr; `9PFS`
+
+## How to run
+Currently, `main.cpp` contains a minimal example for loading a *tflite* model 
and
+printing the interpreter state. The sample program will try to load the model 
from
+`mobilenet_v1_1.0_224.tflite` (this model and other models from the same 
family can
+be downloaded from 
[here](https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md))
-- 
2.25.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.