Skip to content

[UR][Graph] Strengthen in-order command-buffer property #18330

Closed
@EwanC

Description

@EwanC

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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions