Description
The in-order property when passed to on UR command-buffer creation is currently specified as
[in] Commands in a command-buffer may be executed in-order without explicit dependencies.
This is a hint that says an adapter may ignore the sync points a user passes, however valid UR usage is to still always pass sync-points with this property, as enforced with by the UR CTS tests.
The requirement to pass sync points even when an in-order UR command-buffer is confusing to users, who are likely to get this wrong and it work by accident (@EwanC has manually had to catch this in PR review a few times). It may also inefficient in that the SYCL RT needs to track the sync points of previous commands.
This task is to improve the UR command-buffer feature so that sync points are always ignored when an in-order command-buffer is created:
- Update spec with above behavior.
- Expand on in-order property description in doxygen comments with that info.
- Add UR CTS tests creating an in-order command-buffer without sync points.
- Update adapters to implement this behaviour.
- CUDA - No native CUDA-Graph property, track last node created in adapter and add implicit dependency.
- HIP - No native HIP-Graph property, track last node created in adapter and add implicit dependency.
- Level-Zero - If in-order command-lists available in L0 driver use that, otherwise track last node create and add dependency on new node.
- OpenCL - No change, in-order command-buffer/command-queue always available to use.