Skip to content

[FEA]: Add support for CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY in LaunchConfig #2628

Description

@lijinf2

Is this a duplicate?

Area

cuda.core

Is your feature request related to a problem? Please describe.

LaunchConfig does not expose CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY, which overrides the CPU wait policy (SPIN / YIELD / BLOCKING_SYNC) for a launch.

Parent tracking: #496.

Describe the solution you'd like

  • Users can set CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY via LaunchConfig.
  • Mapping to the native launch attribute is tested.

Describe alternatives you've considered

  1. Use cuda.bindings.driver (CUlaunchAttribute / CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY) and cuLaunchKernelEx directly.
  2. Set the stream attribute via cuStreamSetAttribute(..., CU_STREAM_ATTRIBUTE_SYNCHRONIZATION_POLICY, ...) instead of a per-launch attribute.

Downside of (1)/(2): leaves cuda.core users without a first-class LaunchConfig API; they must drop to low-level bindings and lose consistency with other LaunchConfig launch attributes (is_cooperative, programmatic_stream_serialization, etc.).

Additional context

Incremental LaunchConfig attribute coverage under #496 (same approach as #1334 for programmatic_stream_serialization).

Example (C API) — agent-generated; reviewed but not executed:

// Per-launch SPIN policy (lowest-latency host sync)
CUlaunchAttribute syncAttr = {
    .id    = CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY,
    .value = { .syncPolicy = CU_SYNC_POLICY_SPIN }
};

CUlaunchConfig config = {
    .gridDimX = 128, .gridDimY = 1, .gridDimZ = 1,
    .blockDimX = 256, .blockDimY = 1, .blockDimZ = 1,
    .sharedMemBytes = 0,
    .hStream = latencyCriticalStream,
    .attrs = &syncAttr,
    .numAttrs = 1
};

cuLaunchKernelEx(&config, kernel, NULL, NULL);

// Subsequent sync on this stream busy-waits on CPU
cuStreamSynchronize(latencyCriticalStream);

Metadata

Metadata

Assignees

Labels

cuda.coreEverything related to the cuda.core modulefeatureNew feature or request

Type

No type

Projects

Status
In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions