Skip to content

Latest commit

 

History

History
114 lines (84 loc) · 3.52 KB

sycl_ext_oneapi_prod.asciidoc

File metadata and controls

114 lines (84 loc) · 3.52 KB

sycl_ext_oneapi_prod

Notice

Copyright © 2022-2022 Intel Corporation. All rights reserved.

Khronos® is a registered trademark and SYCL™ and SPIR™ are trademarks of The Khronos Group Inc. OpenCL™ is a trademark of Apple Inc. used by permission by Khronos.

Contact

To report problems with this extension, please open a new issue at:

Dependencies

This extension is written against the SYCL 2020 revision 5 specification. All references below to the "core SYCL specification" or to section numbers in the SYCL specification refer to that revision.

Status

This is a proposed extension specification, intended to gather community feedback. Interfaces defined in this specification may not be implemented yet 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.

Overview

This extension adds a mechanism to signal that it is desirable for a SYCL queue to begin executing any previously submitted commands once their dependencies have been satisfied.

This can be a useful performance hint if a SYCL runtime or backend runtime batches several commands before passing them to a device for execution.

Specification

Feature test macro

This extension provides a feature-test macro as described in the core SYCL specification. An implementation supporting this extension must predefine the macro SYCL_EXT_ONEAPI_PROD to one of the values defined in the table below. Applications can test for the existence of this macro to determine if the implementation supports this feature, or applications can test the macro’s value to determine which of the extension’s features the implementation supports.

Value Description

1

Initial version of this extension.

New member function

This extension adds the following new member function to the SYCL queue class:

class queue {
  void ext_oneapi_prod();
};

A call to ext_oneapi_prod provides a hint to the SYCL runtime that it should start executing any previously submitted commands once their prerequisites have been satisfied. Calls to ext_oneapi_prod are non-blocking. Calling ext_oneapi_prod does not guarantee that previously submitted commands will eventually begin executing, nor that any previously submitted commands will execute concurrently with the host thread.

Note

Since commands submitted to a SYCL queue are not required to execute immediately, SYCL devices and backends may buffer commands until a blocking call is encountered (e.g. queue::wait) or until some implementation-specific threshold is met. ext_oneapi_prod can be used in such cases to override default behavior and encourage earlier execution.

Note

Although ext_oneapi_prod is a performance hint, its impact upon application performance will be highly dependent upon the combination of device, backend and application characteristics. In some cases, it may even degrade performance (e.g. by interfering with batching or fusion optimizations).