Trilinos is a collection of compatible software packages that support parallel linear algebra computations, solution of linear, non-linear and eigen systems of equations and related capabilities. The majority of packages are written in C++ using object-oriented techniques. All packages are self-contained, with the Trilinos top layer providing a common look-and-feel and infrastructure.


The version 5.0 general release contains 17 packages: Amesos, Anasazi, AztecOO, Didasko, Epetra, EpetraExt, Ifpack, Kokkos, Komplex, LOCA, ML, New_Package, NOX, Pliris, PyTrilinos, Teuchos, and Triutils.

The limited release contains an additional 9 packages that are available in special situations by request. These are: Belos, Claps, Jpetra, Meros, Tpetra, TSF, TSFCore, TSFCoreUtils and TSFExtended.

Some of the significant new features:

  • Four new packages: Anasazi (Eigensolvers), Didasko (Tutorial), Pliris (Distributed dense solvers), PyTrilinos (Python interface to Trilinos libraries).
  • Trilinos tutorial delivered as part of a new package called Didasko.
  • Kernel performance in Epetra substantially improved, especially for multiple rights.
  • Initial kernel support for vector architectures in Epetra.
  • Significant improvements and enhancements in most existing packages.

More information:

Trilinos website: http://software.sandia.gov/trilinos

Amesos (version 2.0)

  • Improved handling of Epetra_RowMatrix operators
  • Memory leaks have been reduced
  • Simplified configuration using
  • Known bugs:
    • Amesos_Dscpack has memory leaks, prints to standard out and may crash if SymbolicFactorization() is called multiple times on the same Amesos object.
    • Amesos packages do not accept non-contiguous maps (e.g. one with indices {1,2,5,8,9, ... } )
    • Superludist fails on some matrices
    • Error handling on singular and near singular matrices is inconsistent

Anasazi (New)

  • Anasazi framework includes abstract description of eigenproblem, eigensolver, sorting, and linear algebra.
  • Templated implementations of two block eigensolvers ( block Krylov-Schur and block Davidson ) are included in this release.
  • Anasazi eigensolvers can use Epetra through linear algebra adapters.
  • A basic implementation of the abstract eigenproblem class is given for solving standard and generalized eigenvalue problems.
  • A basic implementation of the abstract sorting class is given for the block Krylov-Schur method. The block Davidson computes only the smallest eigenvalues at this time.
  • Many examples for solving standard and generalized eigenvalues problems using Anasazi are provided in this release.


  • Robust support for multiple simultaneous instances of AztecOO objects. Prior releases had a very fragile memory management approach that require user intervention.
  • Support (optional dependence on Teuchos) for ParameterList-driven use of AztecOO via Teuchos ParameterList objects.

Didasko (New)

  • Didasko now contains the tutorial PDF file and examples. All the tutorial material is located in the Trilinos/packages/didasko subdirectory.
  • The doxygen documentation has been improved.
  • All examples are configured with autotools. Users can enable the compilations of the examples by adding --enable-didasko to their configure line.


  • Memory efficiency improvement for MultiVector, CrsGraph and CrsMatrix classes.
  • MultiVector uses much less O(NumVector) storage in important situations.
  • CrsGraph and CrsMatrix support a static profile mode that allows one-time allocation of memory.
  • CrsGraph and CrsMatrix support a more robust OptimizeStorage capability that improves memory use and performance.
  • Performance improvement for CrsMatrix and VbrMatrix kernels.
  • CrsMatrix matrix multiplication and triangular solves are 20% to 100% faster that Version 4.0
  • VbrMatrix matrix multiplication is also improved for some important classes of problems.
  • Initial vector architecture support for sparse matrix-vector multiplication.
  • A new class called JadOperator supports matrix-vector multiplication using the so-called Jagged Diagonal data format. This format is especially effective for vector machines such as the Cray X1 and NEC SX series machines.


  • Scalable parallel distance-1 and distance-2 graph coloring.
  • Sparse matrix Add for Epetra CRS matrices.
  • Global index map "reindexing" tool for Epetra objects.


  • IFPACK 3.0 defines a general interface for preconditioners, through class Ifpack_Preconditioner.
  • Class Ifpack_AdditiveSchwarz can be used to define general overlapping one-level domain decomposition preconditioners.
  • IFPACK now offers point and block relaxation schemes, of Jacobi, Gauss-Seidel, and symmetric Gauss-Seidel type. For block schemes, the package supports both dense and sparse blocks.
  • Two new factorizations, ILUT and ICT, have been introduced.
  • A new user's guide is available. The doxygen documentation has been improved.

Kokkos (version 1.1)

  • No notable new features.

Komplex (version 2.0)

  • No notable new features.


  • The LOCA library can now be built as a shared library using libtool. Known issues with this are:
    • Extra link libraries passed using the --with-libs configure flag should use the "-Lpath -lname" format instead of "path/libname.a"
    • Building LOCA as a static library on DEC architectures using template repositories does not work. On these architectures, only build LOCA as a shared library using the --enable-shared and --disable-static configure flags, or turn off template repositories using the "-tweak" C++ compiler flag. Note that if the later method is chosen, a large number of warnings will be issued each time an executable is linked against LOCA.
    • When building shared libraries on SGI systems in 64 bit, one must supply the "-64" C++ compiler flag to not only the compiler and linker through CXXFLAGS and LDFLAGS, but also to libtool using LIBTOOL_CCLINKER_FLAGS or --with-libtool-cclinker-flags. Also one must turn off template repositories and the template prelinker using the flags "-ptused -no_prelink -no_auto_include".
    • When building shared libraries on Solaris systems, one should add "-xlic_lib=sunperf" to CFLAGS, "-library=sunperf" to CXXFLAGS and LIBTOOL_CCLINKER_FLAGS, and make sure neither of these flags appear in LDFLAGS.
  • A basic, but functional python interface to NOX and LOCA now exists. A test exhibiting this functionality can be found in the Trilinos/packages/nox/test/lapack/LOCA_python directory.

ML (version 3.1)

  • ML now supports Zoltan as a coarsening scheme (RCB only). Zoltan can be used to create the aggregates and to redistribute the next-level operator among the specified number of processors (which can be less than the available number of processes, for Maxwell solver only).
  • A variable-block partitioning scheme (based on METIS) is now available.
  • ML now supports IFPACK smoothers, like variable block Jacobi, Gauss-Seidel and symmetric Gauss-Seidel preconditioners, and generic additive Schwarz preconditioner.
  • Updated ML user's guide and Doxygen documentation.
  • Improved MultiLevelPreconditioner class (now derived from Epetra_Operator and no longer from Epetra_RowMatrix). Updated filtering/GGB algorithm, based on the Anasazi package.
  • Solving Maxwell equations via MultiLevelPreconditioner is now supported.
  • Improved organization of the examples, more detailed comments and additional README files.
  • Wrapping an ML_Operator struct as Epetra_RowMatrix is now supported.
  • Improved test coverage.

New_Package (version 1.1)

  • New tests are working examples of how to add tests to the Trilinos Test-Harness.


  • A new Tensor based solver that is independent of the underlying linear solver is now implemented (in the prerelease section). Previously the Tensor method was hardwired to use an iterative solver.
  • Inexact Trust Region Techniques are fully supported (also in the prerelease section).
  • Improved support for Epetra objects - The NOX::EpetraNew::Group should be used in place of the NOX::Epetra::Group. In the future we will be phasing out the NOX::Epetra::Group and replace it with NOX::EpetraNew::Group.
  • A multi-physics technique for code coupling has been demonstrated in the test/epetra/Multiphysics directory. This will be expanded to a generic capability in the next year.

Pliris (New)

  • An Object Oriented interface to a Dense Parallel LU Solver is now in place.
  • The matrix is described in terms of Epetra Vectors and Multivectors.
  • Multiple right hand sides can be addressed.
  • Configure with --enable-pliris
  • Test code allows performance studies - performance is dependent on highly optimized Level 3 BLAS.

PyTrilinos (New)

  • Requires SWIG version 1.3.23 or higher (http://www.swig.org).
  • Requires python Numeric (http://www.pfdubois.com/numpy).
  • Configure with --enable-pytrilinos.
  • Currently provides access to Epetra, EpetraExt and NOX. From python, use "from PyTrilinos import name", where "name" is the desired module.
  • Online documentation provides list of which classes have been wrapped.
  • Wrapped classes support almost all of the class methods. See documentation of wrapped packages for details.


  • Additional BLAS/LAPACK wrappers
  • Teuchos::ScalarTraits template specializations for the GNU MP and Arprec arbitrary precision libraries
  • Code enabling the conversion from NOX::Parameter::List to Teuchos::ParameterList, and vice versa.


  • No notable new features.