# Agnostic Energy Consumption Models for Heterogeneous GPUs in Cloud Computing
## 3 Power and Energy Models
### Input Selection
Increasing the number of applications and applying this correlation analysis will show us how strong the correlation is, and this correlation analysis will give us a clear and more confident view of the relationship between each selected performance counter and power consumption, unlike applying the correlation analysis on only one application with a regular increase, such as in Phase 1. Therefore, \(\Omega\) is calculated to find the average of the correlation analysis values of all selected counters in each GPU and used as an appropriate threshold like [35; 36] using Equation (2):  
\[\Omega=\sum_{c=1}^{n}\left|\frac{\text{P}}{n}\right| \tag{2}\]  
where P is the value of every performance counter and n is the total number of performance counters in Phase 2 in every used GPU. Therefore, \(\Omega\) aims to calculate the average of all performance counters in Phase 2 for every GPU after using the absolute value. The value of \(\Omega\) is 0.232 and 0.087 for Fermi C2075 and Kepler K40c (Taiwan Semiconductor Manufacturing Company (TSMC), Hsinchu, Taiwan), respectively. Then, \(\Omega\) is assigned to be a threshold value to compare it with each selected counter in Phase 2. If the Pearson correlation coefficient \(Pt2_{c}\) is greater than or equal to the threshold value \(\Omega\) (line 32), the performance counter metric will be added to the PC set. Otherwise, the metric will be rejected. The candidacy algorithm applies to the performance counters twice on Fermi and Kepler GPUs' performance counters. According to the candidacy algorithm's outcomes, there are nine and six selected counter metrics for the model inputs for Fermi C2075 and Kepler K40c, respectively. After applying the developed candidacy algorithm, we found that performance counters can not only be considered to develop GPU power models, as shown in Tables 3 and 4. \begin{table}
\begin{tabular}{c c c} \hline \hline
**Metric Name** & **Description** & \(Pt2_{c}\)**Value** \\ \hline Gld\_transactions\_per\_request & The average number of transactions of the global memory load & \(-\)0.187 \\  & conducted for every global memory request & \\ \hline Gld\_transactions & Transactions of global memory load number & 0.102 \\ \hline Inst\_per\_warp & The average number of instructions run by every warp & 0.165 \\ \hline DRAM\_read\_transactions & The GPU device RAM read transactions number & \(-\)0.090 \\ \hline IPC & Instructions performed per cycle number & 0.275 \\ \hline Issued\_IPC & Issued number of instructions for every cycle & 0.214 \\ \hline \hline \end{tabular}
\end{table} 
Table 4: Selected performance counters for Kepler K40c. \begin{table}
\begin{tabular}{c c c} \hline \hline
**Metric Name** & **Description** & \(Pt2_{c}\)**Value** \\ \hline Gst\_transactions & Transactions of global memory store number & 0.281 \\  & Error-correcting code memory transactions sent between L2 cache & \\  & memory and DRAM memory number & 0.421 \\ \hline L2\_read\_transactions & L2 cache memory read transactions number & 0.236 \\ \hline L2\_write\_transactions & L2 cache memory write transactions number & 0.281 \\ \hline L2\_L1\_read\_transactions & Memory read transactions requested by L1 cache memory and seen & 0.310 \\  & in L2 cache memory number & \\ \hline L2\_L1\_write\_transactions & Memory write transactions requested by L1 cache memory and seen & 0.310 \\  & in L2 cache memory number & 0.310 \\ \hline Eligible\_warps\_per\_cycle & The average number of eligible wraps to be issued in every cycle & 0.291 \\ \hline DRAM\_read\_transactions & The GPU device RAM read transactions number & 0.293 \\ \hline DRAM\_write\_transactions & The GPU device RAM write transactions number & 0.284 \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Selected performance counters for Fermi C2075.