Skip to content

record(LTX25-DECODE-SPEED): three scalar single-threaded loops in the LTX CPU path, and the number ltx2_video.cpp said was owed - #1214

Merged
localai-bot merged 3 commits into
mainfrom
record/ltx25-scalar-cpu-path
Aug 18, 2026
Merged

record(LTX25-DECODE-SPEED): three scalar single-threaded loops in the LTX CPU path, and the number ltx2_video.cpp said was owed#1214
localai-bot merged 3 commits into
mainfrom
record/ltx25-scalar-cpu-path

Conversation

@localai-bot

Copy link
Copy Markdown
Collaborator

record(LTX25-DECODE-SPEED): three scalar single-threaded loops in the LTX CPU path, and the number ltx2_video.cpp said was owed

Three defects found while attempting the first full-model LTX-2.5 render are
filed and now have an owner. None is fixed here; this change is the record.

They are one story. The LTX prep path hand-rolls scalar arithmetic where the
rest of the tree routes through the vt:: GEMM seam, and it does so in three
places that all sit between Load and the first denoise step:

#1210 supplies a number the tree explicitly asked for. ltx2_video.cpp:2849
records the two-rebind cost as "UNMEASURED on real weights" and says a later
perf row owns it. This is that measurement.

The owner is ltx25-decode-speed.md, whose §5 already frames "why the decode
is single-threaded and on the host". These extend that finding from the decode
to the load and prep path, so they belong to its ## Owed table rather than to
a new row.

Scope is deliberately narrow. The rates are measured over a 10.4-minute window
and extrapolated; no full-model pass has completed, so no end-to-end figure is
claimed. What is measured is stated as measured and what is projected is
labelled.

test_cpu_x86_llamacpp_floor fails in the local preflight with exit 4
(NO_QUIET_WINDOW) instead of 2 at loadavg 68.9-79.9, which is #618 exactly.
This diff touches two files under .agents/ and cannot reach a CPU benchmark
harness. check-agent-record.py, check-public-doc-tables.py, doc-checkpoint
and now-current all pass.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [claude-code]

mudler added 3 commits August 18, 2026 08:53
… LTX CPU path, and the number ltx2_video.cpp said was owed

Three defects found while attempting the first full-model LTX-2.5 render are
filed and now have an owner. None is fixed here; this change is the record.

They are one story. The LTX prep path hand-rolls scalar arithmetic where the
rest of the tree routes through the `vt::` GEMM seam, and it does so in three
places that all sit between `Load` and the first denoise step:

- #1202 `Ltx2FuseLoraIntoTensor` computes the LoRA product with a triple
  scalar loop at a measured ~0.53 GFLOP/s, one thread of twenty.
- #1208 the text tower's `Linear` is scalar, single-threaded and accumulates
  in `double`, which also diverges from the `F.linear` it cites as reference.
- #1210 the two-stage rebind fuses at load, un-fuses for phase 0 and re-fuses
  for phase 1, so the load-time pass is provably wasted.

#1210 supplies a number the tree explicitly asked for. `ltx2_video.cpp:2849`
records the two-rebind cost as "UNMEASURED on real weights" and says a later
perf row owns it. This is that measurement.

The owner is `ltx25-decode-speed.md`, whose §5 already frames "why the decode
is single-threaded and on the host". These extend that finding from the decode
to the load and prep path, so they belong to its `## Owed` table rather than to
a new row.

Scope is deliberately narrow. The rates are measured over a 10.4-minute window
and extrapolated; no full-model pass has completed, so no end-to-end figure is
claimed. What is measured is stated as measured and what is projected is
labelled.

`test_cpu_x86_llamacpp_floor` fails in the local preflight with exit 4
(`NO_QUIET_WINDOW`) instead of 2 at loadavg 68.9-79.9, which is #618 exactly.
This diff touches two files under `.agents/` and cannot reach a CPU benchmark
harness. `check-agent-record.py`, `check-public-doc-tables.py`, doc-checkpoint
and now-current all pass.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [claude-code]
…b-only conflict

GitHub refused the squash with "Pull Request has merge conflicts" while the
local merge is clean, because GitHub ignores the `merge=union` driver that
`.gitattributes` sets on `.agents/issue-index.md`. Both sides appended rows and
only the forge read that as a conflict.

The union result is verified rather than assumed, because that driver can
interleave rows and can reinstate a deleted one: 367 rows, zero duplicate row
keys, and this branch's #1202, #1208 and #1210 each present exactly once.
`check-issue-index-append-only.py` and `check-agent-record.py` both pass.

This branch carries no product code, so the merge cannot change a build result.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [claude-code]
#1209 landed and appended its own rows to `.agents/issue-index.md`, so GitHub
refused the squash again while the local merge stays clean. GitHub ignores the
`merge=union` driver `.gitattributes` sets on that path, and every concurrent
append therefore reads as a conflict on the forge only.

Verified rather than assumed, because the union driver can interleave rows and
reinstate a deleted one: 376 rows, zero duplicate row keys, and this branch's
#1202, #1208 and #1210 each present exactly once.
`check-issue-index-append-only.py` and `check-agent-record.py` both pass.

This branch carries no product code, so the merge cannot change a build result.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [claude-code]
@localai-bot
localai-bot merged commit 839d243 into main Aug 18, 2026
1 check failed
@localai-bot
localai-bot deleted the record/ltx25-scalar-cpu-path branch August 18, 2026 16:54
localai-bot pushed a commit that referenced this pull request Aug 18, 2026
`origin/main` moved from `ae581da3e` to `1dac4f9a7` while this row was in
review, and the five new commits touch four of the same record files. None of
them touches the depth schedule, the music3 sources, or this row's spec section,
so this merge carries records only and no code.

`docs/STATUS.md` conflicted on two adjacent rows, because #1214 and #1252
rewrote the LTX-2.5 and MiniMax-Music3 rows while this branch held older text
for both. Main's complete version is taken here, byte for byte, including its
new music3 wording. This row's own claim is added back in the commit that owns
it rather than inside a merge resolution, so the record edit and the measurement
it describes stay in one reviewable commit.

`.agents/benchmark-record.md` and `.agents/issue-index.md` were rebuilt the way
both files require: main's version verbatim, then this row's entry and its two
index rows appended at the end. Main's text is an exact prefix of each result,
verified by comparison rather than by reading.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
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.

2 participants