Class GpuKernelBase<TIn, TOut>
- Namespace
- Orleans.GpuBridge.Abstractions.Kernels
- Assembly
- Orleans.GpuBridge.Abstractions.dll
Base implementation of IGpuKernel providing common boilerplate. Derive from this class to implement custom kernels.
public abstract class GpuKernelBase<TIn, TOut> : IGpuKernel<TIn, TOut>, IDisposable
Type Parameters
TInTOut
- Inheritance
-
GpuKernelBase<TIn, TOut>
- Implements
-
IGpuKernel<TIn, TOut>
- Derived
- Inherited Members
Properties
BackendProvider
Backend provider name ("CPU", "DotCompute", "CUDA", etc.)
public abstract string BackendProvider { get; }
Property Value
DisplayName
Kernel display name for diagnostics
public virtual string DisplayName { get; }
Property Value
IsGpuAccelerated
Whether kernel uses GPU acceleration (false for CPU fallback)
public abstract bool IsGpuAccelerated { get; }
Property Value
IsInitialized
Whether kernel is initialized
public bool IsInitialized { get; }
Property Value
KernelId
Kernel unique identifier
public abstract string KernelId { get; }
Property Value
Methods
Dispose()
Dispose kernel resources. Override to cleanup GPU memory, handles, etc.
public virtual void Dispose()
EnsureInitialized()
Ensures kernel is initialized before execution
protected void EnsureInitialized()
EnsureNotDisposed()
Ensures kernel is not disposed
protected void EnsureNotDisposed()
ExecuteAsync(TIn, CancellationToken)
Execute kernel with single input. Must be implemented by derived classes.
public abstract Task<TOut> ExecuteAsync(TIn input, CancellationToken cancellationToken = default)
Parameters
inputTIncancellationTokenCancellationToken
Returns
- Task<TOut>
ExecuteBatchAsync(TIn[], CancellationToken)
Execute kernel with batch input. Default implementation calls ExecuteAsync for each item (override for batch optimization).
public virtual Task<TOut[]> ExecuteBatchAsync(TIn[] inputs, CancellationToken cancellationToken = default)
Parameters
inputsTIn[]cancellationTokenCancellationToken
Returns
- Task<TOut[]>
GetEstimatedExecutionTimeMicroseconds(int)
Get estimated execution time for input size. Override for more accurate estimates based on kernel complexity.
public virtual long GetEstimatedExecutionTimeMicroseconds(int inputSize)
Parameters
inputSizeint
Returns
GetMemoryRequirements()
Get memory requirements for kernel execution. Override to provide accurate memory estimates.
public virtual KernelMemoryRequirements GetMemoryRequirements()
Returns
InitializeAsync(CancellationToken)
Initialize kernel resources. Override to perform custom initialization (e.g., compile GPU code).
public virtual Task InitializeAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken
Returns
ValidateInput(TIn)
Validate input data. Override for custom validation logic.
public virtual KernelValidationResult ValidateInput(TIn input)
Parameters
inputTIn
Returns
WarmupAsync(CancellationToken)
Warmup kernel for optimal performance. Override to perform custom warmup (e.g., JIT compilation, cache warming).
public virtual Task WarmupAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken