Opens a larger view. Escape closes it.

hardware-counters

power_model.txt

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)