LAUNCH Properties#

Warning

Experimental features:

  • May be replaced, updated, or removed at any time.

  • Do not require maintaining API/ABI stability of their own additions over time.

  • Do not require conformance testing of their own additions.

Terminology#

“Launch Properties” is used to indicate optional kernel launch properties that can be specified at the time of a kernel launch. Such properties can be used to enable hardware specific kernel launch features.

Motivation#

Advances in hardware sometimes require new kernel properties. One example is distributed shared memory as used by Nvidia Hopper GPUs. Launching a kernel that supports distributed shared memory requires specifying a set of “cluster” dimensions, in units of work-groups, over which the shared memory is “distributed”. Additionally some applications require specification of kernel properties at launch-time.

This extension is a future-proof and portable solution that supports these two requirements. Instead of using a fixed set of kernel enqueue arguments, the approach is to introduce the ur_exp_launch_property_t type that enables a more extendable API.

Each ur_exp_launch_property_t instance corresponds to a specific kernel launch property. Only one new function is introduced: urEnqueueKernelLaunchCustomExp. urEnqueueKernelLaunchCustomExp takes an array of ur_exp_launch_property_t as an argument, and launches a kernel using these properties. urEnqueueKernelLaunchCustomExp corresponds closely to the CUDA Driver API cuLaunchKernelEx.

Many kernel lauch properties can be supported, such as cooperative kernel launches. As such, eventually this extension should be able to replace the cooperative kernels Unified-Runtime extension.

Support#

Adapters which support this experimental feature must return true when queried for UR_DEVICE_INFO_LAUNCH_PROPERTIES_SUPPORT_EXP via urDeviceGetInfo. Conversely, before using any of the functionality defined in this experimental feature the user must use the device query to determine if the adapter supports this feature.

Changelog#

Revision

Changes

1.0

Initial Draft

1.1

Switch from extension string macro to device info enum for reporting support.

Contributors#