Assuming I have, on a secondary memory like SSD, a matrix $A \in {\rm I\!R}^{n\times n}$ that is very large and cannot be stored on the main memory. I want to compute a (virtually) upper triangular matrix $U$ by row pivoting of its LU-Decomposition to solve for $Ax = b$, where $b$ is present and stored in the main memory. Now, my main memory limitation only allows me to store $U$, specifically the nontrivial part of $U$, as well as $b$ and enough workspace for computations.
I have been told I can use a 1-dimensional array say $s$ of maximum size $\frac{n(n+1)}{2}+2n$, to store all nonzero elements of $U$ on the main memory (one row at a time). This way, I can store only part of the original $A$ on the main memory and yet be able to solve for $Ax=b$.
I'm thinking a (possibly tweaked) version of gaussian elimination with partial row pivoting could be what I need. Using an augmented matrix $Ab$ and reduce it as $L^{-1}(Ab) = (U, c)$ where $(U, c)$ is a virtually upper triangular. For example: $$ (U, c) = \left[\begin{array}{rrrrr|r} & & 3 & 3 & 3 & 3 \\ 1 & 1 & 1 & 1 & 1 & 1 \\ & & & & 5 & 5 \\ & & 2 & 2 & 2 & 2 \\ & & & 4 & 4 & 4 \end{array}\right] $$ then: $s = \left(3 ~ 3 ~ 3 ~ 3 ~ 1 ~ 1 ~ 1 ~ 1 ~ 1 ~ 1 ~ 5 ~ 5 ~ 2 ~ 2 ~ 2 ~ 2 ~ 2 ~ 4 ~ 4 ~ 4\right)$
My question is, are there any existing method or algorithm that would determine $U$ and store its nonzero elements without the need to have the entire $A$ loaded to the main memory?
Thanks
edit: a posible and partial algorithm as follows: https://i.stack.imgur.com/FTLRl.png
