Documentation Index
Fetch the complete documentation index at: https://mintlify.com/KarypisLab/ParMETIS/llms.txt
Use this file to discover all available pages before exploring further.
ParMETIS_SerialNodeND computes a fill-reducing nested dissection ordering for a distributed sparse matrix using the serial METIS ordering algorithm rather than the fully parallel approach of ParMETIS_V3_NodeND. Each process contributes its local graph data and the function coordinates across all processes to produce a globally consistent permutation. This can be a better choice for small-to-medium graphs where the serial METIS ordering quality is preferred over the parallel algorithm’s heuristics.
Parameters
Distribution of vertices (matrix rows/columns) across processes.
vtxdist[i] is the global index of the first vertex on process i. Size npes + 1; must be identical on all processes.Local adjacency row pointers in CSR format representing the local rows of the sparsity pattern. Size
local_nvtxs + 1, where local_nvtxs = vtxdist[rank+1] - vtxdist[rank].Local adjacency column indices in CSR format. Size
xadj[local_nvtxs].Indexing convention.
0 for C-style 0-based indexing; 1 for Fortran-style 1-based indexing.Algorithm options. If
options[0] = 0, all defaults are used. If options[0] = 1, options[PMV3_OPTION_DBGLVL] (index 1) sets the debug level and options[PMV3_OPTION_SEED] (index 2) sets the random seed.Output. Fill-reducing permutation array.
order[i] is the new global index assigned to global vertex i. The caller must allocate this array with vtxdist[npes] elements (total vertex count).Output. Separator sizes for the nested dissection tree. Array of size
2 * npes. Describes the separator structure of the dissection, which can be used to plan parallel sparse factorization.Pointer to the MPI communicator covering all participating processes.
Return value
ReturnsMETIS_OK (1) on success. Any other value indicates an error.
When to use this function
The function has the same signature asParMETIS_V3_NodeND, so switching between the two requires only changing the function name in your call site.
Usage example
Compile with:
mpicc -o prog prog.c -lparmetis -lmetis