Does the MIS you use, use the numerical values in the matrix? Looking at the code it looks like not, while hem does seems to use them.
But MatCreateGraph() seems to always get the numerical values, makes them positive and then scales them by the diagonal even when no filtering will be done. Can this be optimized out for no filtering and not HEM (for scalar matrices it looks like even the MatDuplicate() is not needed since it just processes a copy of the original matrix?) I think the current parallel symmetrization could be optimized especially when one doe not need numerical values. Probably can be done faster than MatTranspose() followed by MatMAXPY() The MIS also seems to slow down with multiple MPI ranks. These combine to make the total time to solution much slower in parallel than sequential for GAMG, while all the rest of GAMG gets good speedup. Is there a parallel coarse grid point selector that would be faster and not have the parallel bottle necks that could be coded up relatively easily? Barry > On Sep 18, 2022, at 4:21 PM, Mark Adams <mfad...@lbl.gov> wrote: > > > > On Sun, Sep 18, 2022 at 4:02 PM Barry Smith <bsm...@petsc.dev > <mailto:bsm...@petsc.dev>> wrote: > > Mark, > > Do all MIS algorithms in PETSc require a symmetric graph structure? And > parallel ones can hang if not structurally symmetric? > > Yes, > > > When used sequentially I guess it never hangs but it may not produce a > "correct" MIS if the matrix structure is not symmetric? > > It is fine in serial and it is not necessarily an MIS of the symmetrized > graph. > If there is a one way edge between two vertices and the order of the greedy > MIS process picks the root of the edge it is an MIS of the symmetrized graph, > otherwise both vertices could get selected. > > But like the MIS is fine for GAMG in this circumstance? > > It will be fine for GAMG. The MIS is just a heuristic. > > > Barry >