The solve and parallelSolve functions return different results when solving linear systems of matrices that contain zero rows. parallelSolve seems to be broken and always returns the zero vector in my tests.
Example code:
Graph G(3);
G.addEdge(0, 1);
CSRMatrix A = CSRMatrix::laplacianMatrix(G);
std::cout << A;
// 1, -1, 0
// -1, 1, 0
// 0, 0, 0
Vector rhs({1, 1, 0});
Lamg<CSRMatrix> lamg;
lamg.setup(A);
Vector solution(3);
lamg.solve(rhs, solution);
std::cout << solution; // (-0.5, 0.5, 0)
std::vector<Vector> rhss{rhs};
std::vector<Vector> solutions{Vector(3)};
lamg.parallelSolve(rhss, solutions);
std::cout << solutions[0]; // (0, 0, 0)