I am not sure this is accurate. Have a look at my implementation IncompleteCholeskyDecompositionThreshold
Project.
From what I understand we can have 3 types of incomplete (At least those are 3 options):
- Threshold Based - IC( \tau ) .
MATLAB’sichol()
supports this. - Pattern Based - IC( l )
MATLAB’sichol()
supports this withl = 0
, namely only where non zero elements exists. This basically also guarantees upper memory boundary. - Number of Non Zero Elements - IC( p )
MATLAB doesn’t support this. This allows exact memory allocation control.
So what I see is that MATLAB has 2 out of 3 and has a mode to control the amount of memory.
It also has a mode for Modified Cholesky
which compensate the diagonal components for the inaccurate decomposition.
If I get it correctly, LimitedLDLFactorizations.jl
is doing something like (2), hence the memory allocation is a multiplication of the number of non zeros of the input matrix. Am I right?
I can see there is also support for Thresholding so if one allocates enough memory then this become (1) as well.
So we’re missing (3) and the Modified ICT
.