Conversation
This commit adds the Sequential Consistency Per Location axiom(https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#sc-per-loc-axiom) which is missing in the model. We add a litmus test from issue(NVlabs#4). If the Program Order (PO) relation removed from cause_base relation which makes the model roll back to ptx-v6.0 (proxy-less version), this test shows the SC-per-Location axiom is missing. Co-authored-by: Hernan Ponce de Leon <hernanl.leon@huawei.com>
|
I agree that if |
|
I don't fully see if this axiom is redundant or not. I understand that now Even if this is redundant, I think it is a matter of taste between being simple and being explicit. The documentation still explicity mentions this axiom, so I don't see why the formal model should opt for being simple. Personally, I dislike the fact that one could simply modify the definition of The formal model has other situations like this. E.g., it uses which includes |
|
I would be very interested in any concrete litmus tests you might be able to find that would help us distinguish cases like these. We try to do some sanity checking and model checking as we refactor, but the model has become complex enough that it's entirely possible that cases have slipped through. Alternatively, if you convince yourselves the changes are indeed sound/redundant, then that would be interesting too. And yes, I agree it turns into a matter of taste at that point, but if we prove everything is equivalent then there is no contradiction in everyone having their own preferences :) |
This commit adds the Sequential Consistency Per Location axiom(https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#sc-per-loc-axiom) which is missing in the model. We add a litmus test from issue(#4). If the Program Order (PO) relation removed from cause_base relation which makes the model roll back to ptx-v6.0 (proxy-less version), this test shows the SC-per-Location axiom is missing.