[petsc-users] ERROR: MatPartitioningApply_Parmetis() ... Does not support any processor with 0 entries

Jed Brown jedbrown at mcs.anl.gov
Fri Oct 21 16:21:03 CDT 2011


On Fri, Oct 21, 2011 at 16:14, Dominik Szczerba <dominik at itis.ethz.ch>wrote:

> Hmm, I just want to partition my mesh that I read in serial. So
> adjacency vectors are only on root. How can I provide distributed
> adjacency information, before partitioning? This is an endless circle.
> Or do you mean I should just broadcast my adjacency vectors ia,ja to
> all the other processes?
>

The usual thing is to distribute the mesh naively to begin with, then
partition and move the mesh to the correct place with respect to the new
partition. It is possible that the case you describe works reliably, in
which case the guard was to blunt. The crashes I'm familiar with occur when
there are very few nodes such that some processors don't get any. You can
open up pmetis.c and remove the guard entirely or write a better guard.


>
> > The best fix is to have the bug/limitation fixed upstream, but barring
> that,
> > we should build a subcommunicator of suitable size, migrate the graph to
> > that subcomm, call ParMetis from there, and migrate the new partition
> back
> > to the original comm.
>
> Are you suggesting to use other communicator than PETSC_COMM_WORLD in
> the code I cited?
> How would I go about creating a subcommunicator "of suitable size".
> And what do you mean by "migrate"?
>

This is really intended for the other case where the graph is really small
compared to the node count. (This can happen on coarse levels of multigrid.)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20111021/a3e80b0f/attachment.htm>


More information about the petsc-users mailing list