Pardiso can handle multiple right side, AX=B, meaning B is a matrix. Every column of B is a right hand side. If B is very sparse, is there any way to exploit this feature, instead of storing B as a full matrix? Thank you!
Here is an untested suggestion:
Store B using CSC storage. After the factorization of A has been performed, do the forward and backward substitutions on one column of B at a time: for each column of B, (i) unpack into a full vector using ?sctr (ii) call pardiso to obtain the corresponding column of X by forward and backward substitution, (iii) pack the result just found into the proper column of X using ?gthr.
A simpler alternative is not to store B at all, but compute each column of B just when it is needed, solve for the corresponding column of X, and store X in any way suitable in memory or on disk.