forked from searhein/trilinos-paper
-
Notifications
You must be signed in to change notification settings - Fork 0
/
framework.tex
36 lines (23 loc) · 4.22 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
29
30
31
32
33
34
35
36
\todo{Describe the modern framework, packages like pyTrilinos}
\todo{CG: PyTrilinos has currently no developer.}
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{Teuchos}
Teuchos provides a suite of common tools for many Trilinos packages. These tools include memory management classes~\cite{bartlett2010} such as ``smart'' pointers and arrays, ``parameter lists'' for communicating hierarchical lists of parameters between library or application layers, templated wrappers for the BLAS and LAPACK, XML parsers, and other utilities. They provide a unified ``look and feel'' across Trilinos packages, and help avoid common programming mistakes.
\subsection{PyTrilinos}
PyTrilinos is a set of python wrappers for selected Trilinos packages~\cite{PyTrilinos}. A python programmer can dynamically import Trilinos packages into a python script or the python command-line interpreter, allowing the creation and manipulation of Trilinos objects and the execution of Trilinos algorithms, without the need to constantly recompile.
PyTrilinos enables Trilinos users to immediately run sanity tests. Developers can add additional unit tests quickly within the python unit testing framework. Building on top of PyTrilinos, full-fledged applications can be developed using python. The PyTrilinos package is nearing the end of its lifecycle, but a second-g
eneration PyTrilinos is nearing completion.
% LocalWords: scalably