I want to solve the Ax=b equation where A is a sparse matrix (1,964,568 x 1,964,568 nnz=75256446) and b is also sparse (1,964,568 x 1,964,568 nnz= 25354926) by using Eigen library in C++.
At first I was trying to use the Eigen Sparse LU to solve my problem, after a few hours I ran out of memory (I have 128GB RAM). After this I included the INTEL MKL library with Pardiso solver. Even with this I cant solve my problem. Maybe anyone has some tips to solve my problem?
#define EIGEN_USE_MKL_ALL
#include <Eigen/Sparse>
#include <unsupported/Eigen/SparseExtra>
#include <iostream>
#include <Eigen/OrderingMethods>
#include <Eigen/PardisoSupport>
typedef Eigen::SparseMatrix<double>SpMat;
typedef Eigen::COLAMDOrdering<int>Order;
int main()
{
SpMat A;
SpMat B;
SpMat X;
Eigen::loadMarket(A, "MatK.mtx");
Eigen::loadMarket(B, "MatM.txt");
A.makeCompressed();
B.makeCompressed();
Eigen::PardisoLU<SpMat>solver;
solver.analyzePattern(A);
solver.factorize(A);
X = solver.solve(B);
}
I can compile my code and run it. I just need better performance and less memory.