Main Title 32pt - Rice University
Download
Report
Transcript Main Title 32pt - Rice University
MOOCHO and TSFCore
object-oriented software and interfaces for the
development of optimization and other advanced abstract
numerical algorithms
Roscoe A. Bartlett
Optimization and Uncertainty Estimation
Sandia National Laboratories
Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company,
for the United States Department of Energy under contract DE-AC04-94AL85000.
Nonlinear Programming for Large-Scale Optimization
NLP formulation for Simulation-Driven Optimization
min f(y,u)
f(y,u) : Y U R
s.t. c(y,u) = 0
c(y,u) : Y U C
(yL, uL) (y, u) (yU, uU)
Y R m, U R n-m, C R m
y Y : state variables
f(y,u) : objective function
u U : design/control variables
c(y,u) : state (simulation) constriants
• Classes of problems considered:
•
•
•
•
Large-scale (up to 106 variables and more)
Special problem structure (e.g. PDEs, DAEs)
Application specific methods (e.g. linear solvers, nonlinear globalization)
Specialized computing environments (e.g. MPP, client/server, out-of-core)
• What we can not do:
• Use the current generation of optimization software to exploit problem structure
and take advantage of advanced computing environments
• What we do not want to do:
• Write a new optimization implementation for each piece of application software
• What we do want to do:
• Use gradient-based methods for simultaneous analysis and design (SAND)
NAND vs. SAND : Choosing the right approach
Nested Analysis
and Design
NAND
• Better scalability to large
design spaces
• More accurate solutions
• Algorithmic flexibility
• Less computer time
• Decreased impact to
existing code
• Ease of interfacing
• Nonsmooth behavior
Simultaneous Analysis
and Design
SAND
Introducing MOOCHO!
MOOCHO : Multifunctional Object-Oriented arCHitecture for Optimization
• Built using object-oriented principles
=> OO!
• Initially developed at CMU (rSQP++)
=> Good times!
• Active-set and interior-point SQP-related methods
=> Fast! or Fast?
• Open source (available soon?)
=> You can get it!
• Flexible algorithm configuration
=> You can alter it!
• Exchangeable numerical components
=> You can tailor it!
• Abstract linear-algebra interfaces (AbstractLinAlgPack)
=> You can parallelize it!
Nonlinear Equations : Foundation for many Problems!
Applications
• Discretized PDEs (e.g. finite element, finite volume, finite difference etc.)
• Network problems (e.g. electrical circuits)
Nonlinear Equations : Sensitivities
Related Algorithms
• Gradient-based optimization
• SAND
• NAND
• Nonlinear equations (NLS)
• Multidisciplinary analysis
• Linear (matrix) analysis
• Block iterative solvers
• Eigenvalue problems
• Uncertainty quantification
• SFE
• Stability analysis / continuation
• Transients (ODEs, DAEs)
B. van Bloemen Waanders, R. A. Bartlett, K. R. Long and P. T. Boggs. Large Scale Non-Linear Programming: PDE
Applications and Dynamical Systems, Sandia National Laboratories, SAND2002-3198, 2002
Applications, Algorithms, Linear-Algebra Software
Computes functions
APP Interface
ANA
1
1
1
APP
1
1
1..*
1..*
Key points
1
LAL
1..*
1
Mat
Vec
Preconditioner
•
•
•
•
•
Complex algorithms
Complex software
Complex interfaces
Complex computers
Duplication of effort?
APP : Application: Defines data for the problem
(e.g. PDE or DAE model and discretization)
LAL : Linear-Algebra Library : Implements basic matrices, vector and algebraic precondtioners
(e.g. Epetra/Ifpack (Trilinos), PETSc etc.)
ANA : Abstract Numerical Algorithm : Solves the numerical problem
(e.g. optimization, nonlinear solvers, stability analysis, SFE, transient solvers etc.)
MOOCHO and TSFCore
TSFCore::Nonlin
Computes functions
APP Interface
ANA
MOOCHO
NLPInterfacePack
1
1
1
TSFCore
APP
1..*
Key points
1..*
1
LAL
Mat
Vec
Preconditioner
• Maximizing development
AbstractLinAlgPack
impact
• Software can be run on more
sophisticated computers
• Fosters improved algorithm
development
TSFCore : Basic Linear Algebra Interfaces
OpBase
domain
range
space
VectorSpace
A Vector knows its
VectorSpaceMultiVector
<<create>>
1..*
columns
LinearOp
A linear operator is
a kind of operator
An operator knows
its domain and
range spaces
1
VectorSpaces
RTOpT
create Vectors!
Vector
Unified Modeling Langage (UML) Notation!
LinearOps apply to
Vectors
TSFCore : Basic Linear Algebra Interfaces
OpBase
domain
range
space
VectorSpace
MultiVector
<<create>>
1
LinearOp
Compatible with:
HCL (Hilbert Class Library)
SVL (Standard Vector Library)
Near optimal for many but not all
abstract numerical algorithms
(ANAs)
RTOpT
1..*
columns
Vector
TSFCore : Basic Linear Algebra Interfaces
OpBase
domain
range
space
VectorSpace
LinearOps apply to
MultiVectors
LinearOp
<<create>>
A MulitVector is a
linear operator!
MultiVector
1
VectorSpaces create
MultiVectors!
RTOpT
1..*
columns
Vector
A MulitVector is a
tall thin dense
matrix
A MulitVector has a
collection of column
vectors!
TSFCore : Basic Linear Algebra Interfaces
OpBase
domain
range
space
VectorSpace
LinearOp
<<create>>
MultiVector
1
1..*
columns
Vector
What about standard vector ops?
Reductions (norm, dot etc.)?
Transformations (axpy, scaling etc.)?
RTOpT
What about specialized vector ops?
e.g. Interior point methods for opt
TSFCore : Basic Linear Algebra Interfaces
OpBase
domain
range
space
VectorSpace
LinearOp
MultiVector
The Key to success!
1
RTOpT
1..*
columns
Vector
Reduction/Transformation Operators
• Supports all needed vector operations
• Data/parallel independence
• Optimal performance
Challenge to interoperability?
R. A. Bartlett, B. G. van Bloemen Waanders and M. A. Heroux. Vector Reduction/Transformation Operators,
Accepted to ACM TOMS, 2003
TSFCore : Basic Linear Algebra Interfaces
smallVecSpcFcty
TSFCore::VectorSpaceFactory
createVecSpc(in dim : int) : VectorSpace
«create»
TSFCore::VectorSpace
TSFCore::OpBase
dim : int
space
createMember() : Vector
createMembers(in numMembers : int) : MultiVector
isCompatible(in vecSpc : VectorSpace) : bool
scalarProd(in x : Vector, in y : Vector) : Scalar
opSupported(in M_trans) : bool
domain
Adjoints supported but
are optional!
range
«create»
TSFCore::LinearOp
apply(in M_trans, in x : Vector, out y : Vector, in ...)
apply(in M_trans, in X : MultiVector, out Y : MultiVector, in ...)
TSFCore::MultiVector
«create»
VectorSpaces
create Vectors and
MultiVectors!
applyOp(in op : RTOpT, inout ...)
subView(in col_rng : Range1D) : MultiVector
subView(in numCols : int, in cols[1..numCols] : int) : MultiVector
Vector and MultiVector
versions of apply(…)!
1
MultiVector subviews
can be created!
RTOpPack::RTOpT
1..*
columns
apply_op(inout ...)
reduce_reduct_objs(inout ...)
TSFCore::Vector
applyOp(in op : RTOpT, inout ...)
Only one vector method!
TSFCore Details
All interfaces are templated on Scalar type (support real and complex)
Smart reference counted pointer class Teuchos::RefCountPtr<> used
for all dynamic memory management
Many operations have default implementations based on very few pure virtual
methods
RTOp operators (and wrapper functions) are provided for many common level1 vector and multi-vector operations
Default implementation provided for MultiVector (MultiVectorCols)
Default implementations provided for serial computation: VectorSpace
(SerialVectorSpace), VectorSpaceFactory
(SerialVectorSpaceFactory), Vector (SerialVector)
AbstractLinAlgPack : MOOCHO Linear Algebra
space_cols
MatrixOp
VectorSpace
Mp_StM()
Vp_StMtV()
Mp_StMtM()
dim
create_member() : VectorMutable
create_members(in num : int) : MultiVectorMutable
is_compatible(in : VectorSpace) : bool
space_rows
Gc
D
MatrixOpNonsing
space
MultiVector
MatrixSymOp
apply_reduction(in op, in ..., inout reduct_obj)
sub_view(in rows : Range1D, in cols : Range1D) : MultiVector
Mp_StMtMtM()
V_InvMtV()
M_StInvMtM()
M_StMtInvM()
1
C
MatrixSymOpNonsing
0..1
is_pos_def : bool
Vector
«creates»
apply_reduction(in op, in ..., inout reduct_obj)
sub_view(in : Range1D) : Vector
M_StMtInvMtM()
MultiVectorMutable
apply_transformation(in op, in ..., inout reduct_obj)
sub_view(in rows : Range1D, in cols : Range1D) : MultiVectorMutable
VectorMutable
apply_transformation(in op, in ..., inout reduct_obj)
sub_view(in : Range1D) : VectorMutable
BasisSystem
update_basis(in Gc, out C, out D, out ...)
P_var
«create»
Permutation
BasisSystemPerm
set_basis(in Gc, in Px, in Pc, out C, out D)
select_basis(inout Gc, out Qx, out Qc, out C, out D)
P_equ
Example ANA : Linear Conjugate Gradient Solver
Multi-vector Conjugate-Gradient Solver : Single Iteration
template<class Scalar>
void CGSolver<Scalar>::doIteration(
const LinearOp<Scalar> &M, ETransp opM_notrans
,ETransp opM_trans, MultiVector<Scalar> *X, Scalar a
,const LinearOp<Scalar> *M_tilde_inv
,ETransp opM_tilde_inv_notrans, ETransp opM_tilde_inv_trans
) const
{
const Index m = currNumSystems_;
int j;
if( M_tilde_inv )
M_tilde_inv->apply( opM_tilde_inv_notrans, *R_, &*Z_ );
else
assign( &*Z_, *R_ );
dot( *Z_, *R_, &rho_[0] );
if( currIteration_ == 1 ) {
assign( &*P_, *Z_ );
}
else {
for(j=0;j<m;++j) beta_[j] = rho_[j]/rho_old_[j];
update( *Z_, &beta_[0], 1.0, &*P_ );
}
M.apply( opM_notrans, *P_, &*Q_ );
dot( *P_, *Q_, &gamma_[0] );
for(j=0;j<m;++j) alpha_[j] = rho_[j]/gamma_[j];
update( &alpha_[0], +1.0, *P_, X )
update( &alpha_[0], -1.0, *Q_, &*R_ );
}
TSFCore::Nonlin : Interfaces to Nonlinear Problems
State
equations
NonlinearProblem
Function evaluations:
Auxiliary variables
State variables
Response functions
NonlinearProblemFirstOrder
(nonsingular) State Jacobian evaluations :
Auxiliary Jacobian evaluations :
•
•
•
•
•
•
Supported Areas
NAND optimization
SAND optimization
Nonlinear equations
Multidisciplinary analysis
Stability analysis / continuation
SFE
TSFCore SAND Reports
Get most recent copy at: Trilinos/doc/TSFCore
Summary & Conclusions
MOOCHO
• MOOCHO is framework/library for large-scale NLP
• MOOCHO currently supports several active-set and interior-point SQPrelated methods
• MOOCHO can be adapted to the application
• MOOCHO is fully scalable
TSFCore
• Minimal but efficient interface to linear algebra implementations
• Trilinos (LGPL) standard for abstract interfaces for linear algebra
– Block linear solvers (Belos)
– Block eigenvalue solvers (Anasazi)
• Used in SPMD, client/server, master/slave etc.
• Example numerical algorithms:
– NLP optimization (through MOOCHO)
– Nonlinear equation solvers (through NOX)
– Time domain decomposition (Heinkenshloss)