forked from searhein/trilinos-paper
-
Notifications
You must be signed in to change notification settings - Fork 0
/
framework.tex
27 lines (17 loc) · 3.23 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
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 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, 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.
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 which forms 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, 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 enable and disable 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 integrating packages using raw CMake 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 burdening of individual Trilinos developers and users.
\subsection{Documentation Infrastructure}
The Framework is also responsible for maintaining the general infrastructure for the Trilinos web site, wiki, and Doxygen documentation. The Framework 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{PyTrilinos2}
PyTrilinos2 is a set of automatically generated Python wrappers for selected Trilinos packages including Tpetra, Teuchos, and some MueLu capabilities. 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