itaps-parallel Tag communication operations

Carl Ollivier-Gooch cfog at mech.ubc.ca
Tue Feb 26 18:25:02 CST 2008


Tim Tautges wrote:
> Hi all,
>   Regarding tag communication operations, the goal is to provide in the 
> interface functions that most parallel applications are likely to need. 
>  One functionality that comes to mind right away is exchanging tag 
> information on shared and/or ghosted entities.  We could get fancy about 
> it, getting more into what kinds of operations would be provided 
> (min/max, average, etc.), but at this point I think it would be better 
> to keep it simple.  So, I'd propose two functions:
> 
> sendTagsShared: communicate specified tag to all processors sharing 
> entities owned by this processor
> 
> sendTagsGhosted: same, but for ghosted entities
> 
> The particular syntax for these functions can come later, I just want to 
> get some comments on the general idea.  If applications wanted some sort 
> of higher-level behavior, like the operations mentioned above, 
> additional tags could be used to implement those fairly easily.

Tim,

My interpretation of what you propose is that, for a given tag name or 
handle, each process (as opposed to each part) will communicate the 
values of that tag on all entities with duplicates elsewhere.

Comments/questions:

1.  Just to confirm, you mean this to be a push from the owned copy of 
the entity (which, one could argue, is the only one with a right to 
change tag data on the entity anyway...).

2.  What about implementations that work part-by-part, even when there 
are multiple parts in a process?  Admittedly the communication overhead 
is trivial for this case, but part to part updates of tag data within a 
process are going to matter to some apps. (Ken, am I right there?)

3.  This call implies either an ability to reverse-lookup entities by 
tag handle or an iteration over all entities (of all types) or some 
clever call syntax.  Or at least, I can't imagine any alternatives that 
don't....

4.  Do you envision these as collective, blocking calls with everything 
done before the functions return?  Or as non-blocking send / blocking 
receive pairs?

5.  Somewhat off the direct topic, but what are the merits of 
implementing the global reduce sorts of operations as a service on top 
of the interface?

6.  Also somewhat off topic, and probably one to which a reply directly 
to me rather than to the list is appropriate: I can't see how one would 
efficiently implement both dense tags (like solution data) and sparse 
tags (like which vertices need smoothing).  Dense tags seem to scream to 
be stored as arrays, which implies an explicit numbering of entities, 
while sparse tags seem more like they should be stored as a map or hash 
on entity handle, or a linked list attached to the entity.  Anyone who 
has a good solution for handling both types efficiently, I'd love to 
hear it.

Cheers,
Carl

-- 
------------------------------------------------------------------------
Dr. Carl Ollivier-Gooch, P.Eng.                   Voice: +1-604-822-1854
Associate Professor                                 Fax: +1-604-822-2403
Department of Mechanical Engineering             email: cfog at mech.ubc.ca
University of British Columbia              http://www.mech.ubc.ca/~cfog
Vancouver, BC  V6T 1Z4                  http://tetra.mech.ubc.ca/ANSLab/
------------------------------------------------------------------------




More information about the itaps-parallel mailing list