Table of Contents

Class CudaStreamManager

Namespace
DotCompute.Backends.CUDA.Execution
Assembly
DotCompute.Backends.CUDA.dll

Advanced CUDA stream manager with RTX 2000 optimizations, priority scheduling, and graph-like execution patterns

public sealed class CudaStreamManager : IDisposable, IAsyncDisposable
Inheritance
CudaStreamManager
Implements
Inherited Members
Extension Methods

Constructors

CudaStreamManager(CudaContext, ILogger<CudaStreamManager>)

Initializes a new instance of the CudaStreamManager class.

public CudaStreamManager(CudaContext context, ILogger<CudaStreamManager> logger)

Parameters

context CudaContext

The context.

logger ILogger<CudaStreamManager>

The logger.

Properties

DefaultStream

Gets the default CUDA stream (stream 0)

public nint DefaultStream { get; }

Property Value

nint

HighPriorityStream

Gets the high priority stream for critical operations (backward compatibility)

public nint HighPriorityStream { get; }

Property Value

nint

LowPriorityStream

Gets the low priority stream for background operations (backward compatibility)

public nint LowPriorityStream { get; }

Property Value

nint

RtxOptimizedStreams

Gets RTX 2000 optimized streams for maximum performance

public IReadOnlyList<nint> RtxOptimizedStreams { get; }

Property Value

IReadOnlyList<nint>

Methods

AddStreamCallback(StreamId, Func<StreamId, Task>)

Adds a callback to be executed when stream operations complete

public void AddStreamCallback(StreamId streamId, Func<StreamId, Task> callback)

Parameters

streamId StreamId
callback Func<StreamId, Task>

CreateRtxOptimizedGroupAsync(string, CudaStreamPriority, CancellationToken)

Creates a high-performance stream group optimized for RTX 2000

public Task<CudaStreamGroup> CreateRtxOptimizedGroupAsync(string groupName, CudaStreamPriority priority = CudaStreamPriority.High, CancellationToken cancellationToken = default)

Parameters

groupName string
priority CudaStreamPriority
cancellationToken CancellationToken

Returns

Task<CudaStreamGroup>

CreateStreamAsync(CudaStreamFlags, CudaStreamPriority, CancellationToken)

Creates a new CUDA stream with advanced options

public Task<CudaStreamHandle> CreateStreamAsync(CudaStreamFlags flags = CudaStreamFlags.NonBlocking, CudaStreamPriority priority = CudaStreamPriority.Normal, CancellationToken cancellationToken = default)

Parameters

flags CudaStreamFlags
priority CudaStreamPriority
cancellationToken CancellationToken

Returns

Task<CudaStreamHandle>

CreateStreamBatchAsync(int, CudaStreamFlags, CudaStreamPriority, CancellationToken)

Creates a batch of streams for parallel execution

public Task<CudaStreamHandle[]> CreateStreamBatchAsync(int count, CudaStreamFlags flags = CudaStreamFlags.NonBlocking, CudaStreamPriority priority = CudaStreamPriority.Normal, CancellationToken cancellationToken = default)

Parameters

count int
flags CudaStreamFlags
priority CudaStreamPriority
cancellationToken CancellationToken

Returns

Task<CudaStreamHandle[]>

Dispose()

Performs dispose.

public void Dispose()

DisposeAsync()

Performs async dispose.

public ValueTask DisposeAsync()

Returns

ValueTask

ExecuteGraphAsync(CudaExecutionGraph, CancellationToken)

Implements graph-like execution pattern with dependencies

public Task ExecuteGraphAsync(CudaExecutionGraph graph, CancellationToken cancellationToken = default)

Parameters

graph CudaExecutionGraph
cancellationToken CancellationToken

Returns

Task

GetPooledStreamAsync(CudaStreamPriority, CancellationToken)

Gets or creates a stream from the pool for temporary use

public Task<CudaStreamHandle> GetPooledStreamAsync(CudaStreamPriority priority = CudaStreamPriority.Normal, CancellationToken cancellationToken = default)

Parameters

priority CudaStreamPriority
cancellationToken CancellationToken

Returns

Task<CudaStreamHandle>

GetStatistics()

Gets comprehensive stream statistics for monitoring

public CudaStreamStatistics GetStatistics()

Returns

CudaStreamStatistics

GetStreamHealth()

Gets the stream health.

public double GetStreamHealth()

Returns

double

The stream health.

IsStreamReady(StreamId)

Checks if a stream is ready (all operations completed)

public bool IsStreamReady(StreamId streamId)

Parameters

streamId StreamId

Returns

bool

OptimizeForRtx2000()

Optimizes stream usage for RTX 2000 architecture

public void OptimizeForRtx2000()

OptimizeStreamUsage()

Optimizes stream usage (backward compatibility)

public void OptimizeStreamUsage()

SynchronizeStreamAsync(StreamId, TimeSpan?, CancellationToken)

Synchronizes a stream asynchronously with advanced options

public Task SynchronizeStreamAsync(StreamId streamId, TimeSpan? timeout = null, CancellationToken cancellationToken = default)

Parameters

streamId StreamId
timeout TimeSpan?
cancellationToken CancellationToken

Returns

Task

SynchronizeStreamsAsync(StreamId, StreamId, nint, CancellationToken)

Implements event-based synchronization between streams

public Task SynchronizeStreamsAsync(StreamId waitingStream, StreamId signalStream, nint eventHandle, CancellationToken cancellationToken = default)

Parameters

waitingStream StreamId
signalStream StreamId
eventHandle nint
cancellationToken CancellationToken

Returns

Task