Here's the list of functions in base_loader.h::loadOperation that are never tested. We can make GenModel tests(which uses CircleGen) to cover them.
Please refer to the PRs above(the most recent one).
@wateret Alternatively, we may add nnpkgtc by creating models for each uncovered operators. It has several advantages than GenModel (at least I think):
i) models could be used to measure memory and performance because it is nnpackage.
ii) input and expected value are easy to create. Just run tflite2nnpkgtc.sh.
I usually create tflite by a) using flatc with hand-created json or b) splitting an op from existing model.
It has several advantages than GenModel
There is one disadvantage:
If the intention is to just improve coverage, then it's OK I guess :)
Interesting this is
I think we could write CircleGen::save(filename) method, which can write a circle file.
So CircleGen -> model2nnpackage -> some test using nnpackage could be also possible.
There is one disadvantage:
* if a test fails, it does not necessarily mean that the problem is in the loader, it can be anywhere in the runtime pipeline.
@s-barannikov I did not understand. Both methods are same in this point. Error during running model from CircleGen or nnpkgtc.
Also ,during creating CircleGen test for sparcity, I've found several disadvantages.
It requires re-invent wheels (which means more development time and maintenance cost for that code).
GenModelTest.hIn addition, as I mentioned, we need to write expected values manually or copy and paste.
It requires several days at least for me, which requires several hours in nnpkgtcs.
Main advantage of CircleGen is that the tests can be managed in c++ source.
ONE repo in one place.Meanwhile, for nnpkg-tcs or models (.tflite or .circle), we provided alternative model server for providing binary resources. It is hard to review and keep the history.