11
PyTrilinos: A Python Interface to Trilinos Bill Spotz Sandia National Laboratories Reproducible Research in Computational Geophysics August 31, 2006

PyTrilinos: A Python Interface to Trilinos

  • Upload
    colm

  • View
    58

  • Download
    0

Embed Size (px)

DESCRIPTION

PyTrilinos: A Python Interface to Trilinos. Bill Spotz Sandia National Laboratories Reproducible Research in Computational Geophysics August 31, 2006. Chemically reacting flows Climate modeling Combustion Compressible flows Computational biology Electrical modeling Heat transfer - PowerPoint PPT Presentation

Citation preview

Page 1: PyTrilinos: A Python Interface to Trilinos

PyTrilinos: A Python Interface to Trilinos

Bill Spotz

Sandia National Laboratories

Reproducible Research in

Computational Geophysics

August 31, 2006

Page 2: PyTrilinos: A Python Interface to Trilinos

Computational Sciences at Sandia

• Chemically reacting flows• Climate modeling• Combustion• Compressible flows• Computational biology• Electrical modeling• Heat transfer• Load balancing

• Materials modeling• MEMS modeling• Mesh generation• Optimization and

uncertainty quantification• Seismic imaging• Shock and multiphysics• Structural dynamics

Page 3: PyTrilinos: A Python Interface to Trilinos

The Trilinos Project

• Provide a central repository for Sandia’s solver technology• Increase code-reuse• Organized on concept of “packages”• Minimize package interdependence• Maximize package interoperability• Provide a framework for SQE and SQA

– Compliance with requirements– Nightly test harness

• High degree of developer autonomy• Open source: GNU Lesser License• Web site: http://software.sandia.gov/trilinos• Next release: Version 7.0, September, 2006• Trilinos Users Group Meeting, November 7-9, 2006

Page 4: PyTrilinos: A Python Interface to Trilinos

The Trilinos Project

Linear SolversNonlinear Solvers

Meta-Solvers

Linear AlgebraServices

Preconditioners

Tools &Utilities

AmesosAztecOOBelosKomplexPlirisStratimikos

NOX

AnasaziRythmosLOCAMOOCHO

EpetraJpetraTpetraEpetraExtKokkosRTOp

IFPACKMLClapsMeros

TeuchosTriUtilsGaleriThyraIsorropiaMoertelDidaskoPyTrilinosWebTrilinosNew_Package

Direct, sparse

Iterative, sparse

Iterative, sparse,next generation

Complex interfaceto AztecOO

Direct, dense

Generic interface

Communicators, maps, vectors, matrices, graphs…

Java

TemplatedExtensions

Sparse kernels

Reduction, transformation operators

Incomplete factorization

Multi-level

Domain decomposition

Segregated, block

Eigensolvers

Time-stepping algorithms

Continuation algorithms

Constrained optimization

Primary tools package

Common testing tools

Matrix gallery

Common interface

Partitioning & load balance

Mortar elements

Trilinos examples

Python Interface

Web interface

Package template

Page 5: PyTrilinos: A Python Interface to Trilinos

The Interoperability Problem

• Ross has talked about the need for (and work on) a common abstract interface– Interfaces between Trilinos packages– Interfaces between Trilinos and external packages

• We would like to extend this concept to the python wrappers– Interoperability with external python projects, such

as SLIMpy– Many design decisions still to be made– Some early prototyping work has been done

Page 6: PyTrilinos: A Python Interface to Trilinos

PyTrilinos• Linear Algebra Services

– Epetra (with extensive NumPy compatibility and integration)– EpetraExt (coloring algorithms and some I/O)

• Linear Solvers– Amesos (LAPACK, KLU, UMFPACK, ScaLAPACK, SuperLU, SuperLUDist,

DSCPACK, MUMPS)– AztecOO

• Preconditioners– IFPACK– ML

• Nonlinear Solvers– NOX (python wrappers not yet caught up to recent redesigns)

• Meta-Solvers– LOCA (python wrappers not yet caught up to recent redesigns)– Anasazi (early development stage)

• Tools and Utilities– Teuchos (ParameterList class only)– TriUtils– Galeri– Thyra (early development stage)– New_Package

Page 7: PyTrilinos: A Python Interface to Trilinos

PyTrilinos.Epetra

• Communicators– Comm– SerialComm– MpiComm– PyComm

• Maps– BlockMap– Map– LocalMap

• Vectors– MultiVector– Vector– IntVector

• SerialDense objects– SerialDenseOperator– SerialDenseMatrix– SerialDenseVector– SerialDenseSolver– IntSerialDenseMatrix– IntSerialDenseVector

• Graphs– CrsGraph

• Operators– Operator– RowMatrix– CrsMatrix

Page 8: PyTrilinos: A Python Interface to Trilinos

A Quick Detour…

• Python lists are not suitable for scientific computing– Flexible but inefficient

– Heterogeneous data, noncontiguous memory

• NumPy module provides needed functionality– Contiguous, homogeneous n-dimensional arrays

– High-level interface

– Part of SciPy

• SciPy is a large, open source package for a wide variety of python interfaces to scientific software:– NetLib’s “greatest hits”

Page 9: PyTrilinos: A Python Interface to Trilinos

PyTrilinos.Epetra and NumPy

• Array-like classes inherit from numpy.UserArray– MultiVector– Vector– IntVector– SerialDenseMatrix– SerialDenseVector– IntSerialDenseMatrix– IntSerialDenseVector

• Methods throughout Epetra have arguments that accept or produce pointers to C arrays– Python input arguments accept python sequences

– Python output arguments produce ndarrays

Page 10: PyTrilinos: A Python Interface to Trilinos

PyTrilinos Demonstration

−d2u

dx2+ cdu

dx= 0, x ∈ [0,1]• Governing equation:

• Boundary conditions:

• Exact solution:

• CDS:

• Oscillations:

u(0) = 0, u(1) =1

u(x) =ecx −1

ec −1

ch =c

n−1> 2

−ui+1 −2ui +ui−1

h2+ cui+1 −ui−12h

= 0

Page 11: PyTrilinos: A Python Interface to Trilinos

Conclusions

• Python lets developers focus on the problem– Memory management, garbage collection

– Powerful, flexible containers

– Clean, readable syntax

• PyTrilinos provides access to powerful solver technologies– Rapid prototyping

– Application development

• For computational geophysics, Thyra should provide key too interoperability– Python wrappers for Thyra

– Thyra adapters for geophysics codes