Sorry about the late reply.

I just wrote a small toy code to see if the coarsening and refining
produces the same distribution using ParMetis and it does !! I've
attached the code with the mail and feel free to test it with some of
your own mesh files to confirm.

Ben, thanks for the update on the graph distribution and all I can say
is that is just good forward thinking !

I guess this hopefully brings me one step closer to doing geometric
multigrid now...

On Thu, Nov 13, 2008 at 10:17 AM, Benjamin Kirk <[EMAIL PROTECTED]> wrote:
>>> If this makes sense, I think I have a nice place to start working on
>>> this.
>>> And as long as coarsen and refine are pseudo-inverse operations,
>>
>> Hmm... they still may not be.  If you do a System::reinit() after
>> coarsen/refine, the Mesh will also be repartitioned, and I don't know
>> that our partitioners (the default, METIS/ParMETIS, in particular) are
>> guaranteed to give you the same partitioning every time you give them
>> the same mesh - I suspect their results will depend on the previous
>> partitioning/ordering, which will be scrambled by the coarsen/refine.
>> The different partitioning will then give you different DoF indexing.
>
> So this all rang a bell...
>
> http://sourceforge.net/mailarchive/forum.php?thread_name=C3E2413C.496F%25benjamin.kirk%40nasa.gov&forum_name=libmesh-devel
>
> Parmetis can either compute the partition of a graph independent of its
> distribution,  or repartition with some heuristic to minimize the amount of
> redistribution required while still creating a quality partition. Obviously
> the latter will create a distribution which is dependent on the initial
> partitioning, but what about the former?
>
> The problem we ran in to is that while the partitioning depends only on the
> input graph, in our case the input graph was dependent on the mesh
> distribution because the element global indicies were tied to the
> partitioning.
>
> See the thread, there was some debate as to whether repeated calls to the
> partitioner on the same mesh with the same number of processors should
> return the same partitioning...  Apparently I thought it was important
> enough to implement a fix in the parmetis partitioner.
>
> What we do now is compute a unique, global ordering of the elements based on
> their hilbert key ordering.  This ordering is independent of the actual
> element parallel distribution.  The graph is then built in terms of this
> ordering, and as far as I can tell the same partitioning of the graph will
> always result, independent of the graph distribution.
>
> -Ben
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to