sTiles
A tiled sparse Cholesky solver for the engine behind pyINLA.
What is sTiles?
sTiles is a framework for the Cholesky factorization of large sparse symmetric positive definite matrices, developed at KAUST. It splits the matrix into tiles and schedules the factorization over them, which lets it exploit the structure of the precision matrices behind latent Gaussian models.
In pyINLA it is an alternative sparse solver. Your model, your call and your results stay the same; only the numerical engine that factorizes the precision matrices changes. On structured models it can cut factorization time substantially, in particular on machines with many cores.
Using sTiles
Select the solver in the compute block of control:
from pyinla import pyinla result = pyinla( model=model, family="gaussian", data=df, control={"compute": {"smtp": "stiles"}}, num_threads="4:2", )
smtp accepts "default", "taucs", "band" and "stiles". The inner thread count (the 2 in "4:2") is what sTiles parallelises, so give it more than one; see Runtime & Threads.
Tile types
sTiles keeps the factor as a grid of tiles, stored in one of three modes:
Pick the mode in the stiles block:
control={
"compute": {"smtp": "stiles"},
"stiles": {"tile_type": "auto"},
}
With "auto", sTiles looks at the precision matrix and chooses the mode for you. Leave it there unless you want to compare modes yourself.
Options
| Key | Default | What it does |
|---|---|---|
| tile_type | "default" |
Tile storage mode: "default", "auto", "sparse", "semisparse", "dense". |
| tile_size | -1 |
Edge length of the tiles the factor is split into. |
| block_size | -1 |
Blocking used when solving with many right-hand sides at once. |
| verbose | False |
Print what sTiles decided while it factorizes. |
| param | None |
Up to 32 integer slots for expert tuning. |
A size of -1 means sTiles chooses adaptively.
Citing sTiles
If you use the sTiles solver in your work, please cite: