Skip to content

Commit

Permalink
[SYCL][Doc] Graph fusion extension proposal (#8678)
Browse files Browse the repository at this point in the history
Experimental SYCL extension proposal for kernel fusion on top of the
[SYCL graphs
API](https://github.com/reble/llvm/blob/sycl-graph-update/sycl/doc/extensions/proposed/sycl_ext_oneapi_graph.asciidoc).

Constructing the sequence of kernels to fuse is completely left to the
graphs proposal, which provides two APIs to this end. One recording API
similar to the fusion mode for queues in the initial kernel fusion
proposal, and an explicit graph construction APIs. Both APIs are
supported for kernel fusion.

This proposal mainly introduces a number of properties to trigger fusion
of the graph and internalization of dataflow in the fused kernel.

This proposal continues some of the ideas of the [experimental SYCL
extension for kernel
fusion](https://github.com/intel/llvm/blob/sycl/sycl/doc/extensions/experimental/sycl_ext_codeplay_kernel_fusion.asciidoc).
In contrast to the original kernel fusion proposal, this proposal now
also allows internalization of USM pointers.

---------

Signed-off-by: Lukas Sommer <lukas.sommer@codeplay.com>
  • Loading branch information
sommerlukas committed Sep 20, 2023
1 parent e423b5a commit 8c4cad4
Show file tree
Hide file tree
Showing 3 changed files with 792 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,18 @@ or may be in a preliminary state. The specification itself may also change in
incompatible ways before it is finalized. *Shipping software products should
not rely on APIs defined in this specification.*

[NOTE]
====
There is a link:../proposed/sycl_ext_oneapi_graph_fusion.asciidoc[follow-up
proposal] for fusion based on the
https://github.com/intel/llvm/blob/sycl/sycl/doc/extensions/experimental/sycl_ext_oneapi_graph.asciidoc[SYCL graph API].
That proposal continues some of the ideas presented in this proposal, but uses
the more versatile SYCL graphs API to define the sequence of kernels to
execute.
Once accepted and implemented, the new proposal will supersede this proposal.
====

[NOTE]
====
This is an experimental extension for the SYCL specification.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1207,7 +1207,7 @@ The `sycl::ext::codeplay::experimental::property::queue::enable_fusion` property
defined by the extension is ignored by queue recording.

To enable kernel fusion in a `command_graph` see the
https://github.com/sommerlukas/llvm/blob/proposal/graph-fusion/sycl/doc/extensions/proposed/sycl_ext_oneapi_graph_fusion.asciidoc[sycl_ext_oneapi_graph_fusion extension proposal]
link:../proposed/sycl_ext_oneapi_graph_fusion.asciidoc[sycl_ext_oneapi_graph_fusion extension proposal]
which is layered ontop of `sycl_ext_oneapi_graph`.

==== sycl_ext_oneapi_kernel_properties
Expand Down

0 comments on commit 8c4cad4

Please sign in to comment.