Get templated code in Trilinos to use ETI as much as possible to reduce (re)build times and resources
Created by: bartlettroscoe
Blocked By: (The ETI issues for individual packages as they get created.)
CC: @trilinos/framework, @rppawlo, @maherou
This story is a place marker to push the issue of getting templated packages in Trilinos to use explicit template instantiation (ETI) to reduce build times and especially rebuild times for these packages. Long build times is a huge impediment to development, testing, and usage of Trilinos.
For example, it is reported (by @dridzal) that some ROL examples consume huge amounts of compiler time and system memory in order to compile because they directly include headers from Belos, Amesos2, Ifpack2, MueLu, etc. If ETI was being used by these packages, then it is likely that those examples would compile much more quickly and use less memory.
Another example is the xSDK project where Trilinos is constantly getting hit for large build times and resources. (In fact, the xSDK installer for Trilinos was modified to remove the templated packages because of this.)
Now that Trilinos has top-level options for enabling/disabling scale types like
complex<double> (see #362 (closed), and there are similar options for ordinal types), every Trilinos package that has templated code needs to, as much as possible, provide for ETI based on those requested types. Note that this does not require packages to use a consistent system for ETI (hence, #546 is not needed). It just requires that they do ETI and respond to those type enables/disables.
It is expected that new Issues will be created for specific packages to get their code to use ETI more. Those new issues will block this Issue.