TASK B / M7 -- energy-to-solution and power co-modelling (ARCHER2)
====================================================================================================
TASK B / M7: power-performance co-modelling on ARCHER2.
M7 was a promised milestone in the feasibility study and was never delivered.
cray_rapl recorded PACKAGE_ENERGY and PP0_ENERGY alongside every counter-set
run, so an energy-to-solution model can be built in the framing used for
runtime.
READ SECTION 0 FIRST. Building this model surfaced a data-provenance defect
in the recorded energy column that invalidates the naive reading of it, and
every number below is reported under BOTH readings so the conclusion can be
seen not to depend on which is right.
Framing. For runtime the project predicts an efficiency factor
eta = t_analytic / t, t_analytic = PAPI_TOT_CYC / f_peak
and reconstructs t = t_analytic / eta. The energy analogue needs an analytic
energy. The natural one is nameplate power times analytic time,
E_analytic = TDP_per_core * ncore * t_analytic, TDP_per_core = 225/128 W
giving zeta = E_analytic / E and E = E_analytic / zeta.
Parameterisations compared, since the task is to find out whether an
efficiency-factor decomposition helps for energy as it does for runtime:
direct predict log10(E) and exponentiate
zeta predict log10(zeta), reconstruct E = E_analytic / zeta
power predict log10(P) with P = E/t, then E = P * t, with t either
MEASURED (semi-oracle: quantifies how much of the energy
problem is really the runtime problem) or predicted by the
project's own RF runtime model.
Baselines, same discipline as the runtime work:
const_zeta constant zeta = training-application median. The direct
analogue of the constant-eta runtime baseline.
tdp_x_tmeas nameplate TDP times MEASURED runtime. Textbook analytic.
fitpower_x_tmeas fitted constant power (training-application median of
E/t) times MEASURED runtime. THE HARD BAR: given a
runtime, this asserts energy carries no information
beyond runtime and one per-machine constant.
fitpower_x_tpred same but runtime predicted too: the fully predictive
constant-power baseline.
LEAKAGE. build_features() contains energy_per_instr (PACKAGE_ENERGY/INS) and
core_energy_frac (PP0/PACKAGE). Both are functions of the target and are
DROPPED for every energy arm here. They remain legitimate for runtime work.
Validation is leave-one-application-out; the metric is the project's symmetric
error factor max(pred/actual, actual/pred).
191 merged configurations, 171 with usable PACKAGE_ENERGY>0 and eta in (0,1.5]; 19 features after dropping ['energy_per_instr', 'core_energy_frac']
====================================================================================================
0. DATA-PROVENANCE DEFECT IN THE RECORDED ENERGY COLUMN
(found while building this model; not previously reported)
Median of the recorded PACKAGE_ENERGY / runtime, by core count:
1c=81.2 2c=40.8 4c=21.0 8c=10.8 16c=6.2 27c=3.7 32c=3.4 64c=2.1 128c=1.9
Read literally this says the package draws 81 W when one core is
busy and 1.9 W when 128 cores are busy. That is impossible. The
values are almost exactly 81.2/nrank, i.e. the recorded number is
ONE RANK'S SHARE of the package energy, not the package total.
Multiplying by nrank restores physical node power:
1c=81W 2c=82W 4c=84W 8c=87W 16c=92W 27c=99W 32c=105W 64c=132W 128c=143W
-- a flat ~81 W idle-ish floor rising to ~143 W at 128 cores, against a
225 W nameplate TDP. That is the expected shape.
Excluding STREAM, node power spans 80-142 W (median 87 W).
SECOND ANOMALY: STREAM did not actually scale. Its instruction
count and runtime are constant in ncore:
runtime: 3.31 3.31 3.33 3.31 3.30 3.36 3.35 3.30
instr/1e9: 3.26 3.26 3.26 3.26 3.26 3.26 3.26 3.26
so its energy is also constant, and the x-nrank correction (which
assumes every rank does a share of the work) inflates it to as much
as 10.9 kW. STREAM is therefore reported separately throughout;
the 82.9 J/s quoted for STREAM in the project notes is the ONLY
application whose raw figure happens to be a true package power,
precisely because it ran on one rank.
THIRD ANOMALY: PACKAGE_ENERGY is quantised to integer Joules.
146/171 values are exact
integers; 22 configurations have E <= 5 J, where +-0.5 J
of quantisation alone is an error factor of up to 1.7-3.0. A
high-energy subset (E >= 50 J, n=109) is reported as a sensitivity check.
PP0 (core domain) is only 1.2% of package, also implausible; PP0 is not used as a target.
CONSEQUENCE FOR THIS TASK. Every model below is fitted under both
readings: (A) energy AS RECORDED, and (B) corrected E*nrank. The
modelling conclusions are the same under both, but the
RUNTIME/ENERGY TRADE-OFF result in section 5 is NOT: under (A)
energy always falls with core count (an artefact of the division),
under (B) it rises. Only (B) is physically meaningful there.
====================================================================================================
1. IS ENERGY A SEPARATE TARGET FROM RUNTIME?
as recorded (A) r(logE,logt)=0.768 (r2=0.590) r(logE,logcyc)=0.776
corrected E*nrank (B) r(logE,logt)=0.851 (r2=0.723) r(logE,logcyc)=0.851
Under either reading runtime alone leaves ~28-40% of log-energy
variance unexplained, so energy is a genuinely separate target and
not a restatement of runtime.
n med_runtime_s med_E_recorded_J med_E_corrected_J med_P_recorded med_P_node_W med_eta
app
comd 22 2.728 29.00 260.0 10.670 84.295 0.833
gromacs 8 202.295 1705.75 18712.0 8.410 90.995 0.844
hpcg 41 38.944 432.50 3936.0 10.996 88.958 0.807
hpl 31 4.342 40.00 448.0 9.767 90.123 0.814
lulesh 13 5.342 39.50 621.0 10.399 98.589 0.693
minife 24 0.886 12.50 77.0 10.788 81.832 0.682
openfoam 8 15.583 151.50 1612.0 9.076 99.449 0.853
stream 24 3.313 277.00 2216.0 82.926 984.643 0.832
====================================================================================================
2. LOAO ENERGY MODELS -- reading A_as_recorded
arm uses t? median p75 p90 geomean med(E>=50J) med(no stream)
------------------------------------------------------------------------------------------------------------
const_zeta predicted/none 10.368 38.260 61.384 9.622 11.385 11.385
tdp_x_tmeas MEASURED 11.507 45.515 60.270 10.267 11.380 11.549
fitpower_x_tpred predicted/none 3.549 6.459 7.711 3.529 4.218 3.192
fitpower_x_tmeas MEASURED 3.582 7.134 7.793 3.468 3.751 3.109
RF_direct predicted/none 1.909 3.208 12.073 2.658 1.909 1.747
GBM_direct predicted/none 1.624 2.435 4.246 1.928 1.562 1.527
RF_zeta predicted/none 1.308 2.045 7.369 1.925 1.457 1.226
GBM_zeta predicted/none 1.202 1.778 5.969 1.798 1.239 1.174
RF_power_x_tpred predicted/none 1.334 1.859 3.943 1.827 1.415 1.217
RF_power_x_tmeas MEASURED 1.265 1.710 4.046 1.766 1.330 1.202
GBM_power_x_tmeas MEASURED 1.142 1.744 4.536 1.685 1.142 1.126
RF_direct_plus_tmeas MEASURED 1.900 3.291 12.189 2.657 1.898 1.747
reference, RUNTIME model on the same 171 rows: RF median 1.049, p90 1.240
per-application median error factor:
const_zeta tdp_x_tmeas fitpower_x_tpred fitpower_x_tmeas RF_direct GBM_direct RF_zeta GBM_zeta RF_power_x_tpred RF_power_x_tmeas GBM_power_x_tmeas RF_direct_plus_tmeas
app
comd 13.721 11.545 3.467 3.474 1.361 1.111 1.287 1.117 1.107 1.107 1.053 1.386
gromacs 13.517 13.838 3.387 3.372 1.446 1.418 1.166 1.165 1.332 1.331 1.117 1.433
hpcg 12.985 11.534 3.192 2.963 1.911 1.514 1.682 1.362 1.310 1.239 1.226 1.898
hpl 14.735 11.722 3.362 3.376 1.900 1.709 1.112 1.186 1.278 1.296 1.082 1.963
lulesh 9.647 13.043 3.128 3.120 1.511 1.424 1.240 1.255 1.117 1.074 1.045 1.588
minife 3.981 5.623 2.258 2.246 1.778 1.796 1.139 1.085 1.198 1.190 1.103 1.796
openfoam 10.627 10.367 2.727 2.472 1.409 1.560 1.188 1.250 1.355 1.345 1.083 1.395
stream 5.915 4.449 7.463 7.763 16.756 4.677 11.111 11.384 9.839 11.179 12.055 18.449
====================================================================================================
2. LOAO ENERGY MODELS -- reading B_corrected
arm uses t? median p75 p90 geomean med(E>=50J) med(no stream)
------------------------------------------------------------------------------------------------------------
const_zeta predicted/none 3.647 7.121 8.996 3.737 4.553 3.277
tdp_x_tmeas MEASURED 6.097 32.596 46.953 7.528 12.616 3.817
fitpower_x_tpred predicted/none 1.155 1.448 3.721 1.700 1.149 1.145
fitpower_x_tmeas MEASURED 1.140 1.476 3.816 1.674 1.125 1.120
RF_direct predicted/none 1.479 2.237 4.018 1.922 1.406 1.385
GBM_direct predicted/none 1.433 2.378 4.698 1.875 1.388 1.388
RF_zeta predicted/none 1.342 1.892 3.243 1.850 1.440 1.266
GBM_zeta predicted/none 1.234 1.672 4.590 1.739 1.298 1.180
RF_power_x_tpred predicted/none 1.246 1.551 3.448 1.677 1.279 1.165
RF_power_x_tmeas MEASURED 1.136 1.495 3.587 1.614 1.166 1.097
GBM_power_x_tmeas MEASURED 1.165 1.673 4.777 1.715 1.135 1.101
RF_direct_plus_tmeas MEASURED 1.425 2.214 4.455 1.952 1.388 1.366
reference, RUNTIME model on the same 171 rows: RF median 1.049, p90 1.240
per-application median error factor:
const_zeta tdp_x_tmeas fitpower_x_tpred fitpower_x_tmeas RF_direct GBM_direct RF_zeta GBM_zeta RF_power_x_tpred RF_power_x_tmeas GBM_power_x_tmeas RF_direct_plus_tmeas
app
comd 3.429 6.070 1.144 1.124 1.343 1.282 1.244 1.160 1.071 1.040 1.026 1.280
gromacs 3.380 4.784 1.154 1.146 3.233 2.608 1.252 1.056 1.031 1.022 1.551 3.138
hpcg 3.974 3.149 1.094 1.099 1.211 1.257 1.553 1.557 1.174 1.100 1.165 1.146
hpl 2.914 5.556 1.276 1.142 1.385 1.370 1.369 1.148 1.239 1.129 1.065 1.423
lulesh 2.892 5.916 1.170 1.114 1.705 1.155 1.205 1.259 1.328 1.198 1.310 1.735
minife 2.856 4.182 1.160 1.155 1.742 2.517 1.173 1.109 1.188 1.113 1.457 1.747
openfoam 2.338 5.163 1.137 1.151 1.253 1.332 1.493 1.139 1.496 1.462 1.067 1.207
stream 8.855 47.176 10.027 11.302 5.359 4.523 10.805 10.028 8.433 9.462 11.695 8.199
====================================================================================================
3. SIGNIFICANCE (reading B, corrected; reading A gives the same
ordering and the same verdicts)
### reading B_corrected ###
### [B_corrected] Energy LOAO: fully-predictive arms vs CONSTANT-zeta (family size 7, Holm-Bonferroni, alpha=0.05)
comparison n median [95% CI] baseline [95%CI] HodgesLehmann diff w/l r_rb p_raw p_holm verdict
--------------------------------------------------------------------------------------------------------------------------------------------------------
tdp_x_tmeas 171 6.0968 [3.817,11.425] 3.6467 [3.276,4.447] +10.5136 [+6.332,+16.073] 52/119 +0.627 1.18e-12 1.18e-12 WORSE (Holm)
fitpower_x_tpred 171 1.1550 [1.143,1.197] 3.6467 [3.276,4.447] -2.1278 [-2.778,-1.603] 142/29 -0.716 4.75e-16 2.38e-15 BETTER (Holm)
RF_direct 171 1.4793 [1.357,1.669] 3.6467 [3.276,4.447] -2.0171 [-2.612,-1.486] 131/40 -0.675 1.96e-14 3.92e-14 BETTER (Holm)
GBM_direct 171 1.4334 [1.354,1.563] 3.6467 [3.276,4.447] -2.0907 [-2.658,-1.542] 132/39 -0.695 3.31e-15 9.93e-15 BETTER (Holm)
RF_zeta 171 1.3421 [1.252,1.467] 3.6467 [3.276,4.447] -2.0902 [-2.587,-1.522] 138/33 -0.698 2.34e-15 9.37e-15 BETTER (Holm)
GBM_zeta 171 1.2345 [1.172,1.306] 3.6467 [3.276,4.447] -2.0978 [-2.686,-1.563] 138/33 -0.719 3.41e-16 2.05e-15 BETTER (Holm)
RF_power_x_tpred 171 1.2460 [1.149,1.291] 3.6467 [3.276,4.447] -2.2281 [-2.683,-1.728] 147/24 -0.736 7.25e-17 5.08e-16 BETTER (Holm)
### [B_corrected] Energy LOAO: runtime-aware arms vs FITTED-CONSTANT-POWER x measured t (family size 4, Holm-Bonferroni, alpha=0.05)
comparison n median [95% CI] baseline [95%CI] HodgesLehmann diff w/l r_rb p_raw p_holm verdict
--------------------------------------------------------------------------------------------------------------------------------------------------------
tdp_x_tmeas 171 6.0968 [3.817,11.425] 1.1395 [1.110,1.166] +9.7439 [+5.485,+12.320] 29/142 +0.815 2.42e-20 9.67e-20 WORSE (Holm)
RF_power_x_tmeas 171 1.1355 [1.093,1.204] 1.1395 [1.110,1.166] -0.0593 [-0.095,-0.021] 109/62 -0.268 0.00241 0.00483 BETTER (Holm)
GBM_power_x_tmeas 171 1.1652 [1.074,1.278] 1.1395 [1.110,1.166] -0.0078 [-0.044,+0.044] 99/72 -0.033 0.712 0.712 n.s. (model better) [!direction conflict with naive median comparison]
RF_direct_plus_tmeas 171 1.4251 [1.343,1.621] 1.1395 [1.110,1.166] +0.1526 [+0.085,+0.241] 53/118 +0.354 5.83e-05 0.000175 WORSE (Holm)
### [B_corrected] Does the zeta / power decomposition beat direct log-E? (family size 3, Holm-Bonferroni, alpha=0.05)
comparison n median [95% CI] baseline [95%CI] HodgesLehmann diff w/l r_rb p_raw p_holm verdict
--------------------------------------------------------------------------------------------------------------------------------------------------------
RF_zeta vs RF_direct 171 1.3421 [1.252,1.467] 1.4793 [1.357,1.669] -0.0287 [-0.162,+0.119] 90/81 -0.034 0.7 0.7 n.s. (model better)
RF_power_x_tpred vs RF_direct 171 1.2460 [1.149,1.291] 1.4793 [1.357,1.669] -0.1157 [-0.223,-0.018] 102/69 -0.194 0.0275 0.0826 n.s. after Holm (model better, raw p<0.05)
GBM_zeta vs RF_direct 171 1.2345 [1.172,1.311] 1.4793 [1.369,1.669] -0.1336 [-0.268,-0.003] 100/71 -0.177 0.0445 0.0889 n.s. after Holm (model better, raw p<0.05)
### reading A_as_recorded ###
### [A_as_recorded] Energy LOAO: fully-predictive arms vs CONSTANT-zeta (family size 7, Holm-Bonferroni, alpha=0.05)
comparison n median [95% CI] baseline [95%CI] HodgesLehmann diff w/l r_rb p_raw p_holm verdict
--------------------------------------------------------------------------------------------------------------------------------------------------------
tdp_x_tmeas 171 11.5067 [5.554,12.046] 10.3681 [4.373,14.612] +0.3486 [-0.258,+1.178] 72/99 +0.100 0.255 0.255 n.s. (model worse)
fitpower_x_tpred 171 3.5487 [3.174,4.368] 10.3681 [4.671,14.343] -12.6636 [-20.443,-7.055] 141/30 -0.831 4.34e-21 3.04e-20 BETTER (Holm)
RF_direct 171 1.9088 [1.690,2.149] 10.3681 [4.373,14.612] -12.8626 [-20.264,-7.628] 127/44 -0.657 8.92e-14 1.78e-13 BETTER (Holm)
GBM_direct 171 1.6241 [1.482,1.768] 10.3681 [4.373,14.343] -14.4649 [-22.137,-8.101] 139/32 -0.815 2.42e-20 1.45e-19 BETTER (Holm)
RF_zeta 171 1.3077 [1.226,1.403] 10.3681 [4.373,14.612] -13.8284 [-20.731,-8.400] 137/34 -0.762 5.52e-18 1.66e-17 BETTER (Holm)
GBM_zeta 171 1.2017 [1.158,1.255] 10.3681 [4.373,14.612] -14.2299 [-21.379,-8.326] 138/33 -0.772 2.02e-18 8.08e-18 BETTER (Holm)
RF_power_x_tpred 171 1.3343 [1.216,1.423] 10.3681 [4.373,14.612] -13.9724 [-21.122,-8.270] 142/29 -0.782 7.71e-19 3.85e-18 BETTER (Holm)
### [A_as_recorded] Energy LOAO: runtime-aware arms vs FITTED-CONSTANT-POWER x measured t (family size 4, Holm-Bonferroni, alpha=0.05)
comparison n median [95% CI] baseline [95%CI] HodgesLehmann diff w/l r_rb p_raw p_holm verdict
--------------------------------------------------------------------------------------------------------------------------------------------------------
tdp_x_tmeas 171 11.5067 [5.554,12.046] 3.5825 [3.109,4.061] +16.4759 [+8.007,+20.480] 18/153 +0.847 7.43e-22 2.97e-21 WORSE (Holm)
RF_power_x_tmeas 171 1.2648 [1.201,1.346] 3.5825 [3.109,4.061] -1.9585 [-2.503,-1.392] 142/29 -0.694 3.61e-15 1.08e-14 BETTER (Holm)
GBM_power_x_tmeas 171 1.1425 [1.116,1.212] 3.5825 [3.109,4.061] -1.9234 [-2.515,-1.433] 145/26 -0.676 1.74e-14 3.47e-14 BETTER (Holm)
RF_direct_plus_tmeas 171 1.8997 [1.678,2.165] 3.5825 [3.109,4.001] -0.9011 [-1.396,-0.398] 109/62 -0.303 0.000589 0.000589 BETTER (Holm)
### [A_as_recorded] Does the zeta / power decomposition beat direct log-E? (family size 3, Holm-Bonferroni, alpha=0.05)
comparison n median [95% CI] baseline [95%CI] HodgesLehmann diff w/l r_rb p_raw p_holm verdict
--------------------------------------------------------------------------------------------------------------------------------------------------------
RF_zeta vs RF_direct 171 1.3077 [1.226,1.403] 1.9088 [1.690,2.149] -0.5953 [-0.864,-0.385] 124/47 -0.532 1.59e-09 1.59e-09 BETTER (Holm)
RF_power_x_tpred vs RF_direct 171 1.3343 [1.216,1.423] 1.9088 [1.690,2.149] -0.6752 [-0.928,-0.487] 129/42 -0.689 5.69e-15 1.71e-14 BETTER (Holm)
GBM_zeta vs RF_direct 171 1.2017 [1.158,1.255] 1.9088 [1.690,2.149] -0.6822 [-0.932,-0.501] 138/33 -0.659 7.48e-14 1.5e-13 BETTER (Holm)
====================================================================================================
4. WHICH COUNTERS EXPLAIN ENERGY? SAME FEATURE SET AS RUNTIME?
(reading B, corrected energy)
(i-a) cumulative ablation, RF, median LOAO error factor
feature groups RUNTIME(eta) ENERGY(zeta) POWER(W)
config only 1.092 1.472 1.458
+ analytic cycles 1.075 1.352 1.205
+ instruction ratios 1.069 1.283 1.204
+ memory hierarchy 1.048 1.369 1.197
+ stall cycles (all) 1.048 1.322 1.139
(i-b) leave-one-group-out from the full set
drop group RUNTIME(eta) ENERGY(zeta) POWER(W)
(full model) 1.049 1.311 1.129
-config 1.049 (+0.000) 2.330 (+1.019) 1.208 (+0.079)
-analytic 1.062 (+0.014) 1.310 (-0.001) 1.151 (+0.022)
-instr 1.047 (-0.002) 1.330 (+0.019) 1.123 (-0.006)
-memory 1.096 (+0.047) 1.292 (-0.019) 1.159 (+0.031)
-stalls 1.046 (-0.002) 1.353 (+0.042) 1.193 (+0.064)
(ii) LOAO permutation importance (increase in median error factor
when one feature is shuffled within the held-out application)
runtime_eta energy_zeta power rank_runtime rank_energy rank_shift
log_ncore -0.0005 2.2962 0.0153 16.0 1.0 15.0
log_nrank 0.0001 0.0373 -0.0306 11.0 2.0 9.0
tlb_miss_per_instr 0.0142 0.0343 0.0054 1.0 3.0 -2.0
log_t_analytic 0.0104 0.0084 0.0246 2.0 4.0 -2.0
l3_lat_per_miss -0.0009 0.0042 0.0003 17.0 5.0 12.0
stall_load_frac -0.0005 0.0029 0.0040 15.0 6.0 9.0
l2_miss_per_instr -0.0001 0.0022 -0.0006 13.0 7.0 6.0
flops_per_instr 0.0070 0.0018 0.0029 3.0 8.0 -5.0
l1_access_per_instr 0.0017 0.0015 0.0006 6.0 9.0 -3.0
log_instr_per_rank 0.0030 0.0006 -0.0007 5.0 10.0 -5.0
log_nthread 0.0002 -0.0002 0.0008 10.0 11.0 -1.0
flops_per_cycle -0.0032 -0.0013 0.0001 19.0 12.0 7.0
ipc 0.0031 -0.0027 0.0073 4.0 13.0 -9.0
l2_hit_rate 0.0011 -0.0034 0.0027 7.0 14.0 -7.0
prefetch_l2_frac 0.0004 -0.0070 0.0009 9.0 15.0 -6.0
arith_intensity -0.0000 -0.0071 0.0004 12.0 16.0 -4.0
stall_fp_frac -0.0011 -0.0081 -0.0049 18.0 17.0 1.0
stall_store_frac -0.0001 -0.0093 -0.0055 14.0 18.0 -4.0
l3_miss_per_instr 0.0007 -0.0145 -0.0013 8.0 19.0 -11.0
Spearman rho, runtime vs energy importance vectors: 0.119 (p=0.627)
Kendall tau between the two RANKINGS: 0.111 (p=0.534)
top-5 runtime : ['tlb_miss_per_instr', 'log_t_analytic', 'flops_per_instr', 'ipc', 'log_instr_per_rank']
top-5 energy : ['log_ncore', 'log_nrank', 'tlb_miss_per_instr', 'log_t_analytic', 'l3_lat_per_miss']
top-5 power : ['log_t_analytic', 'log_ncore', 'ipc', 'tlb_miss_per_instr', 'stall_load_frac']
overlap runtime/energy top-5: 2/5; runtime/power: 3/5
====================================================================================================
5. RUNTIME / ENERGY TRADE-OFF: is the fastest configuration also the
most energy-efficient? (reading B; see section 0 -- under the
uncorrected reading this question cannot be asked at all, because
the per-rank division makes energy fall monotonically with cores)
app size n_core_counts ncore_min_runtime ncore_min_energy ncore_min_EDP ncore_min_energy_UNCORRECTED agree energy_penalty_of_going_fastest time_penalty_of_going_greenest
comd 16 6 32.0 32.0 32.0 32.0 True 1.000 1.000
comd 24 7 64.0 64.0 64.0 64.0 True 1.000 1.000
comd 32 8 128.0 128.0 128.0 128.0 True 1.000 1.000
gromacs 0 8 128.0 1.0 1.0 128.0 False 1.473 1.194
hpcg 16 8 1.0 2.0 1.0 128.0 False 1.003 1.020
hpcg 32 8 1.0 1.0 1.0 128.0 True 1.000 1.000
hpcg 48 8 1.0 1.0 1.0 128.0 True 1.000 1.000
hpcg 64 8 1.0 1.0 1.0 128.0 True 1.000 1.000
hpl 0 8 1.0 1.0 1.0 128.0 True 1.000 1.000
hpl 2000 7 8.0 8.0 8.0 32.0 True 1.000 1.000
hpl 6000 8 128.0 32.0 128.0 128.0 False 1.000 1.785
hpl 12000 8 128.0 128.0 128.0 128.0 True 1.000 1.000
lulesh 16 4 1.0 8.0 1.0 64.0 False 2.193 2.757
lulesh 24 4 1.0 8.0 8.0 64.0 False 4.106 2.342
lulesh 32 4 1.0 1.0 1.0 64.0 True 1.000 1.000
minife 32 5 16.0 4.0 16.0 16.0 False 1.000 1.272
minife 48 7 8.0 8.0 8.0 8.0 True 1.000 1.000
minife 64 7 64.0 32.0 64.0 64.0 False 1.000 2.056
openfoam 100 8 64.0 64.0 64.0 128.0 True 1.000 1.000
stream 10000000 8 32.0 1.0 1.0 16.0 False 32.000 1.017
stream 40000000 8 128.0 1.0 1.0 8.0 False 128.465 1.003
stream 80000000 8 64.0 1.0 1.0 64.0 False 44.094 1.235
runtime-optimal and energy-optimal core counts AGREE in 12/22 cases (55%), DIFFER in 10
where they differ the energy-optimal count is SMALLER in 7/10
cost of always running FASTEST : median 1.83x energy (max 128.47x)
cost of always running GREENEST: median 1.25x runtime (max 2.76x)
EDP-optimal == runtime-optimal in 17/22; == energy-optimal in 17/22
under the UNCORRECTED reading the energy-optimum would have been
the largest core count in 20/22 cases -- the artefact would have produced the opposite
practitioner advice.
Mechanism: node power rises with core count while runtime falls,
so E = P(n) t(n) turns up as soon as parallel efficiency drops
below the rate at which power grows. Node power, min to max cores:
comd 1c 79.9 W -> 128c 249.0 W ( 3.12x)
gromacs 1c 81.1 W -> 128c 142.6 W ( 1.76x)
hpcg 1c 82.0 W -> 128c 134.3 W ( 1.64x)
hpl 1c 80.9 W -> 128c 191.6 W ( 2.37x)
lulesh 1c 513.8 W -> 64c 119.5 W ( 0.23x)
minife 1c 80.5 W -> 128c 96.2 W ( 1.19x)
openfoam 1c 81.2 W -> 128c 255.0 W ( 3.14x)
stream 1c 83.1 W -> 128c 10706.3 W (128.91x)