Table of Contents

Struct MemoryAccessMetrics

Namespace
DotCompute.Abstractions.Types
Assembly
DotCompute.Abstractions.dll

Comprehensive metrics for memory access operations including performance counters, bandwidth utilization, and access patterns

public readonly struct MemoryAccessMetrics : IEquatable<MemoryAccessMetrics>
Implements
Inherited Members

Constructors

MemoryAccessMetrics(long, TimeSpan, int, MemoryAccessPattern, double, int, long, MemoryType, MemoryType, int, bool, long, int)

Comprehensive metrics for memory access operations including performance counters, bandwidth utilization, and access patterns

public MemoryAccessMetrics(long bytesTransferred, TimeSpan duration, int accessCount = 1, MemoryAccessPattern accessPattern = MemoryAccessPattern.Sequential, double cacheHitRate = 0, int cacheMisses = 0, long latencyNanoseconds = 0, MemoryType sourceMemoryType = MemoryType.Host, MemoryType destinationMemoryType = MemoryType.Device, int alignmentBytes = 1, bool isCoalesced = false, long peakMemoryUsage = 0, int fragmentationEvents = 0)

Parameters

bytesTransferred long
duration TimeSpan
accessCount int
accessPattern MemoryAccessPattern
cacheHitRate double
cacheMisses int
latencyNanoseconds long
sourceMemoryType MemoryType
destinationMemoryType MemoryType
alignmentBytes int
isCoalesced bool
peakMemoryUsage long
fragmentationEvents int

Fields

AccessCount

Number of memory access operations

public readonly int AccessCount

Field Value

int

AccessPattern

Memory access pattern type

public readonly MemoryAccessPattern AccessPattern

Field Value

MemoryAccessPattern

AlignmentBytes

Memory alignment in bytes

public readonly int AlignmentBytes

Field Value

int

BandwidthBytesPerSecond

Calculated bandwidth in bytes per second

public readonly double BandwidthBytesPerSecond

Field Value

double

BytesTransferred

Total bytes transferred

public readonly long BytesTransferred

Field Value

long

CacheHitRate

Cache hit rate (0.0 to 1.0)

public readonly double CacheHitRate

Field Value

double

CacheMisses

Number of cache misses

public readonly int CacheMisses

Field Value

int

DestinationMemoryType

Destination memory type

public readonly MemoryType DestinationMemoryType

Field Value

MemoryType

Duration

Duration of the memory operation

public readonly TimeSpan Duration

Field Value

TimeSpan

EfficiencyScore

Memory efficiency score (0.0 to 1.0)

public readonly double EfficiencyScore

Field Value

double

FragmentationEvents

Number of memory fragmentation events

public readonly int FragmentationEvents

Field Value

int

IsCoalesced

Whether the operation was coalesced

public readonly bool IsCoalesced

Field Value

bool

LatencyNanoseconds

Memory latency in nanoseconds

public readonly long LatencyNanoseconds

Field Value

long

PeakMemoryUsage

Peak memory usage during operation

public readonly long PeakMemoryUsage

Field Value

long

SourceMemoryType

Source memory type

public readonly MemoryType SourceMemoryType

Field Value

MemoryType

Properties

AverageBytesPerAccess

Average bytes per access

public double AverageBytesPerAccess { get; }

Property Value

double

BandwidthGBPerSecond

Bandwidth in gigabytes per second

public double BandwidthGBPerSecond { get; }

Property Value

double

BandwidthMBPerSecond

Bandwidth in megabytes per second

public double BandwidthMBPerSecond { get; }

Property Value

double

Empty

Creates empty metrics

public static MemoryAccessMetrics Empty { get; }

Property Value

MemoryAccessMetrics

IsCrossDevice

Whether this is a cross-device memory transfer

public bool IsCrossDevice { get; }

Property Value

bool

IsHighPerformance

Whether this is a high-performance access (>80% efficiency)

public bool IsHighPerformance { get; }

Property Value

bool

LatencyMicroseconds

Latency in microseconds

public double LatencyMicroseconds { get; }

Property Value

double

Methods

Combine(params MemoryAccessMetrics[])

Combines multiple metrics into aggregate metrics

public static MemoryAccessMetrics Combine(params MemoryAccessMetrics[] metrics)

Parameters

metrics MemoryAccessMetrics[]

Returns

MemoryAccessMetrics

Equals(MemoryAccessMetrics)

Determines whether the current instance is equal to another MemoryAccessMetrics instance.

public bool Equals(MemoryAccessMetrics other)

Parameters

other MemoryAccessMetrics

The MemoryAccessMetrics instance to compare with this instance.

Returns

bool

true if the instances are equal; otherwise, false.

Equals(object?)

Determines whether the current instance is equal to a specified object.

public override bool Equals(object? obj)

Parameters

obj object

The object to compare with this instance.

Returns

bool

true if obj is a MemoryAccessMetrics and is equal to this instance; otherwise, false.

FromMeasurement(long, Stopwatch, MemoryAccessPattern)

Creates metrics from a measured operation

public static MemoryAccessMetrics FromMeasurement(long bytes, Stopwatch stopwatch, MemoryAccessPattern pattern = MemoryAccessPattern.Sequential)

Parameters

bytes long
stopwatch Stopwatch
pattern MemoryAccessPattern

Returns

MemoryAccessMetrics

FromTransfer(long, TimeSpan)

Creates metrics from a simple transfer

public static MemoryAccessMetrics FromTransfer(long bytes, TimeSpan duration)

Parameters

bytes long
duration TimeSpan

Returns

MemoryAccessMetrics

GetHashCode()

Returns the hash code for this instance.

public override int GetHashCode()

Returns

int

A hash code for the current instance.

ToDetailedString()

public string ToDetailedString()

Returns

string

ToString()

Returns the fully qualified type name of this instance.

public override string ToString()

Returns

string

The fully qualified type name.

Operators

operator ==(MemoryAccessMetrics, MemoryAccessMetrics)

Determines whether two MemoryAccessMetrics instances are equal.

public static bool operator ==(MemoryAccessMetrics left, MemoryAccessMetrics right)

Parameters

left MemoryAccessMetrics

The first instance to compare.

right MemoryAccessMetrics

The second instance to compare.

Returns

bool

true if the instances are equal; otherwise, false.

operator !=(MemoryAccessMetrics, MemoryAccessMetrics)

Determines whether two MemoryAccessMetrics instances are not equal.

public static bool operator !=(MemoryAccessMetrics left, MemoryAccessMetrics right)

Parameters

left MemoryAccessMetrics

The first instance to compare.

right MemoryAccessMetrics

The second instance to compare.

Returns

bool

true if the instances are not equal; otherwise, false.