-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathframework.tex
28 lines (18 loc) · 3.57 KB
/
framework.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
% !TEX root = main.tex
The Trilinos Framework product provides supporting infrastructure for Trilinos users and developers. This infrastructure is largely not what Trilinos is well-known for but is essential for supporting all Trilinos capabilities.
\subsection{Build and Test Infrastructure}
The primary focus of the Trilinos Framework product relates to building, testing, and releases of Trilinos. This effort includes setting up and maintaining the general infrastructure for structured building of subsets of packages, automated testing, and maintaining and adding to the various testing configurations.
The Trilinos Framework infrastructure is built on top of the Tribal Build, Integration, and Test System (TriBITS~\cite{Bartlett2014}) which is built on top of the open-source tools CMake and CTest\footnote{\url{https://cmake.org}}.
The TriBITS framework allows building arbitrary subgraphs of dependent (Trilinos) CMake packages in one or more individual aggregated CMake projects (in any arrangement desired).
Each Trilinos/TriBITS package lists its direct (required and optional) dependent upstream packages, thus forming a package dependency graph.
The TriBITS framework uses this package dependency graph to automatically determine what indirect dependent internal packages must be enabled and processed (and built) and what external packages must be found.
TriBITS then orchestrates the processing of all of the required CMake code to find the needed external packages and configure and build (and optionally test and install) the selected set of internal packages.
This allows a large number of (Trilinos) CMake packages to be configured, built, and tested in a flexible and efficient manner.
In addition, TriBITS provides support for a number of advanced features that are not available in raw CMake/CTest including: eliminating a large amount of boiler-plate CMake code and avoiding common mistakes; enabling and testing all downstream packages given a set of enabled (i.e. modified) upstream packages; managing the enabling and disabling of tests based on various criteria; producing build and test results submitted to a CDash site on a package-by-package basis; producing reduced source tarballs for only a desired subset of enabled packages.
As of Trilinos 14.4, TriBITS and Trilinos have been updated to allow packages using raw CMake to be integrated with just a few well-defined integration requirements.
The TriBITS framework has allowed Trilinos to scalably grow in the number of packages and the complexity without undue burden on individual Trilinos developers and users.
\subsection{Documentation Infrastructure}
The Trilinos Framework product is also responsible for maintaining the general infrastructure for the Trilinos website \footnote{\url{https://trilinos.github.io}}, wiki \footnote{\url{https://github.com/trilinos/Trilinos/wiki}}, and Doxygen documentation \footnote{\url{https://trilinos.github.io/documentation.html}}. It owns some of the documented workflows on these sites, such as the process for reproducing testing failures, but the Trilinos package developers own all of the documentation associated with their associated packages.
\subsection{Python Wrappers: PyTrilinos2}
PyTrilinos2 is a set of automatically generated Python wrappers for selected Trilinos packages including Tpetra, Teuchos and Thyra, and for exposing solver capabilities from Amesos2, Belos, Ifpack2 and MueLu through Stratimikos. In the future, the list of wrapped packages will be enlarged to provide users with more features and to enable efficient prototyping of new algorithms for developers.
% LocalWords: scalably