Choosing τ_max and the rung count: what four ladders showed¶
Tested against md-tools 0.6.1. Background for
REST2 on a protein–ligand complex. Nothing here is needed to RUN that tutorial: this
is the evidence for the settings it uses, the datasets they produced, and the two numbers on them
that mislead.
Four ladders, and every number here is copied from their files
RTX 3080s, 2 ranks per card under MPS, CUDA mixed precision, md-tools 0.6.1. The system is
TYK2 with ejm_31, prepared as the system page describes. Route A and the
comparison ladder used four cards; route B, at twelve rungs, used six.
One check on this page did not pass: the recorded exchange energies were recomputed against the saved states and came out at 0.077–0.121 kT, against a 0.05 kT tolerance that had been calibrated on a system thirty times smaller. The tolerance does not transfer between system sizes and is being replaced by a derived one; until that is measured, this check is unvalidated on systems of this size. It is recorded rather than quietly widened.
Why route B is 12 rungs at τ 0.4, and not the 8 rungs at τ 0.25 that were tried first
Four ladders on this complex settle it. Set τ_max by whether the hot rung crosses the barriers you care about; set acceptance by the number of rungs. For this ligand:
| ladder | τ_max | rungs | acceptance | ligand torsion crossings at the hot rung |
|---|---|---|---|---|
| A | 0.5 | 8 | 0.549 | 10.4 /ns |
| A2 | 0.3 | 8 | 0.742 | 0.0 /ns |
| B | 0.25 | 8 | 0.388 | 3.8 /ns |
| B3 | 0.4 | 12 | 0.373 | 23.1 /ns |
At τ 0.3 the ligand's aryl and amide torsions never cross in 5 ns — while acceptance and round trips both look their best of any ladder here. A ladder can transport configurations beautifully and have a hot rung that generates nothing new, and the acceptance figure cannot see it. (Counting every scaled bond would have hidden this too: a methyl on this ligand spins freely at any τ and supplies most of the raw count. Methyls and hydroxyls are excluded above.)
Raising the pocket ladder to τ 0.4 over 12 rungs gives 6x the ligand crossings of B at the same rung spacing and the same acceptance (0.373 against 0.388). The pocket sidechains were never the constraint: their χ torsions cross 238 /ns at τ 0.25 and 264 /ns at τ 0.4, a gain of 11% where the ligand gained 6x. τ_max is set by the ligand; the sidechains come along.
The cost is transport. Per-exchange diffusion is identical (0.171 against 0.170 states²
/exchange), but a 12-rung ladder takes N² longer to traverse — 354 exchanges against 144 —
so B3 completed 2 round trips where B completed 45. More rungs buy acceptance and pay for it
in traversal, so use the fewest rungs that give workable acceptance at the τ_max your barriers
demand.
5. What these runs measure¶
| quantity | route A (ligand, 8 rungs, τ 0.5) | route B (pocket, 12 rungs, τ 0.4) | comparison (pocket, 8 rungs, τ 0.25) |
|---|---|---|---|
| hot atoms (of 4,701 solute atoms) | 32 | 193 | 193 |
| scaled torsion central bonds | 4 | 52 | 52 |
| scaled CMAP terms | 0 | 0 | 0 |
| ligand torsion crossings, hot rung | 10.4 /ns | 23.1 /ns | 3.8 /ns |
| sidechain χ crossings, hot rung | — | 264 /ns | 238 /ns |
| neighbouring-pair acceptance | 0.483–0.602, overall 0.549 | 0.344–0.415, overall 0.373 | 0.358–0.408, overall 0.388 |
| worst pair | 0.483 | 0.341 | 0.358 |
| walker round trips (5 ns) | 105 | 2 | 45 |
| diffusion, states²/exchange | 0.240 | 0.171 | 0.170 |
| ns/day per state | 93.5 | 81.5 | 96.3 |
| ns/day aggregate | 748 (4 cards) | 978 (6 cards) | 771 (4 cards) |
| wall clock | 83 min | 91 min | 81 min |
Crossings exclude methyl and hydroxyl rotors, which spin freely at any τ and would otherwise supply most of the count.
The finding: τ_max buys barrier crossing and rungs buy acceptance, and the two are separable. Route B heats six times the region of route A and still crosses the ligand's torsions twice as often, at a τ_max 0.2 lower, because the rung count — not a colder top rung — is what pays for the acceptance. Against the 8-rung comparison at τ 0.25 it is a 6x gain in ligand crossings for a 10 ns/day cost and an acceptance that is the same to within 4%.
Two numbers on this table that do not mean what they look like
Round trips: 2 for route B against 45 for the comparison. Per-exchange diffusion is
identical (0.171 against 0.170) — transport did not degrade at all. A 12-rung ladder simply
takes N² longer to traverse (354 exchanges against 144), and a round-trip count collapses
once the crossing time approaches the run length. Judge mixing by the diffusion constant and
by the worst pair, not by a count that a longer ladder cannot help but lose.
ns/day: 81.5 for route B. Twelve ranks synchronise at every exchange where eight did, and another job was sharing the same MPS server during that run. The two causes are not separated here, so do not read 81.5 as the price of twelve rungs.
Every run here is a registered dataset¶
Every figure in the table above is read from these, not retyped from a log:
$MD_DATA/2026/tutorials/tyk2-ejm31-rest2-ligand-8x5ns 110 files, 545.8 MB route A
$MD_DATA/2026/tutorials/tyk2-ejm31-rest2-ligand-pocket-12x0.4-5ns 108 files, 693.9 MB route B
$MD_DATA/2026/tutorials/tyk2-ejm31-rest2-ligand-pocket-8x5ns 117 files, 546.0 MB the COMPARISON
The third is not a route you should follow. ...-pocket-8x5ns is the 8-rung τ 0.25 pocket
ladder that route B replaced, kept because it is the measurement that justifies route B's twelve
rungs: without it, "12 rungs at 0.4" is advice rather than a result. A registered dataset is
write-once, so it stays where it is and is labelled rather than removed.
Only the 12-rung dataset carries the source structure and the ligand package, so it is the only
one export-reference can read; see the warning in section 6.
Each holds the whole tree a reader needs to check the claim -- build/ with the scaled states and
scaler.yaml, the equilibration chain, and the ladder's own REST2.nc, restart.json and
per-state trajectories -- and each verifies against its own inventory:
md-openmm data-register --verify-only -idata <the dataset> \
-project_name tutorials -data_name tyk2-ejm31-rest2-ligand-8x5ns -year 2026
Their energy check is a recorded FAIL, and the datasets say so
Gate G2-6 recomputes a ladder's recorded exchange energies against its saved states. Every run
here FAILS it as originally written — 0.077/0.093, 0.106/0.121 and 0.089/0.100 kT against a
0.05 kT tolerance calibrated on a system thirty times smaller. Against the size-aware
replacement dU <= 3*K*sqrt(|u|), validated at a third system size, route A and route B are
inside on both channels (route B's cross margin is only 1.05x) and the 8-rung comparison
ladder is outside by 1.16x.
Across four ladders the cross discrepancy wanders between 0.080 and 0.121 kT with no clean dependence on τ, on sample size or on sampling depth — a larger sample even gave a smaller maximum — so the estimator, a max over whatever sample a run produces, is the thing being fixed rather than any one ladder. A deliberately wrong Hamiltonian is caught by four to five orders of magnitude more, so this is a question about a tolerance, not about the scaling. Each dataset's notes carry its own numbers.
How fast is eight rungs on four cards, really¶
The naive expectation: one rank alone does 330 ns/day on this system, two ranks share a card, four cards — so something near 4 × 330 / 2 per rung.
The measurement: 93.5 ns/day per rung, 748 ns/day aggregate. Each of the two ranks on a card gets 57% of what one rank alone gets, so a shared card delivers about 1.13× its single-rank throughput, not 2×. Part of that is the sharing and part is the exchange barrier: every rank waits for the slowest rung at every exchange, so a ladder runs at the pace of its slowest card — which is also why the cards must be the same model.
Plan from the measured number, not from the single-rank one. Multiplying a single-rank figure by the card count overestimates a ladder by about a factor of two.
How the cost divides. Three 100 ps probes, same system, same equilibrated start. This table is for comparing configurations with each other — do not size a campaign from its absolute numbers; see the warning directly below it.
| configuration | ranks per card | ns/day per rung | ns/day aggregate |
|---|---|---|---|
| one rank, no ladder at all | — | 330 | — |
| 4 rungs on 4 cards | 1 | 209.9 | 839.5 |
| 8 rungs on 4 cards | 2 | 117.6 | 940.8 |
| 8 rungs on 2 cards | 4 | 69.1 | 553.1 |
These probe numbers are 26% too high for planning
The 8-on-4 probe reads 117.6 ns/day per rung. The 5 ns production ladder of the same shape sustained 93.5. A 100 ps probe does not pay the accumulated cost of a long run, so a campaign sized from this table comes out about a quarter short. Take the relative scaling from here and the absolute number from a production run.
The ladder machinery — exchange barriers, per-state trajectories, checkpoints — costs 36% before any sharing (330 → 209.9). A second rank on a card gives back 1.12× that card's aggregate throughput, not 2×.
A fourth rank per card is a loss, not a smaller gain. Eight rungs on two cards delivers 553.1 ns/day aggregate, below the 839.5 of four rungs on four cards and far below the 940.8 of eight on four. Two ranks per card is the most this system rewards; three is untested and four is worse than not sharing at all.
The comparison the campaign asks for is between A and B: what heating the pocket as well as the ligand costs in acceptance, and whether it buys sampling the ligand-only ladder does not reach.