mirror of
https://github.com/NVIDIA/nvbench.git
synced 2026-07-13 02:27:22 +00:00
Add "nv/cold/sm_clock_rate/mean" to GPU time summary data
Its intent is to be cheaply retrievable metric of average SM clock frequence over entire sample
This commit is contained in:
@@ -40,6 +40,7 @@ GPU_TIME_STDEV_RELATIVE_TAG = "nv/cold/time/gpu/stdev/relative"
|
||||
GPU_TIME_MEDIAN_TAG = "nv/cold/time/gpu/median"
|
||||
GPU_TIME_IR_TAG = "nv/cold/time/gpu/ir/absolute"
|
||||
GPU_TIME_IR_RELATIVE_TAG = "nv/cold/time/gpu/ir/relative"
|
||||
GPU_SM_CLOCK_RATE_MEAN_TAG = "nv/cold/sm_clock_rate/mean"
|
||||
SAMPLE_TIMES_TAG = "nv/json/bin:nv/cold/sample_times"
|
||||
SAMPLE_FREQUENCIES_TAG = "nv/json/freqs-bin:nv/cold/sample_freqs"
|
||||
|
||||
@@ -81,6 +82,7 @@ class GpuTimingData:
|
||||
median: float | None
|
||||
interquartile_range: float | None
|
||||
interquartile_range_relative: float | None
|
||||
sm_clock_rate_mean: float | None = None
|
||||
sample_source: Float32BinarySource | None = None
|
||||
frequency_source: Float32BinarySource | None = None
|
||||
|
||||
@@ -466,6 +468,7 @@ def extract_gpu_timing_data(summaries, json_dir=None, float32_reader=read_float3
|
||||
interquartile_range_relative=extract_summary_float(
|
||||
summaries, GPU_TIME_IR_RELATIVE_TAG, null_value=math.inf
|
||||
),
|
||||
sm_clock_rate_mean=extract_summary_float(summaries, GPU_SM_CLOCK_RATE_MEAN_TAG),
|
||||
sample_source=sample_source,
|
||||
frequency_source=frequency_source,
|
||||
)
|
||||
|
||||
@@ -119,6 +119,7 @@ def make_gpu_timing_data(
|
||||
median=None,
|
||||
interquartile_range=None,
|
||||
interquartile_range_relative=None,
|
||||
sm_clock_rate_mean=None,
|
||||
):
|
||||
return nvbench_compare.GpuTimingData(
|
||||
minimum=None,
|
||||
@@ -129,6 +130,7 @@ def make_gpu_timing_data(
|
||||
median=median,
|
||||
interquartile_range=interquartile_range,
|
||||
interquartile_range_relative=interquartile_range_relative,
|
||||
sm_clock_rate_mean=sm_clock_rate_mean,
|
||||
)
|
||||
|
||||
|
||||
@@ -385,6 +387,18 @@ def test_gpu_timing_data_loads_samples_and_frequencies_lazily(
|
||||
assert reader_calls == [str(samples_file), str(freqs_file)]
|
||||
|
||||
|
||||
def test_gpu_timing_data_parses_sm_clock_rate_mean(nvbench_compare):
|
||||
timing = nvbench_compare.extract_gpu_timing_data(
|
||||
[
|
||||
make_summary(nvbench_compare, "GPU_TIME_MEAN_TAG", "2.0"),
|
||||
make_summary(nvbench_compare, "GPU_SM_CLOCK_RATE_MEAN_TAG", "1.5e9"),
|
||||
],
|
||||
)
|
||||
|
||||
assert timing.sm_clock_rate_mean == pytest.approx(1.5e9)
|
||||
assert timing.frequencies is None
|
||||
|
||||
|
||||
def test_gpu_timing_data_treats_mismatched_sample_and_frequency_counts_as_unavailable(
|
||||
tmp_path, nvbench_compare
|
||||
):
|
||||
|
||||
Reference in New Issue
Block a user