RBF-FD Stencil Sizer

Working-set footprint of local RBF-FD weight computation (PHS + full Taylor basis) vs. L1/L2 caches or GPU shared memory. Click a row to select the polynomial degree. The comparison is purely capacity: memory footprint against cache size. Footprints are optimistic: the matrix and right-hand sides, factored in place (LAPACK convention), plus the pivot array (int32 ipiv) for LU/LDLT or the Householder scalars (tau) for QR.

Mode
Problem
One column per differential operator whose weights are computed on the same stencil (e.g. ∂/∂x, ∂/∂y, ∇² → 3).
Stencil size n = max(⌈c·m⌉, m); the n ≈ 2m rule (c = 2) is the common default in the RBF-FD literature. At n = m the RBF part drops out and the weights reduce to polynomial FD on the stencil nodes.
A fixed n answers "this stencil size is affordable — which degrees are attainable?" Degrees with m > n are greyed out as invalid.
Hardware
Divides the cache or shared-memory capacity to allow for other data sharing it (stack, prefetched lines, workspace): 1 assumes the full cache is available, 2 assumes half.
Padding
Padded rows apply to the matrix and the right-hand sides. The tool enforces lda ≥ nt.
Shared-memory bank conflicts (selected degree)
Access pattern:
Each column below is one of the 32 banks; stacked cells are the threads of a warp landing in that bank during a single access. A flat profile at height 1 (fp32) or 2 (fp64, classic model) is the best achievable; anything taller serializes and is drawn red. Conflict factor = gcd(w·stride, 32), so column access is independent of lda, while row access is worst when lda is a multiple of 32/w and best when lda is odd.
Classic model: 32 banks × 4 bytes; an fp64 element spans two banks. Compute capability ≥ 8.x can service 8-byte accesses without the inherent 2-way split; the stride-induced conflicts shown for row access still apply. Note the trade-off: vectorized 128-bit shared loads (double2) require even lda, which doubles the row-access conflict relative to odd lda.
Formulas