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

Ifpack2::BlockRelaxation: Remove ETI for ContainerType != Ifpack2::Container #551

Closed
mhoemmen opened this issue Aug 12, 2016 · 1 comment
Assignees

Comments

@mhoemmen
Copy link
Contributor

@trilinos/ifpack2 Recent changes to Ifpack2::BlockRelaxation (thanks @brian-kelley !) mean that we no longer need to do explicit template instantiation (ETI) for BlockRelaxation with ContainerType != Ifpack2::Container<Tpetra::RowMatrix<...> >. This change would reduce the number of BlockRelaxation instantiations by 5x.

@mhoemmen mhoemmen added this to the Ifpack2-BlockRelaxation-refactor milestone Aug 12, 2016
@mhoemmen mhoemmen self-assigned this Aug 12, 2016
@mhoemmen mhoemmen added stage: in progress Work on the issue has started stage: in review Primary work is completed and now is just waiting for human review and/or test feedback and removed stage: in progress Work on the issue has started labels Aug 12, 2016
mhoemmen pushed a commit that referenced this issue Aug 12, 2016
@trilinos/ifpack2

Our recent changes to Ifpack2::BlockRelaxation mean that users no longer
need to provide its second template parameter, ContainerType.  Its
default value, Ifpack2::Container<row_matrix_type>, allows run-time
selection of the container type through the input ParameterList to
setParameters.

Before this commit, users could still use a specific ContainerType (not
the "generic" Ifpack2::Container<row_matrix_type>) to specify the
container type at compile time.  This commit removes explicit template
instantiation for ContainerType types other than
Ifpack2::Container<row_matrix_type>.

This change means that users MUST NOT specify the optional second
template parameter of BlockRelaxation.  Users MUST now select the
container type at run time via the "relaxation: container" parameter.
This is a BACKWARDS INCOMPATIBLE CHANGE, which we consider acceptable
because of the very small number of users of BlockRelaxation.

This change reduces the number of BlockRelaxation instantiations by 5x.
This will reduce build times and library and executable sizes.  In an
MPI_DEBUG dynamic shared libraries build with Clang 3.5 on Mac, this
reduces the Ifpack2 library size from 20474328 B to 19285120 B.

We use a static_assert to ensure that ContainerType =
Ifpack2::Container<row_matrix_type>.  This makes the interface the same,
whether or not ETI is enabled.

Build/Test Cases Summary
Enabled Packages: Ifpack2, TpetraCore
Disabled Packages: FEI,PyTrilinos,Moertel,STK,SEACAS,ThreadPool,OptiPack,ShyLU,Rythmos,NOX
0) MPI_DEBUG => passed: passed=125,notpassed=0 (3.97 min)
1) SERIAL_RELEASE => passed: passed=97,notpassed=0 (17.49 min)
Other local commits for this build/test group: 2820350, ded273d, 118e1b5, b9c1fef
@mhoemmen mhoemmen removed the stage: in review Primary work is completed and now is just waiting for human review and/or test feedback label Aug 12, 2016
@mhoemmen
Copy link
Contributor Author

Just pushed a fix.

@mhoemmen mhoemmen removed this from the Ifpack2-BlockRelaxation-refactor milestone Nov 8, 2016
bartlettroscoe added a commit that referenced this issue Dec 13, 2022
Origin repo remote tracking branch: 'github/master'
Origin repo remote repo URL: 'github = git@github.com:TriBITSPub/TriBITS.git'
Git describe: Vera4.0-RC1-start-1400-g07aeef0f

At commit:

commit 07aeef0f9f10d928b614214c1c8b38af0eecc6d4
Author:  Roscoe A. Bartlett <rabartl@sandia.gov>
Date:    Mon Dec 12 19:20:48 2022 -0700
Summary: Remove assert of local matches cache export var (#551)
bartlettroscoe added a commit to bartlettroscoe/Trilinos that referenced this issue May 2, 2023
…1545)

This was copied from the TriBITS commit:

  commit 07aeef0f9f10d928b614214c1c8b38af0eecc6d4 (rab-github/551-fix-assert-enable-var-export)
  Author: Roscoe A. Bartlett <rabartl@sandia.gov>
  Date:   Mon Dec 12 19:20:48 2022 -0700

      Remove assert of local matches cache export var (trilinos#551)

and minor modifications were made to make it stand alone and remove the assert
function that is not needed.

This will be used to make the Kokkos native CMake build system produce the
correct set(Kokkos_<info> ???) statements in the installed KokkosConfig.cmake
file.
bartlettroscoe added a commit to bartlettroscoe/Trilinos that referenced this issue May 3, 2023
…1545)

This was copied from the TriBITS commit:

  commit 07aeef0f9f10d928b614214c1c8b38af0eecc6d4 (rab-github/551-fix-assert-enable-var-export)
  Author: Roscoe A. Bartlett <rabartl@sandia.gov>
  Date:   Mon Dec 12 19:20:48 2022 -0700

      Remove assert of local matches cache export var (trilinos#551)

and minor modifications were made to make it stand alone and remove the assert
function that is not needed.

This will be used to make the Kokkos native CMake build system produce the
correct set(Kokkos_<info> ???) statements in the installed KokkosConfig.cmake
file.
bartlettroscoe added a commit to bartlettroscoe/Trilinos that referenced this issue May 3, 2023
…1545)

This was copied from the TriBITS commit:

  commit 07aeef0f9f10d928b614214c1c8b38af0eecc6d4 (rab-github/551-fix-assert-enable-var-export)
  Author: Roscoe A. Bartlett <rabartl@sandia.gov>
  Date:   Mon Dec 12 19:20:48 2022 -0700

      Remove assert of local matches cache export var (trilinos#551)

and minor modifications were made to make it stand alone and remove the assert
function that is not needed.

This will be used to make the Kokkos native CMake build system produce the
correct set(Kokkos_<info> ???) statements in the installed KokkosConfig.cmake
file.
bartlettroscoe added a commit to bartlettroscoe/Trilinos that referenced this issue May 4, 2023
…1545)

This was copied from the TriBITS commit:

  commit 07aeef0f9f10d928b614214c1c8b38af0eecc6d4 (rab-github/551-fix-assert-enable-var-export)
  Author: Roscoe A. Bartlett <rabartl@sandia.gov>
  Date:   Mon Dec 12 19:20:48 2022 -0700

      Remove assert of local matches cache export var (trilinos#551)

and minor modifications were made to make it stand alone and remove the assert
function that is not needed.

This will be used to make the Kokkos native CMake build system produce the
correct set(Kokkos_<info> ???) statements in the installed KokkosConfig.cmake
file.
bartlettroscoe added a commit to bartlettroscoe/Trilinos that referenced this issue May 5, 2023
…1545)

This was copied from the TriBITS commit:

  commit 07aeef0f9f10d928b614214c1c8b38af0eecc6d4 (rab-github/551-fix-assert-enable-var-export)
  Author: Roscoe A. Bartlett <rabartl@sandia.gov>
  Date:   Mon Dec 12 19:20:48 2022 -0700

      Remove assert of local matches cache export var (trilinos#551)

and minor modifications were made to make it stand alone and remove the assert
function that is not needed.

This will be used to make the Kokkos native CMake build system produce the
correct set(Kokkos_<info> ???) statements in the installed KokkosConfig.cmake
file.
bartlettroscoe added a commit to bartlettroscoe/Trilinos that referenced this issue May 5, 2023
…1545)

This was copied from the TriBITS commit:

  commit 07aeef0f9f10d928b614214c1c8b38af0eecc6d4 (rab-github/551-fix-assert-enable-var-export)
  Author: Roscoe A. Bartlett <rabartl@sandia.gov>
  Date:   Mon Dec 12 19:20:48 2022 -0700

      Remove assert of local matches cache export var (trilinos#551)

and minor modifications were made to make it stand alone and remove the assert
function that is not needed.

This will be used to make the Kokkos native CMake build system produce the
correct set(Kokkos_<info> ???) statements in the installed KokkosConfig.cmake
file.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant