Tpetra parallel linear algebra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Trilinos/Tpetra: Next-generation distributed linear algebra

Outline

Introduction

Tpetra implements linear algebra objects, such as sparse matrices and dense vectors. Tpetra is "hybrid parallel," meaning that it uses at least two levels of parallelism:

We say "distributed linear algebra" because Tpetra objects may be distributed over one or more parallel MPI processes. The shared-memory programming models that Tpetra may use within a process include

Tpetra differs from Epetra, Trilinos' previous distributed linear algebra package, in the following ways:

  1. Tpetra has native support for solving very large problems (with over 2 billion unknowns).

  2. Tpetra lets you construct matrices and vectors with different kinds of data, such as floating-point types of different precision, or complex-valued types. Our goal is for Tpetra objects to be able to contain any type of data that implements a minimal compile-time interface. Epetra objects only support double-precision floating-point data (of type double).

  3. Tpetra can exploit many different kinds of hybrid parallelism, and most of its kernels do so natively. Epetra only supports OpenMP shared-memory parallelism for a few kernels. Tpetra also has optimizations for shared-memory parallel systems with nonuniform memory access (NUMA). All effort in supporting future node-level computer architectures will go into Tpetra.

Overview of Tpetra

Templated Types in Tpetra

All of all classes in Tpetra utilize templates, which allows the user to specify any type they want. In some cases, the choice of data type allows increased functionality. For example, 64-bit ordinals allow for problem sizes to break the 2 billion element barrier present in Epetra, whereas complex scalar types allow the native description and solution of complex-valued problems.

Most of the classes in Tpetra are templated according to the data types which constitute the class. These are the following:

Tpetra Classes

Most Tpetra users will want to learn about the following classes.

Trilinos and Tpetra

Tpetra can be used mostly as a stand-alone package, with explicit dependencies on Teuchos and Kokkos. There are adapters allowing the use of Tpetra operators and multivectors in both the Belos linear solver package and the Anasazi eigensolver package.

Tutorial lessons

Tpetra includes several lessons. The first shows how to initialize an application using Tpetra, with or without MPI. Following lessons demonstrate how to create and modify Tpetra data structures, and how to use Tpetra's abstractions to move data between different parallel distributions. The lessons include both sections meant for reading, and example code that builds and runs. In fact, the code passes nightly tests on many different platforms.