Title: MOOCHO and TSFCore objectoriented software and interfaces for the development of optimization and ot
1MOOCHO and TSFCoreobject-oriented software and
interfaces for thedevelopment 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.
2Nonlinear 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
u ? U design/control
variables f(y,u) objective function
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)
3NAND vs. SAND Choosing the right approach
NAND
Nested Analysis and Design
- 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
4Introducing MOOCHO!
- MOOCHO Multifunctional Object-Oriented
arCHitecture for Optimization - Built using object-oriented principles
gt OO! - Initially developed at CMU (rSQP)
gt Good times! - Active-set and interior-point SQP-related
methods gt Fast! or Fast? - Open source (available soon?)
gt You can get it! - Flexible algorithm configuration
gt You can alter it! - Exchangeable numerical components
gt You can tailor it! - Abstract linear-algebra interfaces
(AbstractLinAlgPack) gt You can parallelize
it!
5Nonlinear Equations Foundation for many
Problems!
- Applications
- Discretized PDEs (e.g. finite element, finite
volume, finite difference etc.) - Network problems (e.g. electrical circuits)
6Nonlinear 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
7Applications, Algorithms, Linear-Algebra Software
- Key points
- 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.)
8MOOCHO and TSFCore
MOOCHO
NLPInterfacePack
- Key points
- Maximizing development impact
- Software can be run on more sophisticated
computers - Fosters improved algorithm development
AbstractLinAlgPack
9TSFCore Basic Linear Algebra Interfaces
ltltcreategtgt
Unified Modeling Langage (UML) Notation!
10TSFCore Basic Linear Algebra Interfaces
Compatible with HCL (Hilbert Class
Library) SVL (Standard Vector Library)
ltltcreategtgt
Near optimal for many but not all abstract
numerical algorithms (ANAs)
11TSFCore Basic Linear Algebra Interfaces
ltltcreategtgt
12TSFCore Basic Linear Algebra Interfaces
ltltcreategtgt
What about standard vector ops? Reductions
(norm, dot etc.)? Transformations (axpy,
scaling etc.)?
What about specialized vector ops? e.g.
Interior point methods for opt
13TSFCore Basic Linear Algebra Interfaces
- The Key to success!
- 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
14TSFCore Basic Linear Algebra Interfaces
15TSFCore Details
- All interfaces are templated on Scalar type
(support real and complex) - Smart reference counted pointer class
TeuchosRefCountPtrltgt 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 level-1 vector and
multi-vector operations - Default implementation provided for MultiVector
(MultiVectorCols) - Default implementations provided for serial
computation VectorSpace (SerialVectorSpace),
VectorSpaceFactory (SerialVectorSpaceFactory),
Vector (SerialVector)
16AbstractLinAlgPack MOOCHO Linear Algebra
17Example ANA Linear Conjugate Gradient Solver
18Multi-vector Conjugate-Gradient Solver Single
Iteration
templateltclass Scalargt void CGSolverltScalargtdoI
teration( const LinearOpltScalargt M, ETransp
opM_notrans ,ETransp opM_trans,
MultiVectorltScalargt X, Scalar a ,const
LinearOpltScalargt 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-gtapply( opM_tilde_inv_notra
ns, R_, Z_ ) else assign( Z_,
R_ ) dot( Z_, R_, rho_0 ) if(
currIteration_ 1 ) assign( P_,
Z_ ) else
for(j0jltmj) 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(j0jltmj) alpha_j rho_j/gamma_j
update( alpha_0, 1.0, P_, X )
update( alpha_0, -1.0, Q_, R_ )
19TSFCoreNonlin Interfaces to Nonlinear Problems
- Supported Areas
- NAND optimization
- SAND optimization
- Nonlinear equations
- Multidisciplinary analysis
- Stability analysis / continuation
- SFE
20TSFCore SAND Reports
Get most recent copy at Trilinos/doc/TSFCore
21Summary Conclusions
- MOOCHO
- MOOCHO is framework/library for large-scale NLP
- MOOCHO currently supports several active-set and
interior-point SQP-related 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)