Source code for graphdot.graph.reorder.pbr

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from .mnom import PbrMnom


_partitioner = PbrMnom()


[docs]def pbr(g, partitioner=None): '''Compute a partition-based permutation of a graph that minimizes the number of cross-tile messages. Note that the method does NOT modify the graph, but rather just returns a permutation vector that can be used by Graph.permute to achieve the actual reordering. Parameters ---------- g: graphdot.Graph The graph to be reordered. Returns ------- perm: numpy.ndarray Array of permuted node indices. ''' if partitioner is None: partitioner = _partitioner A = g.adjacency_matrix.tocoo() perm = partitioner(A.row, A.col, *A.shape) return perm