1 / 20

NOX: An Object-Oriented Nonlinear Solver Package Roger Pawlowski , Tamara Kolda, Russell Hooper,

NOX: An Object-Oriented Nonlinear Solver Package Roger Pawlowski , Tamara Kolda, Russell Hooper, and John Shadid Sandia National Laboratories Albuquerque, NM Trilinos Workshop Copper Mountain Conference on Iterative Solvers March 30 th , 2004.

kera
Download Presentation

NOX: An Object-Oriented Nonlinear Solver Package Roger Pawlowski , Tamara Kolda, Russell Hooper,

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. NOX: An Object-Oriented Nonlinear Solver Package Roger Pawlowski, Tamara Kolda, Russell Hooper, and John Shadid Sandia National Laboratories Albuquerque, NM Trilinos Workshop Copper Mountain Conference on Iterative Solvers March 30th, 2004 Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company,for the United States Department of Energy’s National Nuclear Security Administration under contract DE-AC04-94AL85000.

  2. Background • NOX is the nonlinear solver package in the Trilinos Framework. • NOX is being developed to: • Enable robust and efficient solutions to systems of nonlinear equations. • Provide a broad array of nonlinear algorithms through a single interface. • Allow for rapid deployment of new solver technology into ASCI codes. • Eliminate redundancies in ASCI code development. • Written in C++: object-oriented design. • Online documentation: http://software.sandia.gov/nox

  3. Tensor Method Newton’s Method Broyden’s Method Line Search Interval HalvingQuadratic Cubic More’-Thuente Homotopy Artificial Parameter Continuation Natural Parameter Continuation Trust Region Dogleg Inexact Dogleg Nonlinear Solution Algorithms Globalizations Iterative Linear Solvers, Adaptive Forcing Terms

  4. Building Blocks of NOX Calculating the Direction Iterate Control (Solver) Damping or Line Search Stopping Criteria (Status Test) Example: Newton’s Method for F (x)= 0 • Choose an initial guess x0 • For k = 0,1,2,... • Compute Fk = F (xk) • Compute Jk where (Jk )ij = ¶F i(xk)/¶x j • Let dk = -Jk-1Fk • (Optional) Let lk be a calculated step length • Set xk+1= xk + lkdk • Test for Convergence or Failure

  5. NOX Solvers(Iterate Control) Derived from NOX::Solver::Generic bool  reset(NOX::Abstract::Group& grp, NOX::StatusTest::Generic& tests, NOX::Parameter::List& params) bool  reset(NOX::Abstract::Group& grp, NOX::StatusTest::Generic& tests) NOX::StatusTest::StatusType getStatus() NOX::StatusTest::StatusType iterate() NOX::StatusTest::StatusType solve() const NOX::Abstract::Group&  getSolutionGroup() const const NOX::Abstract::Group&  getPreviousSolutionGroup() const int getNumIterations() const const NOX::Parameter::List&  getParameterList() const • LineSearchBased • Compute Direction • Compute Step Length • Scale direction by step length • Update solution • Check Convergence • TrustRegionBased (dogleg) • Computes Newton Direction • Computes Cauchy Direction • Adjust trust region radius • Update solution • Check Convergence • InexactTrustRegionBased (Prerelease) • TensorBased(Prerelease) • UserDefined Solver is determined by passing a parameter list to a handle for the class: NOX::Solver::Manager solver(group, StatusTests, ParameterList); int status = solver.solve();

  6. NOX Directions • Steepest Descent • Newton • Requires a linear solve • Adaptive forcing terms • Broyden • Modified Newton with rank-1 updates to the most recently computed Jacobian • Nonlinear-CG (Prerelease) • Tensor (Prerelease) Direction is determined and constructed in a handle called a “Manager”: NOX::Direction::Manager dir(PrintParams, DirectionParams); User Defined Directions Derived from NOX::Direction::Generic Passed into the solver via parameter list using a direction template ctor. User Defined Merit Function Derived from NOX::Parameter::MeritFunction Passed into the solver via parameter list using the NOX::Parameter::Arbitrary entry

  7. NOX Line Searches Line Searches are determined and constructed in a handle called a “Manager”: NOX::LineSearch::Manager ls(PrintParams, LineSearchParams); • Full Step • Constant step size. • Defaults to 1.0. • Backtrack • interval halving • Polynomial Interpolation • Quadratic and Cubic interpolation • Requires a “Sufficient Decrease” Condition • More’-Thuente • Polynomial Interpolation • Sufficient Decrease and Curvature Conditions • Nonlinear-CG – (Prerelease) • Curvilinear (Prerelease) User Defined Line Searches Derived from NOX::LineSearch::Generic Passed into the solver via parameter list using a template constructor. User Defined Merit Function Derived from NOX::Parameter::MeritFunction Passed into the solver via parameter list using the NOX::Parameter::Arbitrary entry User Defined Norms Derived from NOX::Parameter::UserNorm Passed into the solver via parameter list using the NOX::Parameter::Arbitrary entry

  8. Example Parameter List “Nonlinear Solver” = “Line Search Based” “Direction” sublist “Method” = “Newton” “Newton” sublist “Linear Solver” sublist “Tolerance” = 1.0e-10 “Line Search” sublist “Method” = “Polynomial” “Polynomial” sublist “Minimum Step” = 1.0e-10 “Max Iters” = 10 “Interpolation” = “Quadratic” Newton Quadratic Line Search Quadratic Line Search Tensor Method Trust-Region Method Newly-Deployed Broyden Method Mix-n-Match Solver Algorithms • Solver • Line Search Based • Trust Region Based • Tensor Based • Direction • Newton • Broyden • Steepest Descent • Tensor • User-Defined • Line Search / Damping • Full Step • Backtrack • Polynomial/Quadratic • More’-Thuente • Curvilinear • User-Defined NOX Documentation: Related Pages

  9. Stopping Criteria (StatusTests) • Highly Flexible Design: Users build a convergence test hierarchy and registers it with the solver (via solver constructor or reset method). • Norm F: {Inf, One, Two} {absolute, relative} • Norm Update DX: {Inf, One, Two} • Norm Weighted Root Mean Square (WRMS): • Max Iterations: Failure test if solver reaches max # iters • FiniteValue: Failure test that checks for NaN and Inf on • Stagnation: Failure test that triggers if the convergence rate fails a tolerance check for n consecutive iterations. • Combination: {AND, OR} • Users Designed: Derive from NOX::StatusTest::Generic

  10. FiniteValue: finiteValueTest Combo(OR) allTests MaxIters: maxItersTest normFTest Combo(AND): convergedTest normWRMSTest NOX::StatusTest::NormF normFTest(); NOX::StatusTest::NormWRMS normWRMSTest(); NOX::StatusTest::Combo convergedTest(NOX::StatusTest::Combo::AND); convergedTest.addStatusTest(normFTest); convergedTest.addStatusTest(normWRMSTest); NOX::StatusTest::FiniteValue finiteValueTest; NOX::StatusTest::MaxIters maxItersTest(200); NOX::StatusTest::Combo allTests(NOX::StatusTest::Combo::OR); allTests.addStatusTest(finiteValueTest); allTests.addStatusTest(maxItersTest); allTests.addStatusTest(convergedTest); Building a Status Test • Converge if both: • Fail if value of becomes Nan or Inf • Fail if we reach maximum iterations

  11. Status Tests Continued -- Status Test Results --**...........OR Combination -> **...........AND Combination -> **...........F-Norm = 5.907e-01 < 1.000e-08 (Length-Scaled Two-Norm, Absolute Tolerance) **...........WRMS-Norm = 4.794e+01 < 1 (Min Step Size: 1.000e+00 >= 1) (Max Lin Solv Tol: 1.314e-15 < 0.5) **...........Finite Number Check (Two-Norm F) = Finite **...........Number of Iterations = 2 < 200 -- Final Status Test Results --Converged....OR Combination -> Converged....AND Combination -> Converged....F-Norm = 3.567e-13 < 1.000e-08 (Length-Scaled Two-Norm, Absolute Tolerance) Converged....WRMS-Norm = 1.724e-03 < 1 (Min Step Size: 1.000e+00 >= 1) (Max Lin Solv Tol: 4.951e-14 < 0.5) ??...........Finite Number Check (Two-Norm F) = Unknown ??...........Number of Iterations = -1 < 200 User Defined are Derived from NOX::StatusTest::Generic NOX::StatusTest::StatusType checkStatus(const NOX::Solver::Generic &problem) NOX::StatusTest::StatusType  checkStatusEfficiently(const NOX::Solver::Generic &problem, NOX::StatusTest::CheckType checkType) NOX::StatusTest::StatusType getStatus() const ostream& print(ostream &stream, int indent=0) const

  12. Solvers- Line Search - Trust Region Directions- e.g., Newton Line Searches - e.g., Polynomial Status Tests - e.g., Norm F AbstractLayer Abstract Vector & Abstract Group NOX Interface SolverLayer • Don’t need to directly access the vector or matrix entries, only manipulate the objects. • NOX uses an abstract interface to manipulate linear algebra objects. • Isolate the Solver layer from the linear algebra implementations used by the application. • This approach means that NOX does NOT rely on any specific linear algebra format. • Allows the apps to tailor the linear algebra to their own needs! • Serial or Parallel • Any Storage format: User Defined,LAPACK, PETSc, Epetra

  13. Initialization x = y x = |y| xi = 1/yifor i = 1 to n xi = g for i = 1 to n Length of Vector Scaling x = ax xi = xiyifor i = 1 to n Update x = aa + gx, x = aa + bb + gx Norm kxk1, kxk2 , kxk1 kxkw (weighted norm) Dot x¢y Clone (create a copy) y = x NOX::Abstract::Vector The solver is not allowed nor does it need explicit access to the vector – just the ability to manipulate it.

  14. x = Iterate Initialize Update Access F = F (x) Compute Access J = Jacobian of F at x Compute Apply / Apply Transpose Apply Inverse Apply Preconditioning n = Newton Vector Compute n = -J-1F to specified tolerance Access g = Gradient of kF (xk)k2 g = JTF Access Clone NOX::Abstract::Group The linear solver and application interface are combined into the Group. Vectors x, F, n, g are accessed as NOX::Abstract::Vector’s. Matrix J is never directly accessed!

  15. Code Demonstration Example Implementation

  16. Solvers- Line Search - Trust Region Directions- e.g., Newton Line Searches - e.g., Polynomial Status Tests - e.g., Norm F AbstractLayer Abstract Vector & Abstract Group Implementations- EPetra- PETSc - LAPACK- USER DEFINED Linear Algebra Interface EPetra Dependent Features- Matrix-Free Newton-Krylov- Preconditioning- Graph Coloring / Finite Diff. User Interface- Compute F- Compute Jacobian- Compute Preconditioner ApplicationInterface Layer NOX Framework SolverLayer

  17. NOX Specific Configure Options • Compiling NOX library in Trilinos: • --enable-nox • Compiling prerelease code: • --enable-prerelease • Using nox built-in linear algebra support: • LAPACK: --enable-nox-lapack • --enable-nox-lapack-examples • Epetra: --enable-nox-epetra • --enable-nox-epetra-examples • PETSc: --enable-nox-petsc • --enable-nox-petsc-examples • Compiling the test suite: • --enable-tests • --enable-nox-tests • Compiling LOCA library in Trilinos/NOX: • --enable-loca • Specifying an install directory: • --prefix=/usr/local > configure --enable-nox –enable-nox-epetra –prefix=/usr/local > make > make install > make dox

  18. Sandia Applications Primary NOX Team: Tammy Kolda, Roger Pawlowski, Russ Hooper

  19. Summary • Key Features • Object-oriented C++ library • Large number of cutting-edge algorithms • Can use any linear algebra implementation • Easy interface • User Flexibility: Add solvers, directions, line searches, convergence tests • NOX Support libraries • Fast integration – reduced interface • parallel iterative solvers (AztecOO, PETSc) • preconditioners (Ifpack, ML, Aztec, PETSc) • Matrix-Free Newton-Krylov • Matrix Estimation: Finite Difference/Coloring

  20. Sandia Tammy Kolda * Roger Pawlowski * Russ Hooper * Brett Bader* John Shadid Todd Coffey * Andy Salinger (LOCA) * Eric Phipps (LOCA) * Bill Spotz * (PyNOX) Mike Heroux (Trilinos) Scott Hutchinson (Xyce) Rob Hoekstra (Xyce) Eric Keiter (Xyce) Alan Williams (SIERRA) Tom Smith (Premo) Alfred Lorber (Premo) Tom Brunner (Alegra) Academics Homer Walker, WPI Joseph Simonis, WPI Tim Kelley, NCSU Matthew Lasater, NCSU Bobby Schnabel, UCB Richard Byrd, UCB Ryan McKenzie, Kentucky Craig Douglas, Kentucky NOX Contributors (Ideas, Code, and Testing) * NOX Developer NOX Information Tammy Kolda: tgkolda@sandia.gov Roger Pawlowski: rppawlo@sandia.gov Download: http://software.sandia.gov/nox Trilinos: http://software.sandia.gov/trilinos

More Related