OONumerics User : |
From: Roscoe A Bartlett (roscoe_at_[hidden])
Date: 2001-07-28 18:56:17
Hello all,
I have worked out an object-oriented design for the makings of a different
kind of vector interface. I have done this because I am going to use my
optimization code to solve PDE constrained optimization problems and will
be using parallel vectors and iterative solvers. However, I do not want
to have to interlace my code with parallel specific code such as calls to
MPI or have to hard code in a single library (i.e. PETSc, Aztec etc.).
You can find a very detailed document and html documentation (DOC++
generated) describing the design at
http://dynopt.cheme.cmu.edu/roscoe/RTOp
The abstract to the design paper is given below. I think this would be a
good candidate for standard.
Roscoe
--------------------------------------
| Roscoe Bartlett |
| Ph.D. student |
| Department of Chemical Engineering |
| Carnegie Mellon University |
| email: roscoe_at_[hidden] |
| work phone: (412) 268 - 2238 |
--------------------------------------
********************************************************************
RTOp : A Proposed Specification for User Defined Vector Reduction and
Transformation Operators
Abstract
A variety of operations have to be performed on vectors within many
optimization or other numerical algorithms. The wide variety of
operations required by various algorithms and the possibility of many
different vector implementations represents a difficult software design
problem. The purpose of this document is to propose a specification for
allowing users of abstract vector objects to define their own vector
operations without vector objects having to expose implementation
details. The proposed interfaces for user defined vector reduction and
transformation operators are designed to work with many different types of
vector implementations: serial (single process) dense and sparse vectors,
distributed parallel (e.g.~MPI) dense and sparse vectors, and out-of-core
vectors. The idea is that vectors are broken up into several pieces of
continuous chunks (sub-vectors) and operations are performed on these
chunks by user defined operators. The design is based on
object-orientation and is motivated by the "Visitor" design pattern. In
addition to simpler parallel program runtime configurations, the proposed
design can also support more sophisticated client/server
configurations. The proposed interfaces for reduction/transformation
operators (implemented in C) are discussed as well as coded examples of
vector implementations (in C++) and user defined operators (in C) based on
this design.
--------------------- Object Oriented Numerics List --------------------------
* To subscribe/unsubscribe: use the handy web form at
http://oonumerics.org/oon/
* If this doesn't work, please send a note to owner-oon-list_at_[hidden]