escet merge requestshttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests2021-11-12T15:42:44Zhttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/191#190 Merge develop to master for v0.4-M1.2021-11-12T15:42:44ZDennis Hendriks#190 Merge develop to master for v0.4-M1.https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/187#190 Release note updates for v0.4-M12021-11-12T15:39:12ZDennis Hendriks#190 Release note updates for v0.4-M1Addresses #190Addresses #190v0.4https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/236#191 develop to master for v0.4-RC12021-12-13T18:43:23ZDennis Hendriks#191 develop to master for v0.4-RC1v0.4https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/234#191 Update release notes for v0.4-RC1.2021-12-13T18:40:24ZDennis Hendriks#191 Update release notes for v0.4-RC1.Closes #191Closes #191v0.4https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/239#192 develop to master for v0.42021-12-17T13:56:48ZDennis Hendriks#192 develop to master for v0.4v0.4https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/157#193 Prepare Git repo for v0.4.2021-10-01T10:36:22ZDennis Hendriks#193 Prepare Git repo for v0.4.Closes #193Closes #193v0.4https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/156#195 Oomph setup: configure Java code templates.2021-10-01T13:59:58ZDennis Hendriks#195 Oomph setup: configure Java code templates.- Now by default JavaDoc templates are applied (e.g. for new classes).
- Removed '@author' from all the JavaDoc templates.
- Added Eclipse ESCET license header at top of new files.
- Copyright line automatically includes the current ye...- Now by default JavaDoc templates are applied (e.g. for new classes).
- Removed '@author' from all the JavaDoc templates.
- Added Eclipse ESCET license header at top of new files.
- Copyright line automatically includes the current year.
Closes #195v0.4https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/327#196 Add DCSH variable ordering algorithm to data-based synthesis.2022-06-27T19:51:45ZDennis Hendriks#196 Add DCSH variable ordering algorithm to data-based synthesis.Variable ordering changes/additions:
- Prepared `VarOrdererHelper` for more metrics besides total span.
- Reduced space used for printing total span metric.
- Variable amount of space based on initial metric value.
- Added WES to `Va...Variable ordering changes/additions:
- Prepared `VarOrdererHelper` for more metrics besides total span.
- Reduced space used for printing total span metric.
- Variable amount of space based on initial metric value.
- Added WES to `VarOrdererHelper` as additional variable ordering metric.
Graph related additions:
- Added `Graph` and `Node` classes to represent graphs for data-based synthesis variable ordering algorithms to use.
- Added graph representation support to `VarOrdererHelper`.
- For now, graphs are created from the existing hyper-edges, ensuring consistency between the different representations.
- We could later opt for other ways to create the hyper-edges/graphs.
- Added extra utility methods for use by variable ordering algorithms.
- Updated `CifToSynthesisConverter` for the added graph representation.
DCSH algorithm related additions:
- Added rooted level structure constructor for graphs.
- Added pseudo-peripheral node finder algorithms.
- I tried to stay as close as possible to the original papers.
- We have multiple algorithms here.
- These are the ones which are needed for the node ordering heuristic algorithms.
- We could experiment later which ones work best. (see below)
- For now, node ordering algorithms use the ones from their corresponding papers.
- Added node ordering heuristic algorithms.
- I tried to stay as close as possible to the original papers.
- These are the ones we need for the DCSH variable ordering algorithm.
- Weighted Cuthill-McKee has been improved wrt the original paper: it works also for multiple unconnected partitions with >1 node.
- Added variable ordering algorithms.
- Added Sloan and Weighted Cuthill-McKee variable ordering algorithms, using the corresponding node ordering algorithms.
- Added 'choice' and 'reverse' wrapper variable ordering algorithms.
- Add DCSH variable ordering algorithm.
- Is for now based on graphs constructed from the existing hyper-edges, ensuring consistency between the different representtations.
- Could later create DMSs/hyper-edges based on the paper's approach.
Data-based synthesis tool additions:
- Added new option for enabling DCSH variable ordering.
- Is disabled by default, as I consider it experimental for now.
- The 'experimental' label here is for end users. It does not concern the implementation.
Data-based synthesis variable ordering documentation additions/changes:
- Added DCSH algorithm/option.
- Extended explanation of heuristic algorithms in general.
- Extended explanation of when algorithms are not applied.
- Extended descriptions of the FORCE and sliding window algorithms.
Data-based synthesis tests additions/changes:
- Renamed data-based synthesis test cases relating to `force`.
- The `force` tests were about FORCE and sliding window, so were wrongly named.
- Changed `_force_` to `_algos_`.
- Also extracted the related common options in the test ToolDef script to variables.
- Added DCSH to variable ordering integration tests, to be applied with all the other algorithms for the `algos` tests.
- Resulting metrics are the same or better for all these tests with DCSH added to it.
- Added single variable ordering algorithm integration tests, besides the ones that test all the algorithms at once.
- But only for a single initial random order, not for all the other initial orders, to avoid an explosion of tests.
Regarding reviewing:
- I tried to keep the stack of commits reviewable one by one, although there are a few fixes/changes at the end that could potentially have been integrated into earlier commits.
- Still, reviewing this per commit can be useful, as otherwise the totality of changes can be overwhelming, and the commits build towards the end result nicely.
I stopped here with this branch, as it is quite extensive already. The following are left as future work. I've created issues for the most relevant ones:
- #375 It would be good to have some scripts to benchmark the benchmark models, comparing for instance FORCE + sliding window against DCSH + FORCE + sliding window, in an automated fashion. I partly put something together for this already.
- #376 I think more testing is needed. I don't yet know whether the improvements we get in terms of better variable orderings and reduced synthesis effort match what the DCSH paper indicates. That would be good to check before lifting the 'experimental' label for end users to use it.
- The choice variable orderer could support reverse orders as well, natively, to avoid applying the algorithms twice. However, that leads to more code, and a less modular design. I hope execution times are very short already anyway. But, I still want to measure those times to be sure. Otherwise we may want to look into this optimization.
- #374 I found that our `product-escet` launch configuration is configured with only 4 GB of memory. That seems very low for todays systems.
- #377 Hyper-edge creation has a bug, where for location invariants actually the component invariants are used. I'm a bit hesitant to change this now though, as it makes comparing the performance of DCSH against the paper more difficult. Also, what if it reduces synthesis performance. We have no good benchmarking set yet to test this.
- #378 Data-based synthesis now only allows DCSH to be applied before FORCE and FORCE before sliding window. The order is fixed. I think the options should be generalized, to allow for instance `choice(dcsh, sequence(force, sliding-window(9)))` etc. This gives more flexibility for testing different configurations. Actual testing would require more benchmark models though.
- #379 There are several places where choices can be made. We can choose the current hyper-edges vs the ones defined in the DCSH paper. We can enable DCSH by default or not. We can choose per algorithm (DCSH, FORCE, sliding window), to base it on the total span or WES metric. For the node ordering algorithms, we can choose which pseudo-peripheral node finding algorithm to use. All of this requires that we can determine what is better, hence we need ways to specify these choices, scripts to easily test the differences, and enough benchmarking models to conclude what is really better in general.
- Variable ordering seems to lack cancellation checking. If the code runs for longer times (see other point), then we may need to add more of it. For now, this does not seem needed.
- #380 We currently use the original hyper-edges. We could implement the hyper-edges defined in the DCSH paper, which may perform better.
Closes #196v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/334#196 Add DCSH variable ordering heuristic.2022-06-20T09:29:17ZDennis Hendriks#196 Add DCSH variable ordering heuristic.- Added choice/reverse wrapper variable ordering algorithms.
- Added DCSH variable ordering heuristic.
- Is for now based on graphs constructed from the original hyper-edges.
- Could later create DMSs/hyper-edges based on the pape...- Added choice/reverse wrapper variable ordering algorithms.
- Added DCSH variable ordering heuristic.
- Is for now based on graphs constructed from the original hyper-edges.
- Could later create DMSs/hyper-edges based on the paper's approach.
- Is for now based on total span.
- Will later also adopt the WES metric (a next merge request).
- Until we introduce the WES metric, the reverse orders are never chosen, as reversing the order has no effect on the total span.
- Added option to data-based synthesis tool to enable DCSH variable ordering (disabled by default, as for now considered experimental for end users).
- Improved data-based synthesis variable ordering documentation:
- Added DCSH algorithm/option.
- Extended explanation of heuristic algorithms in general.
- Extended explanation of when algorithms are not applied.
- Extended descriptions of the FORCE and sliding window algorithms.
~~This merge requests now builds on !333. Once that one is merged, this merge request will automatically be re-targetted to `develop`.~~
Addresses #196v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/332#196 Add graphs as representation to VarOrdererHelper.2022-06-15T21:29:10ZDennis Hendriks#196 Add graphs as representation to VarOrdererHelper.The DCSH algorithm is based on multiple node ordering algorithms, working on graphs. This merge request adds graphs as a representation that can be used by data-based synthesis variable ordering algorithms.
For now, graphs are created f...The DCSH algorithm is based on multiple node ordering algorithms, working on graphs. This merge request adds graphs as a representation that can be used by data-based synthesis variable ordering algorithms.
For now, graphs are created from the existing hyper-edges:
- This ensures consistency between the representations.
- We could later opt for other ways to create the hyper-edges/graphs.
Also added some extra utility methods for use by variable ordering algorithms, to work with the various representations.
Addresses #196v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/333#196 Add node ordering algorithms, including dependencies, for later use by DCSH2022-06-18T11:20:16ZDennis Hendriks#196 Add node ordering algorithms, including dependencies, for later use by DCSHNow that we have graphs (!332), here are the algorithms that work on graphs:
* Rooted level structure computation.
* Pseudo-peripheral node finders.
* Node orderers.
* Variable orderers, based on the node orderers.
Note that:
* I tried ...Now that we have graphs (!332), here are the algorithms that work on graphs:
* Rooted level structure computation.
* Pseudo-peripheral node finders.
* Node orderers.
* Variable orderers, based on the node orderers.
Note that:
* I tried to stay as close as possible to the original papers. We thus have two pseudo-peripheral node finders, one for each of the node ordering algorithms, such that they use what they describe in their papers.
* Weighted Cuthill-McKee has been improved wrt the original paper. It now works also for multiple unconnected partitions with >1 node.
* These algorithms form the ingredients for the DCSH algorithm itself, to be contributed in a follow-up merge request.
Addresses #196v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/337#196 Add WES as metric for DCSH variable ordering algorithm2022-06-27T19:33:04ZDennis Hendriks#196 Add WES as metric for DCSH variable ordering algorithmGeneral/preparatory changes:
- `VarOrderHelper` and `HyperEdgeCreator` store variables as a list.
- Dynamic metric width, to reduce width and make room for extra metric.
- Renamed `dbgTotalSpan*` to `dbgMetrics*`.
Add WES:
- Added WES a...General/preparatory changes:
- `VarOrderHelper` and `HyperEdgeCreator` store variables as a list.
- Dynamic metric width, to reduce width and make room for extra metric.
- Renamed `dbgTotalSpan*` to `dbgMetrics*`.
Add WES:
- Added WES as variable ordering metric.
- Added more unit tests. (these found several issues while I was working on this issue)
- `ChoiceVarOrderer` support for arbitrary metrics.
- DCSH uses WES.
Reviewing per commit may be easier than reviewing the full diff.
Addresses #196v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/340#196 Renamed data-based synthesis test cases relating to 'force'.2022-06-30T21:04:00ZDennis Hendriks#196 Renamed data-based synthesis test cases relating to 'force'.Changes:
- Renamed data-based synthesis test cases relating to 'force'.
- The `force` tests were about FORCE and sliding window.
- Changed `_force_` to `_algos_`.
- Extracted related common options in test ToolDef script to variab...Changes:
- Renamed data-based synthesis test cases relating to 'force'.
- The `force` tests were about FORCE and sliding window.
- Changed `_force_` to `_algos_`.
- Extracted related common options in test ToolDef script to variables.
- Added DCSH to variable ordering integration tests.
- Resulting metrics are the same or better.
- Added single variable ordering algorithm integration tests.
This is the last part of #196. Next steps are part of other issues.
Closes #196v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/180#197 Add option to define edge order in databased synthesis.2021-11-12T15:38:53ZFerdie Reijnen#197 Add option to define edge order in databased synthesis.Closes #197Closes #197v0.4https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/487#198 Add alternative second approach to apply state requirement invariants du...2023-02-14T21:17:20ZDennis Hendriks#198 Add alternative second approach to apply state requirement invariants during data-based synthesis* Best to review per commit, I think.
* We now have two approaches to apply state requirement invariants for data-based synthesis.
* Added an option to choose between the two approaches.
* Changes are essentially backwards compatible, bu...* Best to review per commit, I think.
* We now have two approaches to apply state requirement invariants for data-based synthesis.
* Added an option to choose between the two approaches.
* Changes are essentially backwards compatible, but do lead to some changes in debug output.
* The option has no effect on the benchmark models, as the don't have any state requirement invariants.
* I tried to document the new option in a way that explains its effects. But, it is quite advanced. It may not be super easy to read for many users.
* Some small code improvements, including splitting some methods.
* Some small documentation improvement.
Closes #198v0.9https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/494#198 State requirement invariants per edge: replace simplify by a skip.2023-01-30T19:24:50ZDennis Hendriks#198 State requirement invariants per edge: replace simplify by a skip.After [our discussions](https://gitlab.eclipse.org/eclipse/escet/escet/-/issues/198#note_1073185), I'm replacing the simplify with a skip check.
Closes #198After [our discussions](https://gitlab.eclipse.org/eclipse/escet/escet/-/issues/198#note_1073185), I'm replacing the simplify with a skip check.
Closes #198v0.9https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/392#199 Open large Chi, CIF, SeText and ToolDef files using text editor.2022-10-24T16:37:23ZDennis Hendriks#199 Open large Chi, CIF, SeText and ToolDef files using text editor.- Uses default text editor for Chi, CIF, SeText and ToolDef files that are >10 MiB to prevent performance issues.
- Note that:
- Files keep their custom icons.
- Files are still by default opened by their own editors.
- Only larger...- Uses default text editor for Chi, CIF, SeText and ToolDef files that are >10 MiB to prevent performance issues.
- Note that:
- Files keep their custom icons.
- Files are still by default opened by their own editors.
- Only larger files are opened by the default text editor.
- Explicitly opening larger files with their own editor works as expected.
- Documentation updates are from !164.
Closes #199v0.8https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/164#199 Open large CIF files with standard text editor, not CIF editor2022-10-17T19:47:25ZDennis Hendriks#199 Open large CIF files with standard text editor, not CIF editorCloses #199Closes #199v0.4https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/19#19 Release notes updates for v0.1 + documentation improvements.2021-03-05T17:14:34ZDennis Hendriks#19 Release notes updates for v0.1 + documentation improvements.#19 Release notes updates for v0.1 + documentation improvements.
- Updated/extended released notes for v0.1.
- Removed '(unreleased)' annotations in release notes.
- Difficult to keep up-to-date.
- Added more documentation cross-l...#19 Release notes updates for v0.1 + documentation improvements.
- Updated/extended released notes for v0.1.
- Removed '(unreleased)' annotations in release notes.
- Difficult to keep up-to-date.
- Added more documentation cross-linking (ESCET to/from languages).
- Using actual online URLs, which are now known.
- Cross-linking information extended with what you'll find there.
- Refer to website for development information.
- Our tools are also available as plug-ins from an update site.
- Some other small textual changes in documentation.
Closes #19v0.1https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/158#200 Improved Assert class messages.2021-10-04T06:42:04ZDennis Hendriks#200 Improved Assert class messages. - Include more information from arguments in the messages by default.
- For 'ifAndOnlyIf'.
- Allow Object type values for msg.
- Avoids needing to convert to string for arguments.
- Applied where relevant.
Closes #200 - Include more information from arguments in the messages by default.
- For 'ifAndOnlyIf'.
- Allow Object type values for msg.
- Avoids needing to convert to string for arguments.
- Applied where relevant.
Closes #200v0.4