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
bytesTransferredlongdurationTimeSpanaccessCountintaccessPatternMemoryAccessPatterncacheHitRatedoublecacheMissesintlatencyNanosecondslongsourceMemoryTypeMemoryTypedestinationMemoryTypeMemoryTypealignmentBytesintisCoalescedboolpeakMemoryUsagelongfragmentationEventsint
Fields
AccessCount
Number of memory access operations
public readonly int AccessCount
Field Value
AccessPattern
Memory access pattern type
public readonly MemoryAccessPattern AccessPattern
Field Value
AlignmentBytes
Memory alignment in bytes
public readonly int AlignmentBytes
Field Value
BandwidthBytesPerSecond
Calculated bandwidth in bytes per second
public readonly double BandwidthBytesPerSecond
Field Value
BytesTransferred
Total bytes transferred
public readonly long BytesTransferred
Field Value
CacheHitRate
Cache hit rate (0.0 to 1.0)
public readonly double CacheHitRate
Field Value
CacheMisses
Number of cache misses
public readonly int CacheMisses
Field Value
DestinationMemoryType
Destination memory type
public readonly MemoryType DestinationMemoryType
Field Value
Duration
Duration of the memory operation
public readonly TimeSpan Duration
Field Value
EfficiencyScore
Memory efficiency score (0.0 to 1.0)
public readonly double EfficiencyScore
Field Value
FragmentationEvents
Number of memory fragmentation events
public readonly int FragmentationEvents
Field Value
IsCoalesced
Whether the operation was coalesced
public readonly bool IsCoalesced
Field Value
LatencyNanoseconds
Memory latency in nanoseconds
public readonly long LatencyNanoseconds
Field Value
PeakMemoryUsage
Peak memory usage during operation
public readonly long PeakMemoryUsage
Field Value
SourceMemoryType
Source memory type
public readonly MemoryType SourceMemoryType
Field Value
Properties
AverageBytesPerAccess
Average bytes per access
public double AverageBytesPerAccess { get; }
Property Value
BandwidthGBPerSecond
Bandwidth in gigabytes per second
public double BandwidthGBPerSecond { get; }
Property Value
BandwidthMBPerSecond
Bandwidth in megabytes per second
public double BandwidthMBPerSecond { get; }
Property Value
Empty
Creates empty metrics
public static MemoryAccessMetrics Empty { get; }
Property Value
IsCrossDevice
Whether this is a cross-device memory transfer
public bool IsCrossDevice { get; }
Property Value
IsHighPerformance
Whether this is a high-performance access (>80% efficiency)
public bool IsHighPerformance { get; }
Property Value
LatencyMicroseconds
Latency in microseconds
public double LatencyMicroseconds { get; }
Property Value
Methods
Combine(params MemoryAccessMetrics[])
Combines multiple metrics into aggregate metrics
public static MemoryAccessMetrics Combine(params MemoryAccessMetrics[] metrics)
Parameters
metricsMemoryAccessMetrics[]
Returns
Equals(MemoryAccessMetrics)
Determines whether the current instance is equal to another MemoryAccessMetrics instance.
public bool Equals(MemoryAccessMetrics other)
Parameters
otherMemoryAccessMetricsThe 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
objobjectThe 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
byteslongstopwatchStopwatchpatternMemoryAccessPattern
Returns
FromTransfer(long, TimeSpan)
Creates metrics from a simple transfer
public static MemoryAccessMetrics FromTransfer(long bytes, TimeSpan duration)
Parameters
Returns
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
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
leftMemoryAccessMetricsThe first instance to compare.
rightMemoryAccessMetricsThe 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
leftMemoryAccessMetricsThe first instance to compare.
rightMemoryAccessMetricsThe second instance to compare.
Returns
- bool
true if the instances are not equal; otherwise, false.