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
5457class 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