The fill that is not independent
Worth reading first: The factor is not sparse · The order decides the memory · A block nobody can call sparse.
The sparsity field opens on a sentence and stops one question short of the next one.
The sentence is that the factors of a sparse matrix are not sparse: eliminating a variable couples
everything it touched to everything else it touched, and every one of those couplings is an entry that
was zero and is not. the-factor-is-not-sparse counts them; the-order-decides-the-memory shows that
the elimination order decides how many; and nested dissection is the order that does best on a grid —
and even it leaves a separator whose Schur complement is completely full.
That is where the field stops. The question it stops before is whether all those entries are independent.
The experiment
A k × k grid with the five-point operator. Take the middle column as a separator, and eliminate the left half and the right half exactly — a dense factorisation of each, which is affordable at these sizes and is the point, since what is being measured is the object left behind rather than the cost of reaching it.
What is left on the separator is
S = A_ss − A_sl A_ll⁻¹ A_ls − A_sr A_rr⁻¹ A_rs .
Count its nonzero entries, bisect it, and take the numerical rank of the block between its two halves:
| grid | separator | nonzero | block | columns at 10⁻⁸ | renumbered |
|---|---|---|---|---|---|
| 7 | 7 | 100% | 3 × 4 | 3 | 3 |
| 11 | 11 | 100% | 5 × 6 | 4 | 5 |
| 15 | 15 | 100% | 7 × 8 | 5 | 7 |
| 23 | 23 | 100% | 11 × 12 | 6 | 11 |
Three things in one table. The complement is completely dense, at every size, which is the sparsity field’s result unchanged. Its cross block is not full rank, and the gap widens: 6 of 11 at the largest separator. And the last column is the same Schur complement after one symmetric permutation of the separator’s unknowns, where the same block needs all of them.
Why the fill is not independent
The Schur complement is a discrete Green’s function.
Eliminating the interior of a domain is exactly the operation that leaves, on its boundary, the operator mapping boundary data to boundary response. In the continuous problem that operator is an integral operator whose kernel is the Green’s function of the differential operator restricted to the boundary — and away from the diagonal, a Green’s function is smooth.
So the block between two halves of the separator is a kernel matrix between two well-separated sets of points, which is the object the first essay of the hierarchy field measures. Its singular values fall off a cliff:
1, 6.18·10⁻², 3.90·10⁻³, 1.25·10⁻⁴, 1.97·10⁻⁶, 1.46·10⁻⁸, 4.83·10⁻¹¹
which is the same shape as the block between [0, 1] and [2, 3] for the kernel 1/r, arrived at from completely the other end.
The rank structure was not put there by the elimination. It was in the differential operator before anything was discretised, and the elimination made it visible by producing the matrix whose entries are values of it.
The growth, and what it is
The rank column climbs 3, 4, 5, 6 while the block climbs 3, 5, 7, 11 — that is 1.78 columns per doubling of the separator, against 0.19 columns per unknown. A full block would give 0.5 per unknown by construction.
So the rank grows like the logarithm of the separator, which is what the hierarchy field’s third essay finds for a touching pair and not what it finds for an admissible one. That is the right answer and it has a reason: the two halves of a separator touch. They share an endpoint at the middle of the line, the block between them contains the near-field interaction there, and the expansion the whole argument rests on does not converge across it.
A hierarchical representation of the Schur complement would therefore subdivide, exactly as the hierarchy field’s partition does, and the pieces away from the middle would be genuinely admissible. What this table measures is the crudest possible version — one bisection, one block — and it is already enough to make the point, which is that the fill is compressible and by how much is a question with a familiar shape.
The share of the block that has to be stored is 2·rank/m, and it falls: 0.86, 0.73, 0.67, 0.52 across the four sizes. Not dramatic at a separator of 23, and falling at every step, which is the form of the claim worth making.
The ordering, which is handed over rather than chosen
The last column of the first table is the phase’s own finding arriving in this field, and the way it arrives is the interesting part.
The hierarchy field’s seventh essay takes a kernel matrix and permutes it, and the compressibility vanishes: the same matrix, the same spectrum, the same norm, and a representation that stores every entry. The numbering there is chosen by a spatial sort, deliberately, as a preprocessing step.
Here it is not chosen. The separator is a line of grid points, they arrive in the order they sit on the line, and that order is already the spatially coherent one. Nested dissection produces a compressible fill as a side effect of producing a small one, and nobody had to decide anything.
That is a genuinely lucky property and it is worth saying which part of it is luck. The luck is that a separator is a geometric object — a cut through a mesh — so its unknowns come with positions. A fill-reducing ordering chosen from the graph alone, by minimum degree say, produces separators that are sets of vertices with no particular spatial coherence, and there is no reason for the fill it leaves to be compressible in any ordering the algorithm knows about.
So the two orderings this field already compares — minimum degree against nested dissection — differ in a second way nobody was counting. One of them leaves less fill; the other leaves less fill and leaves it in a form that can be compressed further, and the second property is invisible in every count of entries.
Where the elimination cost went
There is an accounting point in this experiment that is easy to lose and worth keeping, because it says why the measurement is about the object and not about the method.
The two half-eliminations above are dense. A 23 × 23 grid has 253 unknowns in each half, and factorising each half densely costs about 253³/3 ≈ 5.4·10⁶ multiplications — which is a preposterous way to eliminate a sparse matrix and is deliberately not what a sparse solver does. A real nested dissection recurses: each half is itself split by its own separator, and the cost comes out at O(n^1.5) rather than O(n^3).
None of that changes S. The Schur complement on the separator is the same matrix however the interior was eliminated, because it is defined by the algebra rather than by the algorithm — A_ss − A_sl A_ll⁻¹ A_ls is one expression, and any exact elimination of the interior produces it.
So the expensive route above is a way of getting a correct S at these sizes with the least code, and the measurements on it transfer unchanged to a solver that got there properly. What does not transfer is any statement about cost, which is why there is none in this essay.
The one thing worth noticing about the real recursion is that it makes the result more useful rather than less. In a proper nested dissection there is not one separator but a tree of them, each level’s separator carrying a Schur complement of its own, and the largest of them — the top-level separator of an n-unknown grid — has √n unknowns and a dense complement of n entries. That is the object that dominates the memory of a sparse direct solver in two dimensions, and it is the object this essay says is compressible.
What this is the beginning of
The measurement above is the observation that a whole class of sparse direct solvers is built on, and it is worth naming what they do with it even though none of it is in this essay.
If the Schur complement on a separator is rank-structured, it can be stored rank-structured — and then the elimination that produces the next separator up the tree can be performed in the format, using the formatted arithmetic this phase measures. What comes out is a sparse direct solver whose complexity is O(n) or O(n log n) rather than the O(n^1.5) in two dimensions and O(n²) in three that nested dissection alone achieves.
That is a large claim and this essay establishes only its first ingredient. Two more are needed and both are elsewhere in this phase: that a formatted arithmetic does not lose accuracy across a chain of operations, which is the essay on ninety-eight truncations costing nothing; and that the representation can be built from products rather than entries, which matters because a Schur complement is exactly the kind of object that can be applied and would rather not be formed.
The anisotropy, which goes the other way
The site has a whole field about what happens to this operator when its two directions stop being equally weighted, and every method in it gets worse. A point smoother stops seeing one direction, a coarse grid stops representing it, and the anchor exists because of it.
The fill goes the other way:
| ε | κ of the complement | columns at 10⁻⁸ | nonzero |
|---|---|---|---|
| 1 | 13.1 | 5 | 100% |
| 0.3 | 20.6 | 5 | 100% |
| 0.1 | 32.0 | 4 | 100% |
| 0.03 | 51.5 | 3 | 100% |
| 0.01 | 72.5 | 3 | 100% |
The operator gets harder by a factor of five in the condition number, the fill stays total, and the number of columns needed falls.
The reason is the same one that makes the whole field work. A strongly anisotropic operator couples weakly along one axis, so its Green’s function is nearly a function of one coordinate — which is to say nearly separable, which is exactly the property a low-rank block needs. The thing that makes an iteration struggle is the thing that makes the fill cheap.
That is a genuinely unexpected direction and it is worth one sentence of caution: it is measured on one grid at one bisection, and κ of a Schur complement is not κ of the operator. What it is not is an artefact of the fill becoming sparse, which is why the last column is on the table.
What a picture of the fill shows that a count does not
This field draws fill as a pattern: which entries are there and which are not. That is the right picture for the question the field asks, and it is the wrong picture for this one.
A spy plot of the Schur complement above is a solid square. It carries exactly one bit of information — everything is nonzero — and it is the same solid square at every grid size and for every operator on the table, including the anisotropic ones and the random control.
Shading by magnitude carries the rest. What appears is a ridge along the diagonal falling away smoothly in both directions, and that is the structure the rank measurement is about: a matrix whose entries are a smooth function of the distance between two indices. The same shading on the random control shows no ridge and no falling away, and its cross block is full rank.
So the two pictures answer two questions and only one of them has been asked in this field before. Which entries are there is a question about the graph, it is answered by the symbolic phase, and it is what decides how much memory to allocate. What is in them is a question about the operator, nothing in the sparsity field asks it, and it decides how much of that memory is actually needed.
The general form is one this collection has met in the spectra field. A sparsity pattern and a spectrum are both summaries of a matrix; a matrix has many properties neither of them records; and a method built on one of them is blind to everything the other would have said.
The refusal
The claim under test is the one this field’s own results would leave standing: that a dense Schur complement has to be stored as a dense matrix.
The refusal is fed the sparsity reading rather than the rank one, which is the way round that matters. The assertion that the complement is under half nonzero is handed 100 per cent, and it fails — so nothing in this essay may be read as softening the field’s original result. The fill is total. Every entry is there.
What is added is that 2·6·23 = 276 numbers describe the 11 × 12 block that 132 of those entries make up, and that the same block in a shuffled numbering needs all eleven columns. Dense and independent are two different words, this field measured the first, and only the second decides what has to be stored.
Both fields, on one object
Shares its objects with
Essays that name at least two of the same things, and that neither author linked.
- The kernel with nothing to compress — both name hierarchical matrix, kernel matrix, numerical rank, off diagonal rank
- The same matrix, numbered twice — both name elimination order, fill-reducing ordering, hierarchical matrix, off diagonal rank
- The size the rank does not notice — both name hierarchical matrix, kernel matrix, numerical rank, off diagonal rank
- A rank that is a number of digits — both name kernel matrix, numerical rank, off diagonal rank
- The test that costs what it saves — both name hierarchical matrix, numerical rank, off diagonal rank
- Two ends of the same arrow — both name elimination order, fill-in, fill-reducing ordering
Named objects
A flat tag is an object no other essay names yet.
Elimination orderFill-inFill-reducing orderingGreens functionHierarchical matrixKernel matrixNested dissectionNumerical rankOff diagonal rankSeparator