# ParMETIS (4.0.3) PartKway returns discontiguous partitions with "large" number of MPI tasks

Dear all,

I am using ParMETIS (version 4.0.3) to partition in parallel

the dual graph of a finite element mesh with 8.75M tetrahedra.

In particular, I build the dual graph on my own, and then

call ParMETIS graphpartkway subroutine to partition it into

the same number of parts as MPI tasks involved in the parallel

computation. The dual graph is constructed in such a way that

two vertices are neighbours if and only if the corresponding tetrahedra

share a face. I am using ncon==1, no vertex/edge weights nor tpwgts,

and ubvec=1.10.

With this set-up, I am obtaining discontiguous partitions

with 1024 MPI tasks/partitions and beyond. I am aware that

ParMETIS 4.0.3 does not ensure contiguous partitions, but ...

1) Is there any algorithm set-up that favours contiguous

partitions? I have tried defining NGR_PASSES to 20 (instead of 4)

in defs.h without success. I also tried to replace the

parallel recursive bisection at the coarsest level by a replicated

on all processors METIS 5.x partkway with METIS_OPTION_CONTIG enabled,

also without success (i.e., it seems uncoarsening/refining to be

the source of discontiguity).

2) Would it be so hard to write a message-passing code that tries to

enforce contiguous partitions afterwards as it is done in METIS 5.x

when METIS_OPTION_CONTIG is enabled ?

Find at

http://www3.uji.es/~martina/part117_discont.png

a picture showing how does a discontiguous partition

looks like. It is the local finite element mesh corresponding

to part. id 117. Note that in the bottom-right corner, there are two

tetrahedra sharing only one corner; these two tetrahedra are

DISCONNECTED in the dual graph. This kind of situation can lead to

singularities in the solution of

local Neumann problems in domain decomposition solvers (the ones that

are fed by the finite element mesh partition computed by ParMetis).

Thanks for your support.

Best regards,

Alberto.