-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor Environment Configuration #33
Comments
This would be my idea, with the the following major changes:
---
home: "{{ home_dir }}"
logging:
... # No changes here
paths:
... # No changes here
repos:
... # No changes here
frameworks:
supported:
- tflm
- tvm
backend:
supported:
# - tflmc
- tflmi
- tvmaot
- tvmrt
- tvmcg
use:
- tvmaot
frontends:
supported:
- tflite
# - packed
# - onnx
use:
- tflite
platforms:
supported:
- mlif
- espidf
use:
- mlif
- espidf
targets:
supported:
- etiss_pulpino # mlif
- spike # mlif
- ovpsim # mlif
- host_x86 # mlif
- corstone300 # mlif
# espidf targets do not need to be listed here
use:
- etiss_pulpino
features:
supported:
- gdbserver
- etissdbg
- vext
- trace
- disable_legalize
- debug_arena
- unpacked_api
- usmp
- cmsisnn
- muriscvnn
# - cmsisnnbyoc
# - packing
# - packed
# - ethosu
use: []
postprocesses:
supported:
- detailed_cycles
- average_cycles
- filter_cols
- features2cols
- config2cols
- bytes2kb
- visualize
use: []
vars:
# tvm.make_tool: "ninja"
llvm.version: "11.1.0"
runs_per_stage: true
riscv_gcc.dl_url: "https://syncandshare.lrz.de/dl/fi89JQF89pEiWwP6aQh7cM4H/rv32gcv.tar.xz" |
@rafzi What do your thin about this proposal? |
One this which is probably missing right now are "wildcards", which would make it easier to just enable all supported components without copying the above list from Here are two possible approaches:
|
Another thing we need to clarify is, how we handle platforms whose targets are resolved dynamically instead of being registered manually. Do the need need to be listed in the environment file as well? |
This change looks good to me. What do you think about adding a value to components for specifying that they should be used by default?
|
i think this wouldn’t be valid yaml syntax. And if we would do the following it would look more confusing:
|
In addition there will be scenarios where a value used in |
I was not sure about the syntax either, but a couple online validators told me that this would be fine. It might be a bit confusing in the parsing logic, but that seems tolerable. Can you elaborate on the case where "use" might contain values that are not in "supported"? It is sufficiently rare that we could add a special value like "default_but_not_supported_otherwise"? That structure seems more intuitive to me. |
There are two use-cases:
|
For me the following scheme would be completely fine:
Do you habe anything special against it? |
Thanks for elaborating. The naming "install" instead of "supported" would make more sense to me. I don't see a problem when there is nothing to install. The user generally does not know this, so they will list it anyways if they intend to use it and they did not install it themselves. I don't like your proposed syntax, because it is a lesser known yaml feature and would in typical cases be more verbose and cause duplication. I'd typically only set one backend/frontend/target as default and set some subset of features as default. To avoid the strange case of
we could instead allow:
|
@rafzi Unfortunately I do not really understand the usage of
It makes sense to have multiple default Platforms as they can be seen as a registry for targets, so if a target name is provided e.g. on the command line, the default platforms will be "ask" if the provide support for the given target name, which has the big advantage that the user does not have to define |
What we could for example do is to allow grouping e.g backens when listing them in
However, I agree that the verbosity would then increase again if we would like to add another default value as we can not merge the groups intuitively. |
I will start implementing this myself soon to allow a followup for #51 getting rid of all hardcoded component names. |
I came up with a new sturcture for the
environment.yml
files (See first comment) and would like to discuss it in this context.The text was updated successfully, but these errors were encountered: