Skip to content
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

Implement an optimization logger #41

Open
FedorSmirnov89 opened this issue Apr 16, 2018 · 4 comments
Open

Implement an optimization logger #41

FedorSmirnov89 opened this issue Apr 16, 2018 · 4 comments
Assignees
Labels
enhancement New feature or request question Further information is requested

Comments

@FedorSmirnov89
Copy link
Member

I am putting this into the Opt4J thread as Opt is the base for all our projects, yet this issue is equally relevant for both OpenDSE and JReliability.

At the moment, we have a mixed approach of providing information throughout the exploration. On the one hand, we provide a primitive logger for the exploration. On the other hand, we also output information through the sysout. Take the openDSE output as an example: There, we have the number of constraints, variables and units before and after the constraint preprocessing.

On the one hand, this information is much too detailed for the average user. Someone who is not familiar with SAT Decoding (probably the case for most users) can and should not have to understand the meaning of these numbers. On the other hand, this information is very useful (for example for me in order to compare two different encodings). So to sum it up: the information should be gathered yet not displayed by default.

My proposal is to create a Logger interface inside the Opt project that can be equipped with listeners to gather information throughout the exploration. This information should then be written in a file which is put into a predefined folder.

As I think that in a lot of cases, we will want to process this file automatically, I would propose a machine-readable format, preferably JSON. So the open questions in this issue are:

  • Do you agree on the general need for a logger?
  • Which format do we want (JSON, XML, Tsv)
  • Which information should we put into this file?
  • Where should we store the file?

In case that we agree on the general need for such a logger class, I will create a section in our Wiki. We can then take the discussion about the class structure, the format and the needed information directly to the Wiki.

@FedorSmirnov89 FedorSmirnov89 added enhancement New feature or request question Further information is requested labels Apr 16, 2018
@felixreimann
Copy link
Collaborator

Agree to the logger feature. Disagree to any manual implementation. Remove all sys.outs and replace with log4j. This is the default solution for logging in Java.

@felixreimann
Copy link
Collaborator

Then, additionally, create a nice Module to configure log4j.

@FedorSmirnov89 FedorSmirnov89 self-assigned this Apr 17, 2018
@FedorSmirnov89
Copy link
Member Author

Okay, I will have a look at log4j and make a prototype implementation that we can then discuss.

@vrichthammer
Copy link
Contributor

Suggestion: The new logger should also record the time required for the encoding (generating constraints, preprocessing, etc), since the contribution of this setup time to the total DSE time is quite significant for larger many-core examples (e.g. ≈20 minutes for E3S application automotive on a 24x24 NoC). As far as I have seen, this has not been considered yet and is also not yet included in the analysis of DSE run times.
If you agree and there already is a prototype for the new logger, I could try to integrate this.
Otherwise I will have a look at log4j and implementing a logger specifically for the setup time as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants