Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion justfile
Original file line number Diff line number Diff line change
Expand Up @@ -3049,7 +3049,7 @@ gate-gpu-qwen38-nodes-remote:
# the server surface it links (gpu-gates' bind, serve_client; the serve and sampler crates) sits behind
# that feature today — `just affected` and the recipes.py pins scope it so.
# Stays solo, reason: the host set (tools/gate-batch-resources.tsv) loads under the big-load lock, and the seat's unset residency pick reads MemAvailable against the churn pool, so a neighbour's load moves it.
# Never solo-real: the generate call and the two main servers pass `--place gate` (the 3090's bytes on the smallest card with the room for them: the 3090 on the box), the unset-place servers plan on the one card in view, and the gate plans on RTX_3090 directly (no shared/gate_card.rs); its plain arm's gpu-gate.sh call is 3090-only, and solo-real balances on `any`.
# Never solo-real: the generate call and the two main servers pass `--place gate` (the 3090's bytes on the smallest card with the room for them: the 3090 on the box), the unset-place servers plan on the one card in view, and the gate plans on RTX_3090 directly (no shared/gate_card.rs); its plain arm's gpu-gate.sh call is 3090-only in the real tier, and solo-real balances on `any`.
[group('solo')]
[group('v41-load')]
gate-gpu-qwen38-serve:
Expand Down
6 changes: 5 additions & 1 deletion tools/gpu-gate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -649,6 +649,7 @@ PY
TL="$t/pin-refusal" GATE_BIN=gate_qwen38_serve case_ 'a 3090-only gate forced to the A6000: 64, named' 64 'gate_qwen38_serve runs on the 3090 only' a6000 "$t/lease"
TL="$t/pin-refusal" GATE_BIN=gate_qwen38_serve case_ 'a 3090-only gate under any: 64, named' 64 'gate_qwen38_serve runs on the 3090 only' any "$t/lease"
GATE_BIN=gate_qwen38_serve case_ 'a 3090-only gate on the 3090 runs' 0 'ran on ' 3090 "$t/lease"
GATE_BIN=gate_qwen38_serve case_ 'a 3090-only gate in the fixture tier runs on the A6000' 0 'ran on ' a6000 "$t/lease" BLOOMERY_TIER=fixture
for arm in lookup drafted; do
gate_args=(--arm "$arm")
GATE_BIN=gate_qwen38_serve case_ "the $arm arm runs on another card" 0 'ran on ' a6000 "$t/lease"
Expand Down Expand Up @@ -1735,6 +1736,7 @@ PY
GATE_BIN=gate_qwen38_serve case_ " … the $arm arm runs on another local card" 0 '^ran on GPU-caller$' any "$t/lease" "${LOC[@]}" CUDA_VISIBLE_DEVICES=GPU-caller
done
gate_args=()
GATE_BIN=gate_qwen38_serve case_ ' … a 3090-only gate in the fixture tier runs on another local card' 0 '^ran on GPU-caller$' any "$t/lease" "${LOC[@]}" CUDA_VISIBLE_DEVICES=GPU-caller BLOOMERY_TIER=fixture
case_ ' … a V4.1 load takes the V4.1 load lock with it' 0 "$ON_LOCAL \\(asked any\\), V4\\.1 load lock$" any "$t/lease" "${LOC[@]}" BLOOMERY_GATE_V41_LOAD=1
exec 5> "$t/gate.lock" 6> "$t/gate-a6000.lock"
{ flock -x 5 && flock -x 6; } || { echo "FAIL: the test cannot hold the two card locks"; return 1; }
Expand Down Expand Up @@ -2253,7 +2255,7 @@ esac
esac
# Gates whose checks hold on the 3090 alone, a fact the gate placement's bytes (gate_card) do not carry: one row a gate,
# `<binary>: <the fact>`. Asked of another card (a6000, any, both, or box.sh's A6000 view) one stops here by name, before
# any lock, with 64.
# any lock, with 64. The facts are the real file's, so the fixture tier pins nothing.
PIN_3090=(
"gate_qwen38_serve: its paged clause runs generate_qwen3moe at 27 GiB of host room on the card in view, and only the 3090's plan pages there (on the A6000 the experts fit and the draft stays on)"
)
Expand All @@ -2268,6 +2270,8 @@ fi
# In box.sh's local mode the run must see one RTX 3090 alone: CUDA_VISIBLE_DEVICES set to its full UUID, or, unset, a
# machine whose one card is it (tools/ref/cards.sh, the card-name owner).
for row in "${PIN_3090[@]}"; do
# PIN(2026-10-31): The fixture tier defers paged (Tag::Scale), so the real file's card pin does not apply.
[ "$TIER" = real ] || break
[ "${row%%:*}" = "$NAME" ] || continue
# PIN(2026-10-20): Only plain runs paged(); lookup and drafted have no card-specific paged clause.
case "$qwen38_arm" in lookup|drafted) continue ;; esac
Expand Down
Loading