Concept

Recursive factorisation — where it appears

A factorisation that splits the columns in half, factors the left half, updates the right half and factors what is left, doing each part by splitting again. It has no block size, so at some depth its pieces fit any cache, which is how it moves little data without knowing the memory.

Named by 6 essays across one field — each of them below, with the objects they name alongside it.

110¹10²10⁵block size bwords movedbest block: b = 10the recursion: no block size126,742 wordsbest block, scanned1.1·10⁵the recursion1.3·10⁵recursion ÷ best1.2M = 144 words; the recursion never reads it1.16× the best of 24 blocks

The recursion that was never told the memory

A blocked elimination has to be tuned to its fast memory, and tuned to one memory it costs up to 2.9 times the best at another. A recursive elimination splits the columns in half down to one and reads no memory size at all. On eight fast memories from 36 to 576 words it moves between 0.94 and 1.28 times the words of the best tuned block, with the same 585,200 operations and the same pivots — and on a machine with two caches it beats the block tuned to either cache on six machines of seven.

cost · Blocking
110¹123base case, columnswords ÷ the best block's√M − 2 = 10M = 144M = 144base of one1.2panels ≤ 10, worst1.2panels of 123the base case is a block size, rounded to a halvingand it has the block's cliff at √M − 2

The block size a recursion still has

A recursive elimination is sold as having no block size, and every real one switches to plain loops below some width. Swept over that width, the traffic is a staircase with its steps at the halvings of n, and its cliff sits where the blocked elimination's does — the first panel wider than √M − 2 moves 1.53 to 4.47 times the words, on six memories of six. On three caches the innermost decides, and a third cache costs every tuned block up to 14 per cent and the recursion nothing.

cost · Blocking
-12-10-8-6-4-2024681011.522.533.5leaf width minus (√M − 2)words ÷ pure recursionM = 64M = 144M = 256the edge is the same column at every memoryand the cheapest leaf sits on it

The leaf that sits on the edge

A recursive elimination's base case was found to be a block size in disguise, with a cliff where the blocked elimination's is, and the choice read as a trade: the processor wants wide leaves, the cache wants narrow ones. Measured at every width rather than at the halvings of 96, there is no trade inside the edge. Leaves exactly √M − 2 wide are the cheapest the recursion can have in words as well as calls — 0.81, 0.80 and 0.84 of the pure recursion's traffic at 64, 144 and 256 words — and one column wider moves 1.77 to 3.15 times it. And a matrix of 100 columns, which halves unevenly, meets the cliff in two steps rather than one.

cost · Blocking
M = 144, edge 10halving, worst size1.1aligned, worst size0.86961041121201280.70.80.911.1columns nwords ÷ pure recursionhalving to the edgesplit at the edgedashed: the pure recursion's wordsone base case, two ways to reach it

Leaves cut to the edge on purpose

A recursive elimination's cheapest leaf is exactly the square root of M, less 2, columns wide, and the rule drawn from it was to set the base case there and let the halvings put the leaves at or below it. On thirty-two sizes from 96 to 127 columns, halving to that base case moves more words than the pure recursion on sixteen of them at 144 words of fast memory, because the halvings stop at six and seven columns, not ten. Cut every dimension at a multiple of the edge instead and every size keeps the saving: 0.79 to 0.86 of the pure recursion's words, against halving's 0.91 to 1.07, with the same arithmetic and the same pivots. What it cannot make full is the one leftover leaf, and a leftover of one column is where it loses.

cost · Blocking
one column left over99 columns, leftover first0.98113 columns, leftover first0.92127 columns, leftover first0.92961001041081121161201241280.760.840.9211.081.16columnswords ÷ the pure recursion'saligned, leftover lastaligned, leftover firsteach sawtooth tooth is one multiple of the edgethe leftover is cheaper at the bottom

The short leaf belongs at the bottom

A recursive LU that cuts every dimension at a multiple of the cache's edge moves 14 to 21 per cent fewer words than the pure recursion, except where one leaf per dimension has to be short — and the one-column leftovers cost the most. Moving the short leaf to the top, where it becomes a thin strip of a large product, was predicted to cure that. It makes it worse on all twenty-nine sizes that have a leftover, by up to three hundredths. The measurement that matters more is the edge itself: one column under it the aligned cut keeps most of its saving, one column over it every size costs two and a half to three times the pure recursion. Halving to the same base case barely notices either mistake.

cost · Blocking
the folded sizes join the full ones64 words: folded best over no-leftover best0.99144 words: folded best over no-leftover best0.97256 words: folded best over no-leftover best1400 words: folded best over no-leftover best0.980.750.80.850.90.9511.05words ÷ the pure recursion's64 words144 words256 words400 wordsno leftoverone column, lastone column, foldedeach dot: one size from 96 to 127folded, the short sizes stop being short

One column of room past the edge

A recursive LU cut at multiples of the cache's edge leaves one short leaf per dimension, and the one-column leftovers cost the most. Folding the leftover into the leaf beside it puts that leaf one column past the edge, where every leaf at once costs two and a half times the pure recursion — so the prediction was that folding loses at 256 words and wins only where there are many leaves. It wins at every memory, on every one-column size, and wins more where the leaves are fewer: 0.021 of the pure recursion's traffic at 64 words, 0.074 at 400, bringing the short sizes down among the sizes with no leftover at all. Folding two columns loses everywhere, by up to three quarters. One leaf product says why: the edge is set by the cube, and a leaf wider in one dimension has exactly one column of room.

cost · Blocking

Named alongside it

The objects these essays reach for when they reach for this one.

Blocked algorithmData movementFlop countLU factorisationMemory hierarchyPartial pivotingCache-obliviousCacheCommunication lower bound

All concepts