Skip to content

[Wrapper] Expose row activation counts for energy accounting - #1

Open
YWHyuk wants to merge 1 commit into
torchsimfrom
feature/dram-energy-counters
Open

[Wrapper] Expose row activation counts for energy accounting#1
YWHyuk wants to merge 1 commit into
torchsimfrom
feature/dram-energy-counters

Conversation

@YWHyuk

@YWHyuk YWHyuk commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Groundwork for the off-chip DRAM energy report in PyTorchSim (companion PR on PSAL-POSTECH/PyTorchSim). TOGSim needs a per-memory-system activation count to price row activations; nothing here changes simulation behaviour.

What

  • Ramulator2::row_activations() — Ramulator2 has no ACT command counter, so this derives activations from the per-controller row stats that already exist: a row hit needs no ACT, while a miss (closed bank) and a conflict (another row open) each need one. It walks the memory system's collect_stats() tree and sums row_misses + row_conflicts, so the derivation stays out of the controller sources and no stat registration changes.
  • Transaction counters widened from int to uint64_t. They overflow at roughly 2 billion transactions, which a long run reaches.

Caveats, documented in the header

  • Refresh-driven activations are not counted.
  • The row stats are updated once per request at scheduling time, so this is the standard approximation of issued ACT commands rather than an exact command count.

Verification

On a 2048-cube matmul through TOGSim, row_activations() summed over 16 channels returns 610657, which matches the sum of row_misses and row_conflicts across the 16 per-channel YAML stat dumps exactly.

Ramulator2 has no ACT command counter, so derive activations from the
per-controller row stats: a row hit needs no ACT, while a miss (closed
bank) and a conflict (other row open) each need one. Sum row_misses and
row_conflicts over the memory system's collect_stats() tree, which keeps
the derivation out of the controller sources.

Refresh-driven activations are not included.

Also widen the read/write transaction counters to 64-bit. They are int
today and a long run overflows at about 2 billion transactions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant