Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get templated code in Trilinos to use ETI as much as possible to reduce (re)build times and resources #1388

Open
bartlettroscoe opened this issue Jun 2, 2017 · 4 comments
Labels
DO_NOT_AUTOCLOSE This issue should be exempt from auto-closing by the GitHub Actions bot. Framework tasks Framework tasks (used internally by Framework team)

Comments

@bartlettroscoe
Copy link
Member

Blocked By: (The ETI issues for individual packages as they get created.)

CC: @trilinos/framework, @rppawlo, @maherou

Description:

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 float, complex<float>, and complex<double> (see #362, 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.

@bartlettroscoe bartlettroscoe added the Framework tasks Framework tasks (used internally by Framework team) label Jun 2, 2017
@mhoemmen
Copy link
Contributor

mhoemmen commented Jun 2, 2017

Ifpack2 uses ETI. ROL could save some build time by using Ifpack2's Factory, instead of including specific preconditioners directly. Also, if ROL is including _def.hpp files directly, that could be circumventing ETI and forcing rebuilds.

@bartlettroscoe
Copy link
Member Author

Using Stratimikos would also reduce the build times as well.

@jhux2
Copy link
Member

jhux2 commented Jun 2, 2017

Keep in mind that ROL could be pulling in dependencies of dependencies. It would be worth knowing the full dependency chain for those examples that take a long time to compile.

@github-actions
Copy link

This issue has had no activity for 365 days and is marked for closure. It will be closed after an additional 30 days of inactivity.
If you would like to keep this issue open please add a comment and remove the MARKED_FOR_CLOSURE label.
If this issue should be kept open even with no activity beyond the time limits you can add the label DO_NOT_AUTOCLOSE.

@github-actions github-actions bot added the MARKED_FOR_CLOSURE Issue or PR is marked for auto-closure by the GitHub Actions bot. label Mar 27, 2021
@bartlettroscoe bartlettroscoe added DO_NOT_AUTOCLOSE This issue should be exempt from auto-closing by the GitHub Actions bot. and removed MARKED_FOR_CLOSURE Issue or PR is marked for auto-closure by the GitHub Actions bot. labels Mar 27, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DO_NOT_AUTOCLOSE This issue should be exempt from auto-closing by the GitHub Actions bot. Framework tasks Framework tasks (used internally by Framework team)
Projects
None yet
Development

No branches or pull requests

3 participants