itaps-parallel Diagram of set-based parallel data

Tim Tautges tautges at mcs.anl.gov
Tue Dec 18 16:25:59 CST 2007


Hi all,
   As promised, attached is a cartoon describing set-based parallel 
data.  Note I've stuck to the simplest example (as wisely advocated by 
Mark S).  I show the representation of the same mesh in the serial and 
3-processor cases.  I don't show ghosted elements, for simplicity, 
though those "fit" in the model.

PARALLEL

In the parallel representation, each processor has a set it understands 
as "partition1" (labeled "Partn1").  In this example, on each processor, 
that set contains one set corresponding to the part assigned to that 
processor.  The part set contains 3d entities assigned to that 
processor.  In this example, all 3d entities are objects in the 
decomposition, therefore each 3d entity is a member of exactly one Part.

There are other entity sets defined in this mesh, including a boundary 
condition set (BC1), material sets (Matl1, Matl2), and 
application-defined sets (App1-App3).  In this example, the BC1 set 
contains faces in the mesh (2d elements), but not all of them.  Matl1 
and Matl2 are meant to form a covering over 3d elements, defining the 
materials for those elements.  Application-defined sets are for 
arbitrary groupings.  Whether such "shared" sets would exist on 
processors even if there were no set contents on those processors is 
currently implementation-defined, though maybe there should be a common 
convention for that.

Some of the sets on each processor are implicitly linked with sets on 
other processors.  For example, the Partn1 set on each processor is 
linked to the corresponding sets on other procs.  For this set, that 
means that if the mesh were ever to be assembled in a single file, the 
contents of Partn1 on various processors would all go into a single set, 
which would be assigned the union of all tags on that set on all 
processors.  Presumably those tags would all be the same.  Similarly, 
BC1 and Matl1, Matl2 are sets that are implicitly linked and which would 
be combined.  App1-App3 are application-defined sets which would be 
considered separate, even if the mesh was written to a single file. 
Note that the decision or designation of which sets across the 
processors are really the same sets is application- or 
implementation-defined.  In MOAB, we do it based on tag and optionally 
tag value.  So, for example, any set with a "MATERIAL_SET" tag whose 
value is the same is understood to be the same set.  This is used in the 
HDF5-based file writer in MOAB, which writes a single file in parallel 
from all processors.

SERIAL

In the serial case, all sets having implicitly-defined counterparts on 
other processors have been combined.  Thus, part sets (Part1-Part3) are 
contained in the Partn1 set, and there are single BC1, Matl1 and Matl2 
sets.  App1-App3 are still separate, since they were not designated to 
be the same sets.  The Part1-Part3 sets and Matl1-Matl2 sets are 
different coverings of all 3d entities in this mesh for this example. 
The BC1 set includes a subset of 2d entities in the mesh.

DISCUSSION

As I've mentioned before, I've implemented MOAB's parallel reader such 
that any collection of sets which forms a covering over the things I 
want to partition can be used to define the partition.  Thus, in this 
example, one could use Matl1/Matl2 as the part sets.  In this case, 
those sets would serve multiple purposes.  Similarly, I don't see any 
reason we shouldn't allow a given part set to be a member of multiple 
partitions.

Part sets should also be allowed to include sets; in this case, maybe 
the sets are the objects in the partition.  This would be a very nice 
thing to use for e.g. hypergraph partitioning methods. 
Counter-intuitively, I would lean toward using contains relations to go 
down that hypergraph hierarchy.  If a given implementation did not 
implement Parts as legitimate entity sets, then this property could be 
used to reduce bookkeeping for adaptive applications, e.g. have the part 
contain sets which themselves contain 3d elements of a given material or 
geometric volume.  Of course, that assumes you're using sets for those 
other things...

This method for representing partitions also has the following benefits:
- allows multiple partitions to exist in the same file/instance/database
- would allow current set operations to be used to query contents of 
parts and partitions
- parallel view is only different when asking about parallel data; in 
other cases it looks the same as serial interface
- other parts of RPI partition model can be embedded similarly, by using 
sets related to part sets using parent/child relations

I'll be elaborating on this at the SIAM mtg in March, as well as pulling 
in other examples where sets can be used to do various things.  I guess 
that means I've already started my talk, which has to be some sort of 
record for me!

Comments welcome, fire when ready!

- 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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: setrels.png
Type: image/png
Size: 71250 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/itaps-parallel/attachments/20071218/a724df02/attachment.png>


More information about the itaps-parallel mailing list