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
contextCudaContextThe context.
loggerILogger<CudaStreamManager>The logger.
Properties
DefaultStream
Gets the default CUDA stream (stream 0)
public nint DefaultStream { get; }
Property Value
HighPriorityStream
Gets the high priority stream for critical operations (backward compatibility)
public nint HighPriorityStream { get; }
Property Value
LowPriorityStream
Gets the low priority stream for background operations (backward compatibility)
public nint LowPriorityStream { get; }
Property Value
RtxOptimizedStreams
Gets RTX 2000 optimized streams for maximum performance
public IReadOnlyList<nint> RtxOptimizedStreams { get; }
Property Value
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
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
groupNamestringpriorityCudaStreamPrioritycancellationTokenCancellationToken
Returns
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
flagsCudaStreamFlagspriorityCudaStreamPrioritycancellationTokenCancellationToken
Returns
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
countintflagsCudaStreamFlagspriorityCudaStreamPrioritycancellationTokenCancellationToken
Returns
Dispose()
Performs dispose.
public void Dispose()
DisposeAsync()
Performs async dispose.
public ValueTask DisposeAsync()
Returns
ExecuteGraphAsync(CudaExecutionGraph, CancellationToken)
Implements graph-like execution pattern with dependencies
public Task ExecuteGraphAsync(CudaExecutionGraph graph, CancellationToken cancellationToken = default)
Parameters
graphCudaExecutionGraphcancellationTokenCancellationToken
Returns
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
priorityCudaStreamPrioritycancellationTokenCancellationToken
Returns
GetStatistics()
Gets comprehensive stream statistics for monitoring
public CudaStreamStatistics GetStatistics()
Returns
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
streamIdStreamId
Returns
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
streamIdStreamIdtimeoutTimeSpan?cancellationTokenCancellationToken
Returns
SynchronizeStreamsAsync(StreamId, StreamId, nint, CancellationToken)
Implements event-based synchronization between streams
public Task SynchronizeStreamsAsync(StreamId waitingStream, StreamId signalStream, nint eventHandle, CancellationToken cancellationToken = default)
Parameters
waitingStreamStreamIdsignalStreamStreamIdeventHandlenintcancellationTokenCancellationToken