Class MetalPinnedMemoryBuffer
- Namespace
- DotCompute.Backends.Metal.Memory
- Assembly
- DotCompute.Backends.Metal.dll
Metal pinned (page-locked) memory buffer optimized for fast CPU-GPU transfers. Provides high-bandwidth transfers by keeping memory pages locked in physical RAM.
public sealed class MetalPinnedMemoryBuffer : IUnifiedMemoryBuffer, IAsyncDisposable, IDisposable
- Inheritance
-
MetalPinnedMemoryBuffer
- Implements
- Inherited Members
- Extension Methods
Constructors
MetalPinnedMemoryBuffer(long, MemoryOptions)
Initializes a new instance of the MetalPinnedMemoryBuffer class.
public MetalPinnedMemoryBuffer(long sizeInBytes, MemoryOptions options)
Parameters
sizeInByteslongThe size in bytes.
optionsMemoryOptionsMemory options.
Properties
IsDisposed
Gets whether the buffer has been disposed.
public bool IsDisposed { get; }
Property Value
IsPinned
Gets whether the memory is currently pinned.
public bool IsPinned { get; }
Property Value
NativeHandle
Gets the native handle to the pinned memory.
public nint NativeHandle { get; }
Property Value
Options
Gets the memory allocation options.
public MemoryOptions Options { get; }
Property Value
SizeInBytes
Gets the size of the buffer in bytes.
public long SizeInBytes { get; }
Property Value
State
Gets the current state of the buffer.
public BufferState State { get; }
Property Value
Methods
AsMemory<T>()
Gets a memory view of the pinned memory.
public Memory<T> AsMemory<T>() where T : unmanaged
Returns
- Memory<T>
Memory representing the pinned memory.
Type Parameters
TThe element type.
AsSpan<T>()
Gets a span view of the pinned memory.
public Span<T> AsSpan<T>() where T : unmanaged
Returns
- Span<T>
A span representing the pinned memory.
Type Parameters
TThe element type.
CopyFromAsync<T>(ReadOnlyMemory<T>, long, CancellationToken)
Copies data from a source memory into this buffer.
public ValueTask CopyFromAsync<T>(ReadOnlyMemory<T> source, long offset = 0, CancellationToken cancellationToken = default) where T : unmanaged
Parameters
sourceReadOnlyMemory<T>The source memory to copy from.
offsetlongThe offset in bytes where to start copying.
cancellationTokenCancellationTokenCancellation token.
Returns
- ValueTask
A task representing the copy operation.
Type Parameters
TThe element type.
CopyFromHostAsync<T>(ReadOnlyMemory<T>, long, CancellationToken)
Legacy support method (calls CopyFromAsync).
public ValueTask CopyFromHostAsync<T>(ReadOnlyMemory<T> source, long offset = 0, CancellationToken cancellationToken = default) where T : unmanaged
Parameters
sourceReadOnlyMemory<T>offsetlongcancellationTokenCancellationToken
Returns
Type Parameters
T
CopyToAsync<T>(Memory<T>, long, CancellationToken)
Copies data from this buffer to a destination memory.
public ValueTask CopyToAsync<T>(Memory<T> destination, long offset = 0, CancellationToken cancellationToken = default) where T : unmanaged
Parameters
destinationMemory<T>The destination memory to copy to.
offsetlongThe offset in bytes where to start copying from.
cancellationTokenCancellationTokenCancellation token.
Returns
- ValueTask
A task representing the copy operation.
Type Parameters
TThe element type.
CopyToHostAsync<T>(Memory<T>, long, CancellationToken)
Legacy support method (calls CopyToAsync).
public ValueTask CopyToHostAsync<T>(Memory<T> destination, long offset = 0, CancellationToken cancellationToken = default) where T : unmanaged
Parameters
destinationMemory<T>offsetlongcancellationTokenCancellationToken
Returns
Type Parameters
T
Dispose()
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
public void Dispose()
DisposeAsync()
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously.
public ValueTask DisposeAsync()
Returns
- ValueTask
A task that represents the asynchronous dispose operation.