[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [UNIKRAFT/LIBTFLITE PATCH 1/4] Library skeleton
Hi George, I have a minor comment below that I can fix on upstreaming. Other than that: Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx> On Fri, May 15, 2020 at 1:52 PM George Muraru <murarugeorgec@xxxxxxxxx> wrote: > > 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 I'll add a sentence on how to launch this using qemu-guest [1], the script that kraft uses to launch qemu; this is easier to use than a long qemu line. [1] https://github.com/unikraft/kraft/blob/master/scripts/qemu-guest > +``` > +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 |