[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` + → `vfscore: Configuration` + → `Automatically mount a root filesysytem` + → `Default root filesystem` + → `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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |