Interface IUnifiedMemoryBuffer<T>
- Namespace
- DotCompute.Abstractions
- Assembly
- DotCompute.Abstractions.dll
Unified memory buffer interface that combines the best features from all buffer implementations. This is the ONLY memory buffer interface in the entire solution.
public interface IUnifiedMemoryBuffer<T> : IUnifiedMemoryBuffer, IAsyncDisposable, IDisposable where T : unmanaged
Type Parameters
TThe unmanaged element type.
- Inherited Members
- Extension Methods
Properties
Accelerator
Gets the accelerator this buffer is associated with.
IAccelerator Accelerator { get; }
Property Value
ElementCount
Gets the number of elements in the buffer (alias for Length).
int ElementCount { get; }
Property Value
IsDirty
Gets whether the buffer has been modified and needs synchronization.
bool IsDirty { get; }
Property Value
IsOnDevice
Gets whether the buffer is currently available on the device.
bool IsOnDevice { get; }
Property Value
IsOnHost
Gets whether the buffer is currently available on the host.
bool IsOnHost { get; }
Property Value
Length
Gets the number of elements in the buffer.
int Length { get; }
Property Value
Methods
AsMemory()
Gets a memory handle to the host memory. Will trigger transfer if needed.
Memory<T> AsMemory()
Returns
- Memory<T>
AsReadOnlyMemory()
Gets a read-only memory handle to the host memory. Will trigger transfer if needed.
ReadOnlyMemory<T> AsReadOnlyMemory()
Returns
AsReadOnlySpan()
Gets a read-only span to the host memory. Will trigger transfer if needed.
ReadOnlySpan<T> AsReadOnlySpan()
Returns
- ReadOnlySpan<T>
AsSpan()
Gets a span to the host memory. Will trigger transfer if needed.
Span<T> AsSpan()
Returns
- Span<T>
AsType<TNew>()
Creates a view of this buffer with a different element type.
IUnifiedMemoryBuffer<TNew> AsType<TNew>() where TNew : unmanaged
Returns
- IUnifiedMemoryBuffer<TNew>
A view of this buffer as the new type.
Type Parameters
TNewThe new element type.
CopyFromAsync(ReadOnlyMemory<T>, CancellationToken)
Copies data from a source memory into this buffer.
ValueTask CopyFromAsync(ReadOnlyMemory<T> source, CancellationToken cancellationToken = default)
Parameters
sourceReadOnlyMemory<T>cancellationTokenCancellationToken
Returns
CopyToAsync(IUnifiedMemoryBuffer<T>, CancellationToken)
Copies data from this buffer to another buffer.
ValueTask CopyToAsync(IUnifiedMemoryBuffer<T> destination, CancellationToken cancellationToken = default)
Parameters
destinationIUnifiedMemoryBuffer<T>cancellationTokenCancellationToken
Returns
CopyToAsync(int, IUnifiedMemoryBuffer<T>, int, int, CancellationToken)
Copies data from this buffer to another buffer with specified ranges.
ValueTask CopyToAsync(int sourceOffset, IUnifiedMemoryBuffer<T> destination, int destinationOffset, int count, CancellationToken cancellationToken = default)
Parameters
sourceOffsetintdestinationIUnifiedMemoryBuffer<T>destinationOffsetintcountintcancellationTokenCancellationToken
Returns
CopyToAsync(Memory<T>, CancellationToken)
Copies data from this buffer to a destination memory.
ValueTask CopyToAsync(Memory<T> destination, CancellationToken cancellationToken = default)
Parameters
destinationMemory<T>cancellationTokenCancellationToken
Returns
EnsureOnDevice()
Ensures the buffer is available on the device. Triggers transfer if needed.
void EnsureOnDevice()
EnsureOnDeviceAsync(AcceleratorContext, CancellationToken)
Asynchronously ensures the buffer is available on the device.
ValueTask EnsureOnDeviceAsync(AcceleratorContext context = default, CancellationToken cancellationToken = default)
Parameters
contextAcceleratorContextcancellationTokenCancellationToken
Returns
EnsureOnHost()
Ensures the buffer is available on the host. Triggers transfer if needed.
void EnsureOnHost()
EnsureOnHostAsync(AcceleratorContext, CancellationToken)
Asynchronously ensures the buffer is available on the host.
ValueTask EnsureOnHostAsync(AcceleratorContext context = default, CancellationToken cancellationToken = default)
Parameters
contextAcceleratorContextcancellationTokenCancellationToken
Returns
FillAsync(T, int, int, CancellationToken)
Fills a portion of this buffer with a specified value.
ValueTask FillAsync(T value, int offset, int count, CancellationToken cancellationToken = default)
Parameters
valueToffsetintcountintcancellationTokenCancellationToken
Returns
FillAsync(T, CancellationToken)
Fills this buffer with a specified value.
ValueTask FillAsync(T value, CancellationToken cancellationToken = default)
Parameters
valueTcancellationTokenCancellationToken
Returns
GetDeviceMemory()
Gets the device memory handle. Will trigger transfer if needed.
DeviceMemory GetDeviceMemory()
Returns
Map(MapMode)
Maps this buffer to host memory for direct access.
MappedMemory<T> Map(MapMode mode = MapMode.ReadWrite)
Parameters
modeMapModeThe mapping mode.
Returns
- MappedMemory<T>
A mapped memory region.
MapAsync(MapMode, CancellationToken)
Asynchronously maps this buffer to host memory.
ValueTask<MappedMemory<T>> MapAsync(MapMode mode = MapMode.ReadWrite, CancellationToken cancellationToken = default)
Parameters
modeMapModeThe mapping mode.
cancellationTokenCancellationTokenCancellation token.
Returns
- ValueTask<MappedMemory<T>>
A task that returns the mapped memory region.
MapRange(int, int, MapMode)
Maps a portion of this buffer to host memory for direct access.
MappedMemory<T> MapRange(int offset, int length, MapMode mode = MapMode.ReadWrite)
Parameters
offsetintThe offset to start mapping at.
lengthintThe number of elements to map.
modeMapModeThe mapping mode.
Returns
- MappedMemory<T>
A mapped memory region.
MarkDeviceDirty()
Marks the buffer as modified on the device.
void MarkDeviceDirty()
MarkHostDirty()
Marks the buffer as modified on the host.
void MarkHostDirty()
Slice(int, int)
Creates a slice of this buffer.
IUnifiedMemoryBuffer<T> Slice(int offset, int length)
Parameters
Returns
- IUnifiedMemoryBuffer<T>
A slice of this buffer.
Synchronize()
Synchronizes the buffer state between host and device.
void Synchronize()
SynchronizeAsync(AcceleratorContext, CancellationToken)
Asynchronously synchronizes the buffer state between host and device.
ValueTask SynchronizeAsync(AcceleratorContext context = default, CancellationToken cancellationToken = default)
Parameters
contextAcceleratorContextcancellationTokenCancellationToken