Name Strings

SPV_INTEL_kernel_attributes

Contact

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

Contributors

  • Jessica Davies, Intel

  • Joseph Garvey, Intel

  • Ajaykumar Kannan, Intel

  • Michael Kinsner, Intel

  • Ryan Murray, Intel

  • Abhishek Tiwari, Intel

Notice

Copyright (c) 2019-2022 Intel Corporation. All rights reserved.

Status

Final Draft

Version

Last Modified Date

2022-12-05

Revision

4

Dependencies

This extension is written against the SPIR-V Specification, Version 1.6 Revision 2.

This extension requires SPIR-V 1.0.

Overview

This extension adds a variety of new execution modes, both general and target-specific. The target-specific execution modes are guarded by separate capabilities.

Extension Name

To use this extension within a SPIR-V module, the following OpExtension must be present in the module:

OpExtension "SPV_INTEL_kernel_attributes"

New Capabilities

This extension introduces new capabilities:

KernelAttributesINTEL
FPGAKernelAttributesINTEL
FPGAKernelAttributesv2INTEL

New Execution Modes

MaxWorkgroupSizeINTEL
MaxWorkDimINTEL
NoGlobalOffsetINTEL
NumSIMDWorkitemsINTEL
SchedulerTargetFmaxMhzINTEL
StreamingInterfaceINTEL
RegisterMapInterfaceINTEL

Token Number Assignments

KernelAttributesINTEL

5892

MaxWorkgroupSizeINTEL

5893

MaxWorkDimINTEL

5894

NoGlobalOffsetINTEL

5895

NumSIMDWorkitemsINTEL

5896

FPGAKernelAttributesINTEL

5897

FPGAKernelAttributesv2INTEL

6161

SchedulerTargetFmaxMhzINTEL

5903

StreamingInterfaceINTEL

6154

RegisterMapInterfaceINTEL

6160

Modifications to the SPIR-V Specification, Version 1.6

Execution Mode

Modify Section 3.6, Execution Mode, adding these rows to the Execution Mode table:

Execution Mode Extra Operands Enabling Capabilities

5893

MaxWorkgroupSizeINTEL
Indicates the maximum possible work-group size in the x, y, and z dimensions. If a LocalSize execution mode is applied to the same entry point, it is invalid for max_i_size < i size for dimension i. Only valid with the Kernel Execution Model.

Literal Number
max_x_size

Literal Number
max_y_size

Literal Number
max_z_size

KernelAttributesINTEL

5894

MaxWorkDimINTEL
Indicates the maximum number of work dimensions. Legal values range from 0 to 3. A maximum dimensionality of 0 indicates that the kernel can only be launched with a single work-item. If a LocalSize execution mode is applied to the same entry point, the size of each dimension beyond max_dimensions must be 1. Only valid with the Kernel Execution Model.

Literal Number
max_dimensions

KernelAttributesINTEL

5895

NoGlobalOffsetINTEL
Indicates that the global offset is always (0, 0, 0). Only valid with the Kernel Execution Model.

KernelAttributesINTEL

5896

NumSIMDWorkitemsINTEL
Indicates that the kernel should be vectorized with the provided vector width. Only valid with the Kernel Execution Model.

Literal Number
vector_width

FPGAKernelAttributesINTEL

5903

SchedulerTargetFmaxMhzINTEL
Indicates the target clock frequency (Fmax) for the kernel, in MHz. Only valid with the Kernel Execution Model.

Literal Number
target_fmax

FPGAKernelAttributesINTEL

6154

StreamingInterfaceINTEL
Indicates that the kernel has a streaming interface, in which invocation of and return from the kernel is synchronized by a flow control handshaking protocol. StallFreeReturn is a 32-bit unsigned integer type scalar. If StallFreeReturn is equal to zero, it indicates that the return interface of the kernel can input a stall control flow signal from downstream logic, while a non-zero value indicates that it will not accept a stall control flow signal from downstream logic.

Literal
StallFreeReturn

FPGAKernelAttributesINTEL

6160

RegisterMapInterfaceINTEL
Indicates that the kernel has a single register based interface that is shared across all kernel control signals and kernel arguments. WaitForDoneWrite is a boolean type scalar. If WaitForDoneWrite is true, it indicates that the kernel interface will contain a stall register that can be used to back-pressure the kernel, while if it is false, it indicates that it will not.

Literal
WaitForDoneWrite

FPGAKernelAttributesv2INTEL

Capability

Modify Section 3.31, Capability, adding the following rows to the Capability table:

Capability Implicitly Declares

5892

KernelAttributesINTEL

5897

FPGAKernelAttributesINTEL

6161

FPGAKernelAttributesv2INTEL

FPGAKernelAttributesINTEL

Validation Rules

It is illegal to specify both StreamingInterfaceINTEL and RegisterMapInterfaceINTEL modes on the same entry point.

Issues

None.

Revision History

Rev Date Author Changes

1

2019-12-18

Joe Garvey

Initial public release

2

2020-04-22

Jessica Davies

Added one new execution mode, SchedulerTargetFmaxMhzINTEL.

3

2021-09-14

Ajaykumar Kannan

Added one new execution mode, StreamingInterfaceINTEL.

4

2022-12-05

Abhishek Tiwari

Added one new execution mode, RegisterMapInterfaceINTEL, under a new compatibility.