Table of Contents

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

sizeInBytes long

The size in bytes.

options MemoryOptions

Memory options.

Properties

IsDisposed

Gets whether the buffer has been disposed.

public bool IsDisposed { get; }

Property Value

bool

IsPinned

Gets whether the memory is currently pinned.

public bool IsPinned { get; }

Property Value

bool

NativeHandle

Gets the native handle to the pinned memory.

public nint NativeHandle { get; }

Property Value

nint

Options

Gets the memory allocation options.

public MemoryOptions Options { get; }

Property Value

MemoryOptions

SizeInBytes

Gets the size of the buffer in bytes.

public long SizeInBytes { get; }

Property Value

long

State

Gets the current state of the buffer.

public BufferState State { get; }

Property Value

BufferState

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

T

The 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

T

The 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

source ReadOnlyMemory<T>

The source memory to copy from.

offset long

The offset in bytes where to start copying.

cancellationToken CancellationToken

Cancellation token.

Returns

ValueTask

A task representing the copy operation.

Type Parameters

T

The 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

source ReadOnlyMemory<T>
offset long
cancellationToken CancellationToken

Returns

ValueTask

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

destination Memory<T>

The destination memory to copy to.

offset long

The offset in bytes where to start copying from.

cancellationToken CancellationToken

Cancellation token.

Returns

ValueTask

A task representing the copy operation.

Type Parameters

T

The 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

destination Memory<T>
offset long
cancellationToken CancellationToken

Returns

ValueTask

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.