itaps-parallel One particularly difficult thing in one of the use cases...
Mark Beall
mbeall at simmetrix.com
Wed Jun 2 08:24:30 CDT 2010
I'm either not clear on the example or unsure of how you would
accomplish step 2 with iMeshP anyhow.
For step 2 are you saying that you're creating ghosts of entities from
the 1st column on each other processor in the row? (I don't know if by
"share" you mean something else).
I don't see that iMeshP_createGhostEntsAll could even be used in that
way, it creates ghosts of a certain number of layers from the
partition boundary. It also requires a partition into which to create
the ghost entities.
iMeshP_addGhostOf could be used, it requires the target part.
mark
On Jun 1, 2010, at 9:52 PM, Tim Tautges wrote:
> Hi all,
> Here, I attempt to describe one of the particularly difficult parts
> of one of the use cases. I think this at least exposes a potential
> problem in the currently specified iMeshP; I think it also
> demonstrates the problem with entities always having to be in parts,
> but that's more of a subjective statement.
>
> The use case is radiation transport. In a nutshell, consider
> processes arranged in a 2d array, with each column representing an
> angle, and each row a subdomain in the spatial partition. The
> spatial partition of the mesh will be distributed across all
> processes in a column; a given spatial subdomain is copied onto each
> process in a row.
>
> Initializing the mesh onto this processor arrangement is done in 3
> steps:
> 1. load the mesh onto the 1st column, in a domain-decomposed fashion
> typical of other DD-based codes
> 2. share the mesh from the 1st column across a row of processes
> 3. establish sharing relations in the other columns
>
> It's in step 3 that I see the problem. Here, the mesh for a spatial
> subdomain is already represented in the iMesh Instance on each
> process, but the Partition representing the column hasn't been
> created yet. After you create that Partition, and a Part in that
> Partition, you need to assign the mesh from the Part in the row-
> based Partition into that Part in the column-based Partition. How
> do you do that? The function iMeshP_exchEntArrToPartsAll is a
> collective call, and implies that you're moving entities from one
> Part to another. But, the entities we're talking about here aren't
> part of any Part in that column Partition. I'd prefer to use
> iMesh_addEntToSet, but I'm guessing that would break other
> implementations.
>
> This example also demonstrates the need either for another function,
> to negotiate shared entities between Parts, or to expand the
> definition of iMeshP_createGhostEntsAll to include the functionality
> (the latter would be most natural for MOAB, since the same function
> is used in MOAB's parallel stuff to do either; I distinguish by
> allowing the # layers specified to be zero, in which case you're
> requesting the resolution of shared entities at an interface).
>
> - tim
>
> --
> ================================================================
> "You will keep in perfect peace him whose mind is
> steadfast, because he trusts in you." Isaiah 26:3
>
> Tim Tautges Argonne National Laboratory
> (tautges at mcs.anl.gov) (telecommuting from UW-Madison)
> phone: (608) 263-8485 1500 Engineering Dr.
> fax: (608) 263-4499 Madison, WI 53706
>
More information about the itaps-parallel
mailing list