My notes from the discussion at the bootcamp
Lori A. Diachin
diachin2 at llnl.gov
Mon Oct 19 14:00:58 CDT 2009
Hi All,
Here are my notes from the discussion at the bootcamp regarding fields and
software processes..
Lori
Notes from Fields discussion
----------------------------
Issues
- Units/dimensions
- coordinate fields
- fields on subsets of a mesh
- basis/distribution functions (specify order and form)
- change of basis
- analytic fields
- integral/differential constraints
- memory management
- mesh/field/operator relationship
- mapping domain to range
- parallelism
- operations of fields (iField or a service)
- intrinsic/extrinsic data
- vectors/tensors/coordinate systems
- level of interoperability
- implementation as tags
- usability in linear solvers
- splitting coupled problems/composit fields
- known relations among fields - derived fields is an issue to consider
- capturing experimental data
------------------------------------------------------------
Use Cases/Requirements
- Mesh to mesh transfer (includes changing basis - e.g., FEM to FVM, see
below)
- local evaluation of distribution functions - forward and reverse
- distribution functions are written in some coordinate system
- local integration and differentiation
- may need to extrapolate to a point outside the mesh
- may need to do some evaluation off processor
- integral and differential constraints
- Local change of basis
- assumes the mesh is the same
- want to take advantage of this to do truly local operations
- Multiple representations of the same field
- e.g. simulation data, experimental data, etc
- domain may have multiple realizations
- call these multiple 'instances' of the same field
- same physical quantity - will have some common characteristics
such as dimension
- there will be a hierarchy of data - some high level representation
information will be inherited downward
- Interactions with solvers/preconditioners
- need to deal with multiple tensors in a "composed" field
- e.g., velocity, pressure, energy, etc.
- need to recognize that different rules may apply to different
components
- application may want the ability to set the order
- Interactions with post-processing tools
- Derived quantities are common
- Should think about how to support operations on fields (eg div,
grad, +, *)
- Need to know domain, intrinsic/extrinsic - should include this in set of
characteristics of a field
- memory management - selective load of a field to visualize only it -
don't load everything
- time series must be captured
- more generally need to deal with relationships among fields, nested
subspaces, snapshots of the same field, parameter series, etc
- useful for uncertainty quantification as well
- Fundamental operations (manipulation of fields)
- pointwise evaluations (smart - take advantage of knowledge that is known)
- convolution, norms, algebra
- coordinate conversions (e.g, coordinate to polar)
- unit conversions (e.g, meters to inches) - low on the priority list?
- given a point, get the parametric coordinates associated with it (reverse)
- for searches it would be nice to have the following information
- it's in the element, it's in the neighborhood, no idea where it is
- initialize, save, re-initialize (assignment),
- load for principle field components (minimal set such that you can
reconstruct the other data from it) - application specific
- bounds over collections of sets
- integration over sets
- conversion between precisions (double to single, etc)
- mapping fields from lower to higher dimensional data
- projections/slicing, etc from higher to lower dimensional data
- Differential operators
- order of operations is important
- if there are multiple ways to do this - provide this as service; not
part of the interface
- Need to support analytic functions
Would like to capture the basic operations that allow us to do most of
the services - what are these canonical operations and data that we
need to know about the field?
-------------------------------
Scope of fields interface
-------------------------------
Field Representation
- Units/dimensions
- basis/distribution functions (specify order and form)
- memory management
- mesh/field/operator relationship
- mapping domain to range
- what data types do we need - float, double? int? byte? boolean?
- can we use tags?
Data Model
-----------------
Definition: Note that there is a high level description of a field
that is somewhat abstract - call this a "field template". A
particular instance that is derived from the field template and
associated with a specific domain is called the "field".
Field templates are associated with a domain template (e.g. a
space/time domain) and specific domain is a discretization of the
abstract domain
The domain "has a" coordinate field (special, priviledged field)
Construction operations
- create
- load
- given a string, instantiate or read from file
- separate header information from other data
- read coefficients separately from header and other instances?
- read distribution function information if non-standard (app must
support)?
- save
- set
- Distribution function coefficients (specify a value for it)
- Distribution functions (common ones we all support through keywords?,
more sophisticated through other mechanisms - callbacks?)
- includes specific characterization of interpolation scheme
(e.g. at what points are the dofs defined? vertices, mid-edges,
bezier points?)
- optional, but very commmonly used, distribution function association
with mesh entity type
- may need call backs for advanced functions - e.g. analytic functions
- abstract domain that the field is defined on - optional (want to
carry
it if you have it)
- units (measurement: furlong/fortnight^squared, part of field
dimensional analysis: (length/time^squared), part of field
template)
- make it easy to do standards
- precision
- dimension
- tensor order
- data type
- unique name
- isCoordField ? does this need to be special
- get all of the above
- get field instance by name or some other identifier
- get all the fields
- associate the distribution functions with a mesh or subset (through iRel?)
- copy
- extract a list of numbers/values in some order for the user
Manipulation operations
- pointwise evaluations (smart - take advantage of knowledge that is known)
- convolution, norms, algebra
- coordinate conversions (e.g, coordinate to polar)
- unit conversions (e.g, meters to inches) - low on the priority list?
- given a point, get the parametric coordinates associated with it (reverse)
- for searches it would be nice to have the following information
- it's in the element, it's in the neighborhood, no idea where it is
- initialize, save, re-initialize (assignment),
- load for principle field components (minimal set such that you can
reconstruct the other data from it) - application specific
- bounds over collections of sets
- integration over sets
- conversion between precisions (double to single, etc)
- mapping fields from lower to higher dimensional data
- projections/slicing, etc from higher to lower dimensional data
- should we be able to collect fields into sets - that is a container
of fields?
Advanced Operations
-------------------------------------------------------------
Moving forward
-------------------------------------------------------------
Leads: Mark M. and Carl O.-G.
Subcommittee: Mark S., Tim T., Harold T., Xiaolin L.
Need a glossary of terms - well defined
- everything required to define a field, e.g., dimensional analysis
Data model (domains, fields, distribution functions)
- how to handle coordinate fields
- UML diagram of relationship among them
Show how this applies to the use cases - do we have the right abstractions?
Socialize with ITAPS team
Socialize with external experts/users
- Related Technology: SIERRA, Overture, Intrepid, VisIt, Solvers/TOPS
- Internal services: Mesquite, Frontier, Swapping, Zoltan, meshAdapt,
meshI/O
- Users: SLAC, Nuclear energy, Subsurface (PNNL)
Want to understand competitors: Matlab, vtk/Kitware, Simmetrix, FEL
Iterate
Define functions
Create implementations
Interaction model
- Email alias - itaps-fields
- Mark and Carl work on first two items; create working document; flat text
- Revision control
- Send to subgroup and iterate - 4 weeks
- Use cases - subcommittee helps
==================================================
Software Quality Discussion
==================================================
Compliance test suite still doesn't cover 3D modification and
iterators once the mesh has changed;
Tools - buildbot or hudson - in place by Halloween or mid Nov - Ellen
Grab and build
- GRUMMP, MOAB, FMDB, NWGrid, CGM/Lasso ScorecModel
- Compliance tests : iMesh, iMeshP, iGeom, iRel
- iZoltan, Swapping, VisIt, FronTier, iMeshIO, meshAdapt, eyeMesh, Mesquite
Everything will start on the Mesh Machine - Tim
Time Line for iMesh tests
- iMesh compliance tests - Christmas - GRUMMP, MOAB, FMDB, NWGrid
- iZoltan, VisIt, FronTier, iMeshIO, Mesquite
- Christmas for GRUMMP/Moab/FMDB, NWGrid may be longer
- Swapping - Martin Luther King Day
- iGeom compliance test - July 4
- CGM/Lasso - July 4
- ScorecModel - Labor Day
- meshAdapt - Labor Day FY10 for FMDB, Thanksgiving FY10 for GRUMMP, MOAB
- eyeMesh - build test against all implementations; Christmas 09
- tutorial examples - Valentine's day
iMeshP Compliance tests - Karen and student?
- read in the whole mesh on every processor and test iMeshP functionality
against the known solution
- creating an iMeshP compliance test is a problem
- start with MOAB unit test and see what covereage we have along
with FMDB and use in iZoltan and Mesquite
iGeom Compliance tests - Tim and Jason
- ASIS is a common format for the two implementations
- current compliance test reads in a model
- query tests for a start would be nice
- July 4 for compliance test, CGM
- Labor day FY10 for ScorecModel
- Mesquite iGeom test Thanksgiving FY10
iRel Compliance tests
- primitive test for LASSO - reads two files and associate things
- exists; relies on iGeom but is ready to go into the test suite
Vertical Test Suite
- come back to this after the basic infrastructure is in place
Release Schedule
- First major release at Valentine's day FY10
- New releases every 6 months thereafter
- Need release notes for the framework and each package
- Include new features of each package
- create template for each package
Performance Testing needs to be done - in place by Christmas - Tim
- need representative kernels of computational kernels
- need to profile the kernels
- examine memory and time
- use calgrind to produce output file; would like to look at variance
between implementations
- Tim has a computational kernel he can use
Documentation - Ellen and X?
- API reference manual through doxygen
- add a list of error codes a function can return
- performance guarantees
- start with ACM Toms document as a user guide
- add the tutorial examples and some text
Other items to add: - Mark Miller
- Header number to understand what to link against and be able to check it
- iMesh.h check only - for any .o that's brought in - this checks that
all files were compiled against the same .h
- Release notes have been very helpful
Versioning the interface
- first major digit - major changes to the interface
- second digit - minor updates or additions to the interface
- third digit - bug fixes, backward compatible
Wiki - Tim will set this up
- use this to track proposals
- see if we can set this up at Argonne
- nice to have repository and wiki in the same place
=====================================================
Lori Freitag Diachin
Center for Applied Scientific Computing Tel: 925-422-7130
Lawrence Livermore National Laboratory Fax: 925-423-2993
P.O. Box 808, L-561 Email:
diachin2 at llnl.gov
Livermore CA 94551
=====================================================
More information about the tstt-interface
mailing list