itaps-parallel Proposal for handling queries with parts, sets, and partitions
Onkar Sahni
osahni at scorec.rpi.edu
Wed Dec 19 14:38:51 CST 2007
> Well ok, if you want to get that specific, then yes. But the second of
> those is certainly a set operation (not necessarily entity sets as in
> the iMesh interface, just intersection/etc. between different lists of
> entities). And the two questions above are different in the sense that
> one might involve parallel communication and the other doesn't.
>
> So I count three fundamental questions we're passing around in one
> discussion here:
>
> 1) Do we want to do booleans on query results below the interface level?
> An example query would be "What are all regions in some set in a
> particular part?"
We would not even do entity-set boolean (and produce a new entity-set)
below the interface for such a query. Mostly we will try: given some set,
loop over set, ask each entity in set which part it belongs to.
>
> 2) How do we express and query sets spread across processors?
>
We agreed that this would require communications and mostly will be done
by application outside/above interface.
> 3) How do we refer to parts and partitions in the interface, and which
> functions do we use to get information about them?
We refer them as handles and/or instances, like part-handle (but not
entity-sets).
- Onkar
>
> I think we need to sort out these questions at the conceptual level
> before getting into specific functions. I also think they are separable
> questions and should be treated that way first. Thoughts?
>
> - tim
>
>> The proposal I sent out was to overload parts, mesh instances, and
>> partitions as the first argument in existing iMesh functions. This was
>> shot down on the basis that it makes multiplexing difficult, at least,
>> and perhaps impossible.
>>
>> The alternative on which we (I think) more or less reached consensus at
>> the telecon was to expand the argument lists for relevant functions to
>> include a partition handle and a part handle. For example,
>>
>> iMesh_getNumOfType(iMesh_instance instance,
>> const iBase_EntitySetHandle entity_set_handle,
>> const PartitionHandle partition_handle,
>> const PartHandle part_handle,
>> const int entity_type,
>> int *num_type, int *err);
>>
>> Now, I've just done a pass through the iMesh interface to make a list of
>> what functions are likely to need this treatment, and here's what I've
>> come up with:
>>
>> Need part, instance, and partition versions:
>> getNumOfType, getNumOfTopo, getNumEntSets*
>>
>> The asterisk on getNumEntSets is for partitions: we don't currently have
>> defined semantics for identifying logical sets that are spread across
>> parts as being one set. Given that, it isn't clear to me whether asking
>> for a partition-wide number of entity sets necessarily gives useful
>> information. This same logic motivates me to leave all of the set stuff
>> out, too, on the basis that sets will (under the current paradigm)
>> intrinsically are native to an instance (not a part, unless we make a
>> change there...), and so talking about adding one set to another on a
>> part (for instance) doesn't make sense. Any thoughts? (Tim, I'm bracing
>> myself... :-))
>>
>> Need part and instance versions, but -not- partition, in keeping with
>> our stated aim of not allowing global results that will be absurdly /
>> unscalably large:
>> getAllVtxCoords, getVtxCoordIndex, getAdjEntities, getEntities
>> (get2ndAdjEntities will go here, too, once it's added officially)
>>
>> Need part and instance versions, but -not- partition (IMO), because the
>> parallel iteration is again intrinsically unscalable.
>> initEntArrIter, initEntIter
>>
>> So the bottom line is that we're looking at, if my count is correct, no
>> more than ten functions that will need to be modified in any way. If
>> that small number turns out to really be correct in everyone else's
>> view, then it's a manageable enough number that it isn't absolutely
>> anathema to -duplicate- a function or two so that the serial interface
>> doesn't have to carry around a bunch of null handles as args (or maybe
>> we could add a macro to expand something like the current serial version
>> to the full version with extra args).
>>
>> Carl
>>
>
> --
> ================================================================
> "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