Table of Contents

Class CpuMemoryManager

Namespace
DotCompute.Backends.CPU.Accelerators
Assembly
DotCompute.Backends.CPU.dll

NUMA-aware CPU memory manager that inherits from BaseMemoryManager. Reduces 1,232 lines to ~150 lines by leveraging base class functionality.

public sealed class CpuMemoryManager : BaseMemoryManager, IUnifiedMemoryManager, IAsyncDisposable, IDisposable
Inheritance
CpuMemoryManager
Implements
Inherited Members
Extension Methods

Constructors

CpuMemoryManager(ILogger<CpuMemoryManager>, NumaMemoryPolicy?)

NUMA-aware CPU memory manager that inherits from BaseMemoryManager. Reduces 1,232 lines to ~150 lines by leveraging base class functionality.

public CpuMemoryManager(ILogger<CpuMemoryManager> logger, NumaMemoryPolicy? defaultPolicy = null)

Parameters

logger ILogger<CpuMemoryManager>
defaultPolicy NumaMemoryPolicy

Properties

Accelerator

Gets the accelerator this memory manager is associated with.

public override IAccelerator Accelerator { get; }

Property Value

IAccelerator

CurrentAllocatedMemory

Gets the current allocated memory in bytes.

public override long CurrentAllocatedMemory { get; }

Property Value

long

MaxAllocationSize

Gets the maximum memory allocation size in bytes.

public override long MaxAllocationSize { get; }

Property Value

long

Statistics

Gets memory usage statistics.

public override MemoryStatistics Statistics { get; }

Property Value

MemoryStatistics

Topology

Gets NUMA topology information.

public NumaTopology Topology { get; }

Property Value

NumaTopology

TotalAvailableMemory

Gets the total available memory in bytes.

public override long TotalAvailableMemory { get; }

Property Value

long

Methods

AllocateAsync(long, MemoryOptions, NumaMemoryPolicy?, CancellationToken)

Allocates memory with NUMA-aware placement.

public ValueTask<IUnifiedMemoryBuffer> AllocateAsync(long sizeInBytes, MemoryOptions options, NumaMemoryPolicy? policy, CancellationToken cancellationToken = default)

Parameters

sizeInBytes long
options MemoryOptions
policy NumaMemoryPolicy
cancellationToken CancellationToken

Returns

ValueTask<IUnifiedMemoryBuffer>

AllocateBufferCoreAsync(long, MemoryOptions, CancellationToken)

Backend-specific buffer allocation implementation.

protected override ValueTask<IUnifiedMemoryBuffer> AllocateBufferCoreAsync(long sizeInBytes, MemoryOptions options, CancellationToken cancellationToken)

Parameters

sizeInBytes long
options MemoryOptions
cancellationToken CancellationToken

Returns

ValueTask<IUnifiedMemoryBuffer>

AllocateInternalAsync(long, MemoryOptions, CancellationToken)

Allocates memory using backend-specific implementation.

protected override ValueTask<IUnifiedMemoryBuffer> AllocateInternalAsync(long sizeInBytes, MemoryOptions options, CancellationToken cancellationToken)

Parameters

sizeInBytes long
options MemoryOptions
cancellationToken CancellationToken

Returns

ValueTask<IUnifiedMemoryBuffer>

Clear()

Clears all allocated memory and resets the manager.

public override void Clear()

CopyAsync<T>(IUnifiedMemoryBuffer<T>, IUnifiedMemoryBuffer<T>, CancellationToken)

Copies data between buffers.

public override ValueTask CopyAsync<T>(IUnifiedMemoryBuffer<T> source, IUnifiedMemoryBuffer<T> destination, CancellationToken cancellationToken) where T : unmanaged

Parameters

source IUnifiedMemoryBuffer<T>

The source buffer.

destination IUnifiedMemoryBuffer<T>

The destination buffer.

cancellationToken CancellationToken

Cancellation token.

Returns

ValueTask

A task representing the copy operation.

Type Parameters

T

The element type.

CopyAsync<T>(IUnifiedMemoryBuffer<T>, int, IUnifiedMemoryBuffer<T>, int, int, CancellationToken)

Copies data between buffers with specified ranges.

public override ValueTask CopyAsync<T>(IUnifiedMemoryBuffer<T> source, int sourceOffset, IUnifiedMemoryBuffer<T> destination, int destinationOffset, int count, CancellationToken cancellationToken) where T : unmanaged

Parameters

source IUnifiedMemoryBuffer<T>

The source buffer.

sourceOffset int

The offset in the source buffer.

destination IUnifiedMemoryBuffer<T>

The destination buffer.

destinationOffset int

The offset in the destination buffer.

count int

The number of elements to copy.

cancellationToken CancellationToken

Cancellation token.

Returns

ValueTask

A task representing the copy operation.

Type Parameters

T

The element type.

CopyFromDeviceAsync<T>(IUnifiedMemoryBuffer<T>, Memory<T>, CancellationToken)

Copies data from a device buffer to host memory.

public override ValueTask CopyFromDeviceAsync<T>(IUnifiedMemoryBuffer<T> source, Memory<T> destination, CancellationToken cancellationToken) where T : unmanaged

Parameters

source IUnifiedMemoryBuffer<T>

The source buffer.

destination Memory<T>

The destination memory.

cancellationToken CancellationToken

Cancellation token.

Returns

ValueTask

A task representing the copy operation.

Type Parameters

T

The element type.

CopyToDeviceAsync<T>(ReadOnlyMemory<T>, IUnifiedMemoryBuffer<T>, CancellationToken)

Copies data from host memory to a device buffer.

public override ValueTask CopyToDeviceAsync<T>(ReadOnlyMemory<T> source, IUnifiedMemoryBuffer<T> destination, CancellationToken cancellationToken) where T : unmanaged

Parameters

source ReadOnlyMemory<T>

The source data.

destination IUnifiedMemoryBuffer<T>

The destination buffer.

cancellationToken CancellationToken

Cancellation token.

Returns

ValueTask

A task representing the copy operation.

Type Parameters

T

The element type.

CreateViewCore(IUnifiedMemoryBuffer, long, long)

Backend-specific view creation implementation.

protected override IUnifiedMemoryBuffer CreateViewCore(IUnifiedMemoryBuffer buffer, long offset, long length)

Parameters

buffer IUnifiedMemoryBuffer
offset long
length long

Returns

IUnifiedMemoryBuffer

CreateView<T>(IUnifiedMemoryBuffer<T>, int, int)

Creates a view over existing memory.

public override IUnifiedMemoryBuffer<T> CreateView<T>(IUnifiedMemoryBuffer<T> buffer, int offset, int length) where T : unmanaged

Parameters

buffer IUnifiedMemoryBuffer<T>

The source buffer.

offset int

The offset in elements.

length int

The length of the view in elements.

Returns

IUnifiedMemoryBuffer<T>

A view over the existing buffer.

Type Parameters

T

The element type.

FreeAsync(IUnifiedMemoryBuffer, CancellationToken)

Asynchronously frees a memory buffer.

public override ValueTask FreeAsync(IUnifiedMemoryBuffer buffer, CancellationToken cancellationToken)

Parameters

buffer IUnifiedMemoryBuffer

The buffer to free.

cancellationToken CancellationToken

Cancellation token.

Returns

ValueTask

A task representing the free operation.

OptimizeAsync(CancellationToken)

Optimizes memory by defragmenting and releasing unused memory.

public override ValueTask OptimizeAsync(CancellationToken cancellationToken)

Parameters

cancellationToken CancellationToken

Cancellation token.

Returns

ValueTask

A task representing the optimization operation.