Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
/llvmPublic
forked fromintel/llvm

Intel staging area for llvm.org contribution. Home for Intel LLVM-based projects.

NotificationsYou must be signed in to change notification settings

reble/llvm

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 

Repository files navigation

This fork is mostly stale since the main development has been moved to theIntel staging area for llvm.org contributions.

This fork has been the collaboration space for the oneAPI vendor Command Graph extension for SYCL2020 until September 2023.SYCL Graph provides an API for defining a graph of operations and their dependencies once and submitting this graph repeatedly for execution.

Specification

A draft of our Command Graph extension proposal can be found here:sycl_ext_oneapi_graph.

Implementation

Our implementation can be found here:https://github.com/intel/llvm.

Backends

An application can query the SYCL library for the level of support itprovides for using the extension with a device by usingext::oneapi::experimental::info::device::graph_support, which returns one of:

  • Native - Backend command-buffer construct is used to implement graphs.
  • Emulated - Graphs support is emulated by reissuing commands to the backend.
  • Unsupported - Extension is not supported on the device.

Currently the Level Zero backend is the only supported SYCL backend for thesycl_ext_oneapi_graph extension. As the focus of the current prototype is goodLevel Zero support to prove the value of the extension, rather than emulatedsupport for many backends. However, broadening the number of backends supportedis something we are interested in expanding on.

BackendImplementation Support
Level ZeroNative using command-lists
CUDANative support is a work-in-progress
OpenCLUnsupported
HIPUnsupported
OthersUnsupported

Implementation Status

FeatureImplementation Status (- error type)
Adding a command-group node withcommand_graph::add()Implemented
Begin & end queue recording to a graph to create nodesImplemented
Edges created from buffer accessor dependenciesImplemented
Edges created fromhandler::depends_on dependenciesImplemented
Edges created usingmake_edge()Implemented
Edges created by passing a property list tocommand_graph::add()Implemented
Empty nodeImplemented
Queueext_oneapi_get_state() queryImplemented
Vendor test macroImplemented
Ability to add a graph as a node of another graph (Sub-graphs)Implemented
Using all capabilities of USM in a graph nodeImplemented
Extending lifetime of buffers used in a graph, as defined by the "Storage Lifetimes" specification sectionNot implemented - Throws an exception that feature is not supported yet
Buffer taking a copy of underlying host data when buffer is used in a graph, as defined by the "Storage Lifetimes" specification sectionNot implemented - Throws an exception that feature is not supported yet
Executable graphupdate()Not implemented - Exception "Method not yet implemented"
Recording an in-order queue preserves linear dependenciesImplemented
Usinghandler::parallel_for in a graph nodeImplemented
Usinghandler::single_task in a graph nodeImplemented
Usinghandler::memcpy in a graph nodeImplemented
Usinghandler::copy in a graph nodeImplemented
Usinghandler::host_task in a graph nodeNot implemented - Assert: "getCGCopy() const: Assertion `false' failed."
Usinghandler::fill in a graph nodeImplemented for USM, not implemented for buffer accessors - Exception: "CG type not implemented for command buffers"
Usinghandler::memset in a graph nodeNot implemented - Exception: "CG type not implemented for command buffers"
Usinghandler::prefetch in a graph nodeNot implemented - Exception: "CG type not implemented for command buffers"
Usinghandler::memadvise in a graph nodeNot implemented - Exception: "CG type not implemented for command buffers"
Using specialization constants in a graph nodeNot implemented - Throws an exception that feature is not supported yet
Using reductions in a graph nodeNot implemented - Throws an exception that feature is not supported yet
Using kernel bundles in a graph nodeNot implemented - Throws an exception that feature is not supported yet
Using sycl streams in a graph nodeNot implemented - Exception: "Failed to add kernel to PI command-buffer"
Thread safety of new methodsImplemented
Profiling an event returned from graph submission withevent::get_profiling_info()Not implemented - Throws an exception that feature is not supported yet
Querying the state of an event returned from graph submission withevent::get_info<info::event::command_execution_status>()Implemented

Other Material

This extension was presented at the oneAPI Technical Advisory board (Sept'22 meeting). Slides:https://github.com/oneapi-src/oneAPI-tab/blob/main/language/presentations/2022-09-28-TAB-SYCL-Graph.pdf.

Extension was presented at IWOCL 2023, and thetalk can be found on Youtube.

Intel Project for LLVM* technology

We target a contribution through the origin of this fork:Intel staging area for llvm.org contributions.

How to use DPC++

Releases

TDB

Build from sources

SeeGet Started Guide.

Report a problem

Submit anissue or initiate adiscussion.

How to contribute to DPC++

This project welcomes contributions from the community. Please refer toCONTRIBUTINGfor general guidelines around contributing to this project. You can then seeContributeToDPCPP for DPC++ specificguidelines.

License

SeeLICENSE for details.

*Other names and brands may be claimed as the property of others.

About

Intel staging area for llvm.org contribution. Home for Intel LLVM-based projects.

Resources

Security policy

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp