Last changed: 01-05-2010

intro_trilinos(1)

NAME

intro_trilinos -- introduces the Cray Trilinos packages

IMPLEMENTATION

Cray Linux Environment (CLE)

DESCRIPTION

Trilinos provides abstract, object-oriented interfaces to established libraries such as PETSc, Metis/ParMetis, SuperLU, Aztec, BLAS, and LAPACK.

Note: The Trilinos module is dependent on the petsc, xt-libsci, and xt-asyncpe modules. Make certain these modules are loaded before using Trilinos.

The Trilinos Project is an ongoing effort to develop and implement robust algorithms and enabling technologies using modern object-oriented software design. Trilinos emphasizes abstract interfaces for maximum component interchangeability and provides a full-featured set of concrete classes that implement all abstract interfaces. Each Trilinos package is a self-contained and independently developed piece of software.

To use the Trilinos packages, load your choice of compiling environment, and then load the Trilinos module.
% module load trilinos

After you load the Trilinos module, all header and library locations are set automatically and you are ready to compile your code. No Trilinos-specific linking information is required on the command line. For example, to use the Epetra library, use a compiler command line like the following example.
% CC myprogram.cpp.o -o myprogram.exe

If linking to more than one Trilinos package, the libraries are linked automatically in the correct order of package dependency. For more information about link order, see http://trilinos.sandia.gov/packages/interoperability.html.

Trilinos Packages

The following packages are incorporated into this release of Trilinos.

Basic Linear Algebra Libraries

Petra 

The Petra libraries are the fundamental foundation of Trilinos. Trilinos includes three Petra libraries: Epetra, Tpetra, and Jpetra, which provide basic classes for constructing and manipulating matrix, graph, and vector objects.

Note: The releases of Tpetra and Jpetra are deferred.

Epetra provides the fundamental construction routines and services function that are required for serial and parallel linear algebra libraries, and is the underlying foundation for all Trilinos solvers. Epetra supports real, double-precision floating-point data only (no single-precision or complex), and avoids explicit use of some of the more advanced features of C++ that can be an impediment to portability, such as templates and the Standard Template Library.

(Deferred implementation) Tpetra is the templated version of Petra, which takes advantage of the newer advanced features of C++. Tpetra supports arbitrary scalar and ordinal types.

(Deferred implementation) Jpetra is a Java implementation of the Petra library.

EpetraExt 

A set of extensions to Epetra that allow Epetra to remain focused on its primary function of Linear Algebra object support. EpetraExt provides additional support for capabilities such as transformations (permutations, sub-block views, and so on), coloring support, partitioning (Zoltan), and I/O.

Kokkos 

A collection of the handful of sparse and dense kernels that determine much of the performance for preconditioned Krylov methods. This library contains function classes for sparse matrix vector multiplication and triangular solvers, and also for dense kernels that are not part of the standard BLAS. Kokkos is not intended to be used as a user package but rather to be incorporated into other packages that need high-performance kernels.

Preconditioners

AztecOO 

A linear solver package based on preconditioned Krylov methods. A follow-on to the Aztec solver package, it supports all Aztec interfaces and functionality but also provides significant new functionality.

Ifpack 

An object-oriented algebraic preconditioner, compatible with Epetra and AztecOO. This library supports the construction and use of parallel distributed memory preconditioners such as overlapping Schwartz domain decomposition, Jacobi scaling, and local Gauss-Seidel relaxations.

Meros 

A segregated preconditioning package, Meros provides scalable block preconditioning for problems that couple simultaneous solution variables such as Navier-Stokes problems.

ML 

An algebraic multi-level preconditioner package, ML provides scalable preconditioning capabilities for a variety of problem classes.

Linear Solvers

Amesos 

The Direct Spare Solver Package. The goal of Amesos is to make AX=B as easy as it sounds, at least for direct methods. Amesos provides clean and consistent interfaces to several popular third-party libraries.

AztecOO 

A linear solver package based on preconditioned Krylov methods. A follow-on to the Aztec solver package, it supports all Aztec interfaces and functionality but also provides significant new functionality.

Belos 

A Greek term meaning "arrow," Belos is the next generation of iterative solvers. Belos solvers are written using "generic" programming techniques. In other words, Belos is written using TSF abstract interfaces and therefore has no explicit dependence on any concrete linear algebra library. Instead, Belos solvers can be used with any concrete linear algebra library that implements the TSF abstract interfaces.

Epetra 

Epetra provides the fundamental construction routines and services function that are required for serial and parallel linear algebra libraries. Epetra provides the underlying foundation for all Trilinos solvers. See "Petra."

Komplex 

A complex linear equation solver using equivalent real formulations, built on top of Epetra and AztecOO.

Pliris 

An object-oriented interface to a LU solver for dense matrices on parallel platforms. These matrices are double-precision real matrices distributed on a parallel machine.

Teuchos 

A suite of common tools for developers, including reference-counted pointers, parameter lists, templated interfaces to BLAS/LAPACK, XML parsers, and more.

Nonlinear Solvers

MOOCHO 

The Multifunctional Object-Oriented arCHitecture for Optimization is designed to solve large-scale, equality and inequality nonlinearly constrained, non-convex optimization problems (i.e., nonlinear programs) using reduced-space successive quadratic programming (SQP) methods.

NOX and LOCA 

NOX is a collection of non-linear solvers, designed to be integrated easily into an application and used with many different linear solvers. LOCA, distributed as part of NOX, is the Library of Continuation Algorithms.

Rythmos 

A transient integrator for ordinary differential equations and differential-algebraic equations with support for explicit, implicit, one-step, and multi-step algorithms. Rythmos supports operator-split algorithms, multiphysics applications, block linear algebra, and adjoint integration.

Eigensolvers

Anasazi 

An extensible and interoperable framework for large-scale eigenvalue algorithms. This framework provides a generic interface to a collection of algorithms for solving large-scale eigenvalue problems.

Automatic Differentiation

Sacado 

A set of automatic differentiation tools for C++ applications, Sacado provides templated classes for forward, reverse, and Taylor mode automatic differentiation.

Domain Decomposition

Moertel 

Supplies capabilities for nonconforming mesh tying and contact formulations in 2- and 3-dimensions using Mortar methods.

Partitioning/Load Balancing

Isorropia 

A repartitioning/rebalancing package to assist with redistributing objects such as matrices and matrix-graphs in a parallel execution setting, to allow for more efficient computations. This package is primarily an interface to the Zoltan library but can be built and used with minimal capability without Zoltan.

Zoltan 

A toolkit for combinatorial algorithms for parallel, unstructured, and/or adaptive scientific applications. The data-structure neutral design enables Zoltan to be used by a wide range of applications, including adaptive finite element methods, particle simulations, linear solvers and preconditioners, crash and contact detection, and electrical circuit simulations. The largest component is a suite of dynamic load-balancing and partitioning algorithms that increase an application's parallel performance by reducing processor idle time. Zoltan also includes graph coloring and graph ordering algorithms that can be useful in task schedulers, parallel preconditioners, linear solvers, and the like. In addition to native implementations of many algorithms, this package interfaces to the graph and hypergraph partitioning libraries PT-Scotch nad ParMETIS.

Abstract Interfaces and Adapters

FEI 

A general interface for assembling finite-element data into a system of linear equations. It is an abstraction layer that insulates finite-element application codes from linear-algebra issues such as sparse matrix storage formats and mappings from nodes and solution fields to distributed equation spaces. FEI puts a common face on various linear solvers, allowing finite-element applications to switch from one solver library to another with minimal changes to application code. FEI provides natural mechanisms for assembling finite-element data such as element-wise stiffness arrays and load vectors, boundary-condition specifications, and constraint relations. It accepts data from multi-physics problems, allowing arbitrarily complicated elements with multiple solution fields per node and cell-centered fields. It is designed for use in distributed-memory parallel finite-element applications, to assemble and solve distributed linear systems using scalable underlying solver libraries.

Stratimikos 

A unified set of Thyra-based wrappers to linear solver and preconditioner capabilities, Stratimikos can also be used for unified testing of linear solvers and preconditioners.

Thyra 

A set of interfaces and supporting code that defines basic interoperability mechanisms between different types of numerical software. The foundation of all of these interfaces are the mathematical concepts of vectors, vector spaces, and linear operators. All other interfaces and support software are built on the basic operator/vector interfaces.

Mesh Generation

PAMGEN 

A package that creates hexahedral or quadrilateral (in 2D) finite element meshes of simple shapes (cubes and cylinders) in parallel. When linked to an application as a library, it enables each process of a parallel simulation to generate its finite element domain representation at execution time.

Discretization Utilities

Intrepid 

A library of interoperable tools for compatible discretizations of Partial Differential Equations (PDEs). This release of Trilinos includes the "expert" version of Intrepid, which is intended primarily for application developers who want to reuse large parts of their existing code frameworks such as I/O, data structures, assembly routines, and so on, while gaining access to the advanced discretization capabilities provided by Intrepid. In these cases the bulk of the data is owned and managed by the user rather than by Intrepid.

To avoid unnecessary and possibly expensive copying of data to and from Intrepid, this version comprises mostly stateless classes operating on user-owned data. Virtually all numerical data required by PDE codes can be represented as a multi-dimensional array of scalar values. For this reason, and to enhance interoperability, classes are templated on generic multi-dimensional arrays. The Shards package provides an implementation of a multi-dimensional array that can be used for that purpose, or users can write their own multi-dimensional arrays as long as a minimal interface is supported.

phdmesh 

A program to solve 2D potential problems (Poisson Equation) and eigenvalue problems (Helmholtz Equation) using the Finite Element Method. The phdMesh data structure supports arbitrary unstructured mesh connectivity, application-defined groupings of mesh entities, and application-defined computational field data. Common applications occur in electromagnetics, heat flow, and fluid dynamics, and phdMesh can solve problems using both Nodal Based Formulation and Edge Based (Vector) Formulation. The included parallel-performance test application performs dynamic load balancing and parallel geometric proximity searching on the contrived "gears" test problem.

Utilities

EpetraExt 

A set of extensions to Epetra that allow Epetra to remain focused on its primary function of Linear Algebra object support. EpetraExt provides additional support for capabilities such as transformations (permutations, sub-block views, and so on), coloring support, partitioning (Zoltan), and I/O.

Galeri 

A suite of utilities and classes to generate a variety of (distributed) linear systems. Galeri's functionalities are similar to those of the MATLAB gallery() function.

RTOp 

Reduction/Transformation Operators, which provide the basic mechanism for implementing vector operations in a flexible and efficient manner.

Teuchos 

A suite of common tools for developers, including reference-counted pointers, parameter lists, templated interfaces to BLAS/LAPACK, XML parsers, and more.

TriUtils 

A package of utilities for other Trilinos packages.

PDE Discretization Tools

Intrepid 

A library of interoperable tools for compatible discretizations of Partial Differential Equations (PDEs). This release of Trilinos includes the "expert" version of Intrepid, which is intended primarily for application developers who want to reuse large parts of their existing code frameworks such as I/O, data structures, assembly routines, and so on, while gaining access to the advanced discretization capabilities provided by Intrepid. In these cases the bulk of the data is owned and managed by the user rather than by Intrepid.

To avoid unnecessary and possibly expensive copying of data to and from Intrepid, this version comprises mostly stateless classes operating on user-owned data. Virtually all numerical data required by PDE codes can be represented as a multi-dimensional array of scalar values. For this reason, and to enhance interoperability, classes are templated on generic multi-dimensional arrays. The Shards package provides an implementation of a multi-dimensional array that can be used for that purpose, or users can write their own multi-dimensional arrays as long as a minimal interface is supported.

Shards 

This package provides a suite of common tools for numerical and topological data that facilitate interoperability between typical software modules used to solve Partial Differential Equations (PDEs) by finite element, finite volume, and finite difference methods. Shards comprises two categories of tools: methods to manage and access information about cell topologies used in mesh-based methods for PDEs, and methods to work with multi-dimensional arrays used to store numerical data in corresponding computer codes. The basic cell topology functionality of Shards includes methods to query adjacencies of subcells, find subcell permutation with respect to a global cell, and create user-defined custom cell topologies. The multi-dimensional array part of the package provides specialized compile-time dimension tags, multi-index access methods, and rank and dimension queries.

Third-party Libraries

The following third-party libraries are enabled in this release of Trilinos.

BLAS 

Basic Linear Algebra Subroutines.

CASK 

A set of CRAY tuned sparse math kernels for basic linear algebra problems such as matrix multiplication and linear solves, with multiple right hand sides to replace the native Epetra calls.

LAPACK 

Linear Algebra Package

METIS 

A set of serial programs for partitioning graphs, partitioning finite element meshes, and producing fill-reducing orderings for sparse matrices. The algorithms implemented in METIS are based on the multilevel recursive-bisection, multilevel k-way, and multi-constraint partitioning schemes developed at the University of Minnesota Digital Technology Center. For more information, see http://glaros.dtc.umn.edu/gkhome/views/metis.

ParMETIS 

An MPI-based parallel version of METIS. For more information, see http://glaros.dtc.umn.edu/gkhome/views/metis.

MUMPS 

(MUltifrontal Massively Parallel spare direct Solver); a package of parallel, sparse, and direct linear-system solvers based on a multifrontal algorithm. For more information, see http://graal.ens-lyon.fr/MUMPS/.

SuperLU 

A general purpose library of sequential routines for the direct solution of large, sparse, nonsymmetric systems of linear equations on high performance machines, developed at Lawrence Berkeley National Laboratory. For more information, see http://crd.lbl.gov/~xiaoye/SuperLU

SuperLU_dist 

A parallel version of SuperLU for use on distributed-memory systems.

See Also

The Trilinos Project home page: http://trilinos.sandia.gov/

Trilinos Documentation: http://trilinos.sandia.gov/documentation.html

Trilinos Package Interoperability: http://trilinos.sandia.gov/packages/interoperability.html