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

No one assigned

    Labels

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

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions