Skip to content

docs(worklog): the EVD and SVD factorisation floors are where they belong (DROPPED) - #15

Merged
shinaoka merged 1 commit into
mainfrom
perf/evd-svd-floor-sweep
Oct 14, 2026
Merged

shinaoka merged 1 commit into
mainfrom
perf/evd-svd-floor-sweep

Conversation

@shinaoka

Copy link
Copy Markdown
Member

No code change. This settles the question 2026-10-14-bidiag-parallel-hint.md left
open: whether the 192 * 256 latch in tridiag_in_place and bidiag_in_place closes
too early, which at 128 x 128 closes the whole factorisation and makes eigh and
svd_values flat from 1T to 8T.

Forcing the gate open is 1.5-4x worse at every shape measured, and a fully sequential
call is within 1% of the shipped floor at every one of them — the flat rows are this
library's own floor doing its job. f64, best of 10 calls, smallest over 6
interleaved repetitions, four threads, CPUs 0-3, gate-open / shipped / fully-sequential:

n tridiag bidiag
96 0.2662 / 0.0682 / 0.0677 0.3433 / 0.1516 / 0.1515
128 0.3890 / 0.1266 / 0.1264 0.6024 / 0.3098 / 0.3115
192 0.6927 / 0.3393 / 0.3418 1.3596 / 0.8145 / 0.8169
256 1.0405 / 0.7027 / 0.6973 3.0776 / 2.3277 / 2.1858

At 512/1024 the shipped floor is the best swept value and a fully sequential call
is 1.5-1.7x worse, so the window it leaves open pays there. Lower floors
(8192/16384/32768) buy nothing at any shape. Repeating 128/256 with eight
workers on the same four cores changes the shipped column by under 1%.

One untaken lead is recorded: a floor above the first column's area (65536) wins 5.6%
on 256 x 256 bidiagonalisation and is within 0.5% at five other shapes, which is not a
constant this sweep pins.

Record: docs/worklogs/2026-10-14-evd-svd-floor-sweep.md. Ledger row DROPPED.
Limits: four physical cores, so the eight-core crossover is not measured.

…long

Forcing the tridiag and bidiag latches open costs 1.5-4x at 96x96 to 256x256, and
a fully sequential call is within 1% of the shipped floor at every one of those
shapes -- the flat eigh and svd_values rows at 128x128 are this library's own floor
doing its job, not a dropped hint. Lowering the floor buys nothing at any shape
swept; at 512 and 1024 the shipped floor is the best of the swept values and a
fully sequential call is 1.5-1.7x worse. A floor above the first column's area wins
5.6% on 256x256 bidiagonalisation and is noise at five other shapes, so it is
recorded as an untaken lead rather than moved.

No code change. DROPPED, with the numbers that dropped it:
docs/worklogs/2026-10-14-evd-svd-floor-sweep.md
@shinaoka
shinaoka merged commit 47cb6b5 into main Oct 14, 2026
7 checks passed
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