itaps-parallel Mesh Instances
Tim Tautges
tautges at mcs.anl.gov
Mon Nov 19 14:15:06 CST 2007
Hi all,
First, and I think this is most important: in reality, we're targeting
the API at two primary uses (and several others): a) applications
accessing mesh data stored in some implementation of the API, and b)
applications wrapping their representation of mesh for iMesh-enabled
tools to work on. Both those uses lean towards single-iMesh-instance
applications, and up to now we've focused heavily on that (and
intentionally, because the question has come up before). I think this
is a really important issue to resolve again at a high level; that is,
are we developing these higher-level interfaces (like parallel mesh, but
also fields eventually) to explicitly treat multiple underlying
implementations of the same iXxx interfaces. I'd still assert that from
an interface point of view, we can do most of what applications will
want while maintaining our primary focus on the single-instance case. I
also assert that we're not explicitly ruling out the multi-instance
case, which can still be done (though not quite as easily).
The single instance vs. multiple instance question pertains to both
serial and parallel applications. Treating parallel mesh adds another
hierarchy to the data at least, even for a single iMesh instance per
processor. Whether to take the multiple iMesh instances per processor
into iPartition explicitly, or to accomplish that by assuming some
multiplexer that iPartition doesn't know the details of, is the question.
I think there are two primary reasons for keeping iPartition focused on
one iMesh instance per processor. First, from a complexity point of
view, keeping the interfaces separated makes the sum less complex.
Second, most of our current applications are single-instance and likely
to stay that way, and for the future ones (esp. multiphysics), it's
still not clear that treating multiple iMesh instances per iPartition,
without a multiplexer, would be the best way to structure a solution.
For example, I'm helping to develop a parallel multiphysics reactor
simulation code at ANL, composed from existing components for heat
transfer & fluid flow, neutronics, and soon structural mechanics. Each
of these components already operates in parallel, on its own mesh.
Among other things, one of the physics-based things we have to do is map
solutions between meshes, possibly with those meshes having completely
different distributions on possibly non-overlapping sets of processors.
To map solutions between meshes efficiently and accurately, you start
needing lots of mesh-based support, things like data sorting and
searching and interpolation for example. That motivates the need for an
iMesh instance in which the solution remapper can construct its own data
structures. If one wants this remapping component to be interoperable,
it should be constructed on top of iPartition also.
Now, by definition as iPartition is currently being discussed (in the
multiple instance case), the application still has to deal with multiple
instances of iMesh, whether iPartition does or not. Having multiple
instances treated by iPartition isn't going to relieve the application,
or the solution remapper, from having to also deal with that issue.
Given that, the question becomes can we accomplish what we need to with
iPartition using a single iMesh instance, with the various applications
we have in mind, and is that solution easier without being too
restrictive. So far, I think the answer is yes.
There's a lot more detail I could go into and won't, given the length of
this message already. I'll also add a few specific replies to the
various email discussions as well.
- tim
Parallel mesh: this adds
Devine, Karen D. wrote:
> In yesterday's meeting, Lori asked me to add our understanding of iMesh
> instances to the background and terminology section of the combined
> document. I am unable to do so until we come to some agreement on what mesh
> instances are and how they are to be used.
>
> Let's start with getting agreement for serial applications.
>
> In the iMesh user guide, I cannot find a definition of what a mesh instance
> represents. To me as a new(ish) ITAPS user, it looks like it represents a
> single mesh. If our interface were a C++ interface, I would say that iMesh
> is a class, and that we'd create one iMesh object for each mesh we used in
> the application. Then we'd invoke methods on each iMesh object as needed.
> For examples, in a loosely coupled physics implementation on two meshes,
> we'd invoke meshOne's methods to do the first set of physics, and meshTwo's
> methods to do the second set of physics.
>
> In our C interface, we can't invoke methods on an object. What we do
> instead is what most people do when writing an object-oriented C interface:
> they pass the object to the interface functions. It is like passing C++'s
> "this" pointer to C functions.
>
> I think this is a natural way for users of multiple meshes to view the iMesh
> instance, and I don't see anything in the documentation to contradict it. I
> also think we need to allow multiple iMesh instances to allow multiple
> implementations to be used at the same time via the multiplexer.
>
> Let's get this serial scenario understood before we move on to parallel.
>
> Karen
>
> ------ Forwarded Message
> From: Mark Miller <miller86 at llnl.gov>
> Organization: Lawrence Livermore National Lab
> Date: Fri, 16 Nov 2007 00:21:51 -0800
> To: "itaps-parallel at mcs.anl.gov" <itaps-parallel at mcs.anl.gov>
> Subject: itaps-parallel comments on today's meeting
>
> I think it is important to understand in detail Tim's insistence that
> there should be only one iMesh_instance object per 'parallel task'
> even to the point of aglomerating multiple different meshes of
> an application into that iMesh_instance and then distinguishing
> between them via a multiplexer. I think I understand some of his
> rationale for this but not all of it. And, I am sure I don't
> understand how multiplexing helps as my understanding is that
> the multiplexer is the iMesh instance (at least in Jason's example
> he sent us).
>
> ------ End of Forwarded Message
>
>
>
--
================================================================
"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