Skip to content

Conversation

@EwanC
Copy link
Collaborator

@EwanC EwanC commented Oct 21, 2022

Merge SYCL_EXT_CODEPLAY_GRAPHS into SYCL_EXT_ONEAPI_GRAPH.

This is a first cut at merging and follow-up changes to reconcile some differences will likely need to be made, either as commits to this branch before merging, or as subsequent PRs.

Merge
[SYCL_EXT_CODEPLAY_GRAPHS](codeplaysoftware/standards-proposals#135)
into SYCL_EXT_ONEAPI_GRAPH.

This is a first cut at merging and follow-up changes to reconcile
some differences will likely need to be made, either as commits to this
branch before merging, or as subsequent PRs.
Makes the context accepted by the command_graph::finalize() method const, consistent with most other usages in the SYCL spec.
These are now tracked in GitHub Issues:

* [Error on cycle](#12)
* [Mixing graph building mechanisms](#11)
* [add_free errors](#10)
Remove the requirement for the graphs extension to
support a graph constructed using a device queue being
executed on another compatible queue.

This may not be possible in the DPC++ prototype based on
lazy queues.
Copy link
Owner

@reble reble left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First set of comments ...

@EwanC EwanC mentioned this pull request Nov 3, 2022
EwanC and others added 3 commits November 3, 2022 09:39
Break the graph terminology section down into a generic description of
a graph, nodes, and edges. Followed by subsections for how that is
realized in the explicit API and record & replay API individually.
Add wording on whether a user can combine the
explicit graph building API with the record & replay
API on the same modifiable graph object.

It is specified as being allowed for the user to mix
mechanisms, so long as the two mechanisms are used sequentially.
However, it is forbidden if the mechanisms are interleaved and
an exception must be thrown by the implementation.

We decided this because it is not specified in the record & replay
API whether commands are added to the graph eagerly during recording,
or on `queue::end_recording`. When each mechanism is used sequentially
however, the ordering of nodes being added is well defined.

See Issue #11
@EwanC EwanC requested a review from Bensuo November 7, 2022 16:35
Copy link
Collaborator

@Bensuo Bensuo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM just a few minor comments.

* Move `make_edge` from a free function to a member
  of `command_graph<modifiable>`.

* Remove USM limitation from spec wording, as it was an implementation
  detail.
Ewan Crawford added 2 commits November 9, 2022 12:13
* Abbreviate wording on record & replay edges around USM pointers, and
  add restriction that offsets into system allocations are not
  supported.
* Fix typo
Copy link
Collaborator

@julianmi julianmi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I have added minor comments.

* Make the use of preconditions and namespaces on the definitions
  of new functions consistent
* Add diagram for topology of dotp example
* Tweak language
@EwanC EwanC merged commit a97ace6 into reble:sycl-graph-update Nov 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet