-
Notifications
You must be signed in to change notification settings - Fork 30
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
Add support for progress models #731
Conversation
Signed-off-by: Hernan Ponce de Leon <[email protected]>
Signed-off-by: Hernan Ponce de Leon <[email protected]>
Signed-off-by: Hernan Ponce de Leon <[email protected]>
Signed-off-by: Hernan Ponce de Leon <[email protected]>
Signed-off-by: Hernan Ponce de Leon <[email protected]>
…ntics of CBs + progress are still unclear). - Added minimal progress guarantees (some thread is always scheduled)
# Conflicts: # dartagnan/src/main/java/com/dat3m/dartagnan/configuration/OptionNames.java # dartagnan/src/main/java/com/dat3m/dartagnan/encoding/PropertyEncoder.java
@hernan-poncedeleon Also, there are issues with the processing pipeline. Those tests require at least loop normalization (and some even more like branch reordering?). Shall we fix this issue in this PR? |
I would keep the expected file as it is (sine it was automatically generated) and simply add a way to skip tests we know we cannot handle right now. I'm pretty sure we have this skip mechanism in some other litmus unit test
I guess we can re-open your PR where you implemented this and add support for further passes in litmus if needed. |
dartagnan/src/main/java/com/dat3m/dartagnan/configuration/OptionNames.java
Outdated
Show resolved
Hide resolved
dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ProgramEncoder.java
Outdated
Show resolved
Hide resolved
dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ProgramEncoder.java
Show resolved
Hide resolved
dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ThreadCreation.java
Show resolved
Hide resolved
dartagnan/src/main/java/com/dat3m/dartagnan/utils/options/BaseOptions.java
Outdated
Show resolved
Hide resolved
dartagnan/src/main/java/com/dat3m/dartagnan/verification/VerificationTask.java
Outdated
Show resolved
Hide resolved
@@ -52,6 +57,7 @@ public static VerificationTaskBuilder builder() { | |||
public static class VerificationTaskBuilder { | |||
protected WitnessGraph witness = new WitnessGraph(); | |||
protected ConfigurationBuilder config = Configuration.builder(); | |||
protected ProgressModel progressModel = ProgressModel.getDefault(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is probably causing the problem with not correctly setting the FP in the CI
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, it is because ProgressModel
is part of the VerificationTask
and not "just a configuration". The main function makes sure to extract the configured progress model and make it explicit in the task, but if you create the task directly (like the unit tests do), this step is skipped.
dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanFairLivenessTest.java
Outdated
Show resolved
Hide resolved
There are a couple of hundred tests failing (I think 300 of the around 400 tests are failing). Should they all be listed in the |
You can copy this list into skip
|
Your list is very incomplete. Still around 50% of the tests give UNKNOWN instead of PASS/FAIL. EDIT: Ah, you only did it for OBE. HSA and FAIR both still have together over a 100 tests with wrong verdicts. |
I generated this from the unit tests, but it is true that I just checked for EDIT: wait ... I did it from fair (where we should not have expected FAIL as I mentioned above) which should be the most general case: if there is an UNKNOWN it means that we are missing the automatic detection of spinloop and thus we should remove the tests for all progress models. |
You just did it for OBE (I edited my comment) which works fine now. HSA/FAIR still fail many times. EDIT: Yes, almost all cases are because of side-effectful loops. The progress models themselves should work fine. |
Co-authored-by: Hernan Ponce de Leon <[email protected]>
This PR adds support for the progress models FAIR (default), HSA, OBE, and UNFAIR.
Open issues: The interaction between blocked control barriers and scheduling is not fully clear. Currently, we consider a CB-blocked thread to be eligible for scheduling and thus unfair scheduling may permanently schedule blocked threads causing non-termination.