This page outlines the various ways to obtain Trilinos, including source code, containerized environments, and package managers like Spack. Whether you're a developer looking to contribute or a user seeking to integrate Trilinos into your application, you'll find the resources you need here.


Ways to Obtain Trilinos

Source Code

  • GitHub Repository:
    If you plan to develop Trilinos capabilities, you can fork the Trilinos GitHub repository.
    • Additional information about building and using Trilinos can be found on the Trilinos Wiki.

Containers

Spack

  • Trilinos can be built and installed using Spack, a package manager for HPC environments. Spack simplifies dependency management and builds Trilinos with optimized configurations for your system.

Releases

To download a specific release, visit the Trilinos releases page. Older versions are available as tags (see Trilinos Tags).

Trilinos follows Semantic Versioning (SEMVER) practices as defined by semver.org. This ensures clear communication about backward compatibility and versioning. Major releases signal backward-incompatible changes and are typically planned on an annual basis, though they may occur on demand when necessary.


TPL Version Compatibility

Trilinos relies on many Third Party Libraries (TPLs). Versioning is managed as part of our CMake build system and via Spack packaging.


Other Trilinos Repositories

The Trilinos organization on GitHub hosts several additional repositories that complement the main Trilinos framework. These repositories include legacy packages, experimental tools, and utilities. Explore the Trilinos organization repositories for more information.


DevSecOps Team

  • Description: Provides streamlined processes and a set of tools for the development of Trilinos packages.
  • Lead: Sam Browne @sebrowne
  • Responsibilities:
    • Implements various development, testing, automation tools, and IT infrastructure.
    • Defines and sets development, test, release, update, and support processes.
    • Organizes and maintains the Trilinos release process.
  • Team Members:

Special Build Instructions

Building with CUDA Support

See this page for a list of current compilers (including CUDA): https://github.com/trilinos/Trilinos/wiki/Pull-Request-Testing-Interface

Building Trilinos with CUDA support requires a script called nvcc_wrapper, which is distributed inside Kokkos within Trilinos. Enabling both CUDA and MPI using OpenMPI can be done by setting these environment variables:

export OMPI_CXX=/<Tpath>/Trilinos/Trilinos/packages/kokkos/config/nvcc_wrapper

where Tpath is the path at which a copy of Trilinos is available.

This variable tells mpicxx to use nvcc_wrapper as the underlying compiler. Note that nvcc_wrapper uses g++ as the default C++ host compiler.

Below is a CMake configure script fragment to then configure Trilinos:

 -DCMAKE_CXX_COMPILER=/<Mpath>/bin/mpicxx \
 -DCMAKE_C_COMPILER=/<Mpath>/bin/mpicc \
 -DCMAKE_Fortran_COMPILER=/<Mpath>/bin/mpif77 \
 -DCMAKE_CXX_FLAGS="-g -lineinfo -Xcudafe \
--diag_suppress=conversion_function_not_usable -Xcudafe \
--diag_suppress=cc_clobber_ignored -Xcudafe \
--diag_suppress=code_is_unreachable" \
 -DTPL_ENABLE_MPI=ON \
 -DTPL_ENABLE_CUDA=ON \
 -DKokkos_ENABLE_CUDA=ON \

where Mpath is the path to the base of the OpenMPI installation to use for the build.

The CMAKE_CXX_FLAGS line adds some nvcc_wrapper command-line arguments to disable some superfluous warnings generated by nvcc.


Additional Resources