Skip to content

Lamg solve vs. parallelSolve inconsistencies when solving matrices with zero-rows #1167

@bernlu

Description

@bernlu

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions