Compression of the sparse triangular factors is implemented using the ZFP library (>= 0.5.5):
https://computing.llnl.gov/projects/floating-point-compression
STRUMPACK needs to be configured with ZFP support:
When enabled, lossy compression will compress the sparse triangular factors, hence reducing the overall memory requirements of the solver and allowing users to solver larger problems. Because compression is lossy, the solver will be approximate (a preconditioner), and the default outer iterative solver will in this case be preconditioned GMRES. All computations will still be performed in the original precision specified by the user, so one should not expect any speedup from this compression.
Lossy compression can be enabled/disabled via the command line options:
or via the C++ API as follows
The lossy compression uses fixed precision (see https://zfp.readthedocs.io/en/release0.5.4/modes.html#modes). The precision is specified in number of bit planes, and can be set with:
or via the C++ API as follows
For lossless compression, set the precision to 0 or a negative value.
The lossless compression mode will not be able to achieve much compression, but the solver will be exact.