itaps-parallel Phone conf today

Mark Shephard shephard at scorec.rpi.edu
Tue Jan 8 09:53:52 CST 2008



Tim Tautges wrote:
> With all due respect, no, I do not intend to stop talking about the data 
> model.  As I have spoken about many times in talks (and not nearly 
> enough in papers, I guess), the data model is extremely important to our 
> project.  In fact, I believe it is as important as the API.  Until tools 
> exchange tool-specific data in terms of the ITAPS data model we have 
> chosen, we will not have true interoperability.
> 
> I would also assert that the geometric modeling tools are a good example 
> of the failure of API's to provide interoperability.  Each of the 
> commercial geometric modelers has its own API, but they are not 
> interoperable, even after smoothing the differences between just the API 
> functions with common functionality.  For example, one API (ACIS, or 
> Parasolids) tells you how to get bounding vertices from faces, so you 
> write your application to count on that.  Then, that application does 
> not work on the next modeler and its API (e.g. ProToolkit), because that 
> modeler doesn't provide vertices in the first place.

We have found the solid modelers API very robust and have worked well 
with them.

> 
> Another example coming up soon is our parallel interface and the 
> interoperability of tools built on that interface.  If that interface 
> were written in terms of our existing data model, and if the iMesh and 
> iGeom entity type-based functions were moved down to iBase, I could 
> write a single partitioning tool that applied to both mesh and geometry 
> equally well, with only a different function for determining the weights 
> of nodes and edges in the graph.  Same goes for visualization, boundary 
> condition editing, and lots of other functions we both know are part of 
> a "real" simulation process.  Incidentally, that's one of the reasons I 
> still advocate keeping around the SIDL interface (because that provides 
> polymorphism necessary to write abstract tools like that).

I see no real point here. To me this is a matter of the API, not how I 
do or do not store my data.

> 
> - tim
> 
> 
> Mark Shephard wrote:
>>
>>
>> In yesterdays phone call we yet again went back to the discussion on 
>> data model vs API. As near as I can tell iMesh, iGeom, etc. are API’s 
>> where there are agreed to functions that take specific information as 
>> input and provide specific information as answers to the question. For 
>> example, the one we keep discussing is give me the group of mesh faces 
>> that meet two conditions (one example, but only one example, of which 
>> is the mesh faces in a specific part and has a specific BC).  This can 
>> be discussed at the API level quite independently of one does it with 
>> carrying out Booleans of sets of does something else underneath to 
>> provide the answer to the question.
>>
>> The geometric modeling tools have done this well for many years 
>> focused on the API end of it and no one has problems with it.
>>
>> Since it is quite clear that different ITAPS groups have very 
>> different data models for how they do thing which are actually driven 
>> by valid concepts, that have also been discussed many times before, 
>> can we please focus on the API level and quite telling each other we 
>> have to adopt a specific data model.
>>
>> Mark
>>
>> Devine, Karen D. wrote:
>>> My calendar shows that we have a phone conference scheduled for today at
>>> 1:30pm PST.  Please let me know if you expect to miss this meeting 
>>> (or if
>>> you think my calendar is incorrect).
>>>
>>> There has been lots of good discussion since our last meeting.  
>>> Please take
>>> time to review it before the phone conference.
>>>
>>> Below are topics for discussion.
>>>
>>> -  Tim asked that we clarify the questions we are addressing.  He 
>>> listed the
>>> following:
>>>
>>>     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?"
>>>
>>>     2) How do we express and query sets spread across processors?
>>>
>>>     3) How do we refer to parts and partitions in the interface, and 
>>> which
>>>     functions do we use to get information about them?
>>>
>>> So far, our efforts have been addressing (3) and, more recently, 
>>> (1).  With
>>> respect to (3), we have agreed to provide helper-functions that expose
>>> partition and part information through the interface.  These
>>> helper-functions are natural for an application to use and allow the
>>> greatest flexibility for the implementations.  With respect to (1), we
>>> identified the need to answer queries such as the example Tim provided.
>>> Several options were proposed to answer these queries (see below).  Tim
>>> noted that similar capability could be useful for intersections of 
>>> multiple
>>> entity sets.  We have not deeply explored question (2) yet, and 
>>> unless there
>>> is a reason to do so immediately, I'd like to resolve (3) and (1) 
>>> before we
>>> start into (2).
>>>
>>> -  I'd like to try to reach agreement on a solution to question (1) 
>>> above.
>>> Our original idea of overloading the mesh instance argument is 
>>> insufficient
>>> for answering these queries, especially in a multiplexing 
>>> environment.  Carl
>>> summarized three options; I'd like to discuss the pros/cons of each.
>>>
>>>> a)  Adding args to about 10 functions, for both serial and parallel.
>>>> Requires: universal agreement about what a null handle is, or else
>>>> definition of an implementation-specific global variable that apps can
>>>> use to find out what the null handle is for that impl.  Also, for every
>>>> call, the function has to identify which args it was passed and 
>>>> dispatch
>>>> accordingly (creating more functions internal to the interface,
>>>> probably, but not user-visible).  Changes to serial code.
>>>>
>>>> b)  Leaving those 10 functions alone in serial, and adding parallel
>>>> versions.  Requires: adding probably one function for each of the
>>>> originals in the parallel interface.  My guess from the current 
>>>> document
>>>> on parallel is that we'll be looking at >100 functions already, so this
>>>> may or may not be considered significant. Serial code left untouched.
>>>>
>>>> c)  Adding some magic to squish three args into one in parallel.
>>>> Requires: A function to squish (and unsquish, internally) the args;
>>>> therefore, extra effort for the app and impl for each of those 10
>>>> functions every time they're called (even in serial, probably).
>>>> Depending on how the squishing is done, risk of handle collision.
>>>> Changes to serial code.
>>>
>>> -  Finally, I'd like to get clarity on how decisions are made in ITAPS.
>>> When the iMesh interface was defined, for example, was unanimous 
>>> agreement
>>> needed on a function before it was accepted?  Or was a vote taken (as I
>>> believe CCA does)?
>>
>>
> 




More information about the itaps-parallel mailing list