Skip to content

Commit 91d5b67

Browse files
authored
add frequency scaling metric
1 parent 7d941a3 commit 91d5b67

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

pypop/metrics/openmp.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@
4949
"The IPC rate can be reduced due to CPU data starvation, inefficient cache usage or "
5050
"high rates of branch misprediction."
5151
)
52-
52+
k_FREQSC_desc = (
53+
"Inefficiencies due to processor execution frequency changes. The frequency is typically "
54+
"reduced due to either incorrect choice of CPU scheduler or overheating of the CPU."
55+
)
5356

5457
class OpenMP_Metrics(MetricSet):
5558
"""Proposed Hybrid MPI+OpenMP Metrics.
@@ -63,6 +66,7 @@ class OpenMP_Metrics(MetricSet):
6366
Metric("Computational Scaling", 1, desc=k_COMPSC_desc),
6467
Metric("Instruction Scaling", 2, desc=k_INSSC_desc),
6568
Metric("IPC Scaling", 2, "IPC Scaling", desc=k_IPCSC_desc),
69+
Metric("Frequency Scaling", 2, "Frequency Scaling", desc=k_FREQSC_desc),
6670
]
6771

6872
_programming_model = "OpenMP"
@@ -138,6 +142,13 @@ def _calculate_metrics(self, ref_key=None, sort_keys=True):
138142
/ stats["Total Useful Computation"].sum()
139143
)
140144

145+
metrics["Frequency Scaling"] = (
146+
stats["Useful Cycles"].sum() / stats["Total Useful Computation"].sum()
147+
) / (
148+
self._stats_dict[ref_key].statistics["Useful Cycles"].sum()
149+
/ self._stats_dict[ref_key].statistics["Total Useful Computation"].sum()
150+
)
151+
141152
metrics["Global Efficiency"] = (
142153
metrics["Computational Scaling"] * metrics["Parallel Efficiency"]
143154
)

0 commit comments

Comments
 (0)