From: Griffith, B. E. <bo...@em...> - 2018-06-11 19:48:30
|
Folks -- I want to play around with an application-specific mesh partitioning that will change during the course of a time-dependent simulation. (Basically, I want to experiment with using the partitioning of a different parallel data structure to drive the mesh partitioning.) I think that the main thing that I need to do is to implement _do_partition(). (I will also implement _do_repartition() once the basic _do_partition() is working.) I was wondering what else needs to be done so that distributed System data are redistributed. Does this happen automatically when calling Partitioner::repartition(), or is there more to it than that? Thanks! -- Boyce |
From: John P. <jwp...@gm...> - 2018-06-12 01:23:57
|
On Mon, Jun 11, 2018 at 10:16 AM, Griffith, Boyce Eugene < bo...@em...> wrote: > Folks -- > > I want to play around with an application-specific mesh partitioning that > will change during the course of a time-dependent simulation. (Basically, > I want to experiment with using the partitioning of a different parallel > data structure to drive the mesh partitioning.) > > I think that the main thing that I need to do is to implement > _do_partition(). (I will also implement _do_repartition() once the basic > _do_partition() is working.) I was wondering what else needs to be done so > that distributed System data are redistributed. Does this happen > automatically when calling Partitioner::repartition(), or is there more to > it than that? > I think the System data should be handled by System::reinit() which is be called by EquationSystems::reinit(). -- John |
From: Griffith, B. E. <bo...@em...> - 2018-06-12 02:01:26
|
On Jun 11, 2018, at 9:23 PM, John Peterson <jwp...@gm...<mailto:jwp...@gm...>> wrote: On Mon, Jun 11, 2018 at 10:16 AM, Griffith, Boyce Eugene <bo...@em...<mailto:bo...@em...>> wrote: Folks -- I want to play around with an application-specific mesh partitioning that will change during the course of a time-dependent simulation. (Basically, I want to experiment with using the partitioning of a different parallel data structure to drive the mesh partitioning.) I think that the main thing that I need to do is to implement _do_partition(). (I will also implement _do_repartition() once the basic _do_partition() is working.) I was wondering what else needs to be done so that distributed System data are redistributed. Does this happen automatically when calling Partitioner::repartition(), or is there more to it than that? I think the System data should be handled by System::reinit() which is be called by EquationSystems::reinit(). OK, so something like: partiontiner->repartition(); equation_systems->reinit(); and then continue? -- John |
From: Roy S. <roy...@ic...> - 2018-06-20 03:58:24
|
On Tue, 12 Jun 2018, Griffith, Boyce Eugene wrote: > OK, so something like: > > partiontiner->repartition(); > equation_systems->reinit(); > > and then continue? Did this work for you? The code above is what I'd have written as v0.1 too, but I added a quick unit test to make sure and (at least with DistributedMesh) no luck. I'll see what I can figure out; surely you can do this without a whole prepare_for_use()... --- Roy |
From: Griffith, B. E. <bo...@em...> - 2018-06-20 16:22:20
|
> On Jun 19, 2018, at 11:58 PM, Roy Stogner <roy...@ic...> wrote: > > > On Tue, 12 Jun 2018, Griffith, Boyce Eugene wrote: > >> OK, so something like: >> >> partiontiner->repartition(); >> equation_systems->reinit(); >> >> and then continue? > > Did this work for you? > > The code above is what I'd have written as v0.1 too, but I added a > quick unit test to make sure and (at least with DistributedMesh) no > luck. I'll see what I can figure out; surely you can do this without > a whole prepare_for_use()… I haven’t gotten a chance to implement the new partitioner yet. We will be using ReplicatedMesh for the foreseeable future. — Boyce |
From: Griffith, B. E. <bo...@em...> - 2018-06-29 15:34:13
|
> On Jun 20, 2018, at 9:48 AM, Griffith, Boyce Eugene <bo...@em...> wrote: > > > >> On Jun 19, 2018, at 11:58 PM, Roy Stogner <roy...@ic...> wrote: >> >> >> On Tue, 12 Jun 2018, Griffith, Boyce Eugene wrote: >> >>> OK, so something like: >>> >>> partiontiner->repartition(); >>> equation_systems->reinit(); >>> >>> and then continue? >> >> Did this work for you? >> >> The code above is what I'd have written as v0.1 too, but I added a >> quick unit test to make sure and (at least with DistributedMesh) no >> luck. I'll see what I can figure out; surely you can do this without >> a whole prepare_for_use()… > > I haven’t gotten a chance to implement the new partitioner yet. We will be using ReplicatedMesh for the foreseeable future. Did you get a chance to figure out the correct sequence of calls to make something like this work? I am happy to run some tests with your unit test if it would be helpful. Thanks! -- Boyce |
From: Roy S. <roy...@ic...> - 2018-06-29 17:29:02
|
On Fri, 29 Jun 2018, Griffith, Boyce Eugene wrote: > On Jun 20, 2018, at 9:48 AM, Griffith, Boyce Eugene <bo...@em...> wrote: > >> On Jun 19, 2018, at 11:58 PM, Roy Stogner <roy...@ic...> wrote: >> >>> On Tue, 12 Jun 2018, Griffith, Boyce Eugene wrote: >>> >>>> OK, so something like: >>>> >>>> partiontiner->repartition(); >>>> equation_systems->reinit(); >>>> >>>> and then continue? >>> >>> Did this work for you? >>> >>> The code above is what I'd have written as v0.1 too, but I added a >>> quick unit test to make sure and (at least with DistributedMesh) no >>> luck. I'll see what I can figure out; surely you can do this without >>> a whole prepare_for_use()… >> >> I haven’t gotten a chance to implement the new partitioner yet. We will be using ReplicatedMesh for the foreseeable future. > > Did you get a chance to figure out the correct sequence of calls to > make something like this work? I am happy to run some tests with > your unit test if it would be helpful. It looks like my unit test inadvertently triggered a *different* failure, simply because my set up (moving a mesh back on to processor 0 even if it was already distributed) was a corner case we'd never supported. https://github.com/libMesh/libmesh/pull/1773 should fix that corner case and add the unit test, and in theory your above code should already have worked fine on more realistic cases. --- Roy |