Table of Contents

Class MetalUnifiedMemoryBuffer

Namespace
DotCompute.Backends.Metal.Memory
Assembly
DotCompute.Backends.Metal.dll

Metal unified memory buffer optimized for Apple Silicon, providing zero-copy access between CPU and GPU on systems with unified memory architecture.

public sealed class MetalUnifiedMemoryBuffer : IUnifiedMemoryBuffer, IAsyncDisposable, IDisposable
Inheritance
MetalUnifiedMemoryBuffer
Implements
Inherited Members
Extension Methods

Constructors

MetalUnifiedMemoryBuffer(long, MemoryOptions, bool)

Initializes a new instance of the MetalUnifiedMemoryBuffer class.

public MetalUnifiedMemoryBuffer(long sizeInBytes, MemoryOptions options, bool isAppleSilicon)

Parameters

sizeInBytes long

The size in bytes.

options MemoryOptions

Memory options.

isAppleSilicon bool

Whether running on Apple Silicon.

Properties

IsAppleSiliconOptimized

Gets whether this buffer uses Apple Silicon unified memory optimizations.

public bool IsAppleSiliconOptimized { get; }

Property Value

bool

IsDisposed

Gets whether the buffer has been disposed.

public bool IsDisposed { get; }

Property Value

bool

NativeHandle

Gets the native Metal buffer handle.

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

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.

InitializeAsync(CancellationToken)

Initializes the unified memory buffer.

public ValueTask InitializeAsync(CancellationToken cancellationToken)

Parameters

cancellationToken CancellationToken

Returns

ValueTask

PrefetchAsync(long, long, CancellationToken)

Prefetches memory to optimize upcoming operations.

public ValueTask PrefetchAsync(long offset, long length, CancellationToken cancellationToken = default)

Parameters

offset long
length long
cancellationToken CancellationToken

Returns

ValueTask

SynchronizeAsync(CancellationToken)

Synchronizes memory between CPU and GPU caches (if needed).

public ValueTask SynchronizeAsync(CancellationToken cancellationToken = default)

Parameters

cancellationToken CancellationToken

Returns

ValueTask