Architecture

                    ecal.estimate()
                         |
        +--------+-------+-------+--------+
        |        |       |       |        |
  Transmission  Preproc  Training  Eval  Inference
        |        |       |       |        |
        v        v       v       v        v
   Protocol   FLOP    FLOP     FLOP    FLOP
   Configs   Calcs   Calcs    Calcs   Calcs
                     (per model type)
                         |
                    Hardware Profile
                   (FLOPS, power, TDP)
                         |
                   Energy = time * power
                         |
                  eCAL = total_E / total_bits

ecal.api.estimate() orchestrates the full lifecycle by composing five stages, each backed by its own calculator class:

Each stage converts its FLOP estimate into energy using a hardware profile (ecal.hardware.profiles.HardwareProfile) — a FLOPS-per-second throughput figure and a power draw in watts. estimate() sums the energy across all stages and divides by the total number of bits processed to produce the eCAL metric (J/bit).