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

EPIC: Initial TriBITS Modernization and Generalization #367

Closed
15 tasks done
bartlettroscoe opened this issue Apr 22, 2021 · 14 comments
Closed
15 tasks done

EPIC: Initial TriBITS Modernization and Generalization #367

bartlettroscoe opened this issue Apr 22, 2021 · 14 comments

Comments

@bartlettroscoe
Copy link
Member

bartlettroscoe commented Apr 22, 2021

Description

This Epic will plan for and track the execution of the TriBITS modernization effort to address the immediate needs of Trilinos, Kokkos and the ECP Spack ecosystem. The goal is to do this in a way that will provide as much backward compatibility as reasonably possible to avoid having to rewrite thousands of CMakeLists.txt and *.cmake files in Trilinos, Drekar, Charon2, CASL VERA and other projects using TriBITS or breaking external customers using Trilinos as much as is reasonable.

Refactoring plan

@bartlettroscoe
Copy link
Member Author

CC: @keitat

FYI: The ExaWind project has specifically asked to have Trilinos build against pre-installed Kokkos before SC 2021. Given the plan above, we should have this done by the end of FY21.

@bartlettroscoe
Copy link
Member Author

CC: @keita, @fnrizzi, @marcinwrobel1986, @MikolajZuzek

The merge of the branch '63-merge-tpls-packages-1' to TriBITS 'master' is now complete (see #63 (comment)). I can now continue with some much more aggressive refactorings towards #63 and #299. Next, I will do some more clean up refactorings to improve understanding of the code base to make the next steps easier.

@bartlettroscoe
Copy link
Member Author

FYI: I talked with @gsjaardema about this plan and added the sub-story above:

  • Refactor the independent SEACAS TriBITS project to pull in pre-installed Kokkos and Zoltan packages (will allow separate Kokkos, KokkosKernels, SEACAS and remaining Trilinos packages to co-exist as Spack packages and linked into single downstream packages and APPs)

That should be easy once we can build Trilinos against pre-installed Kokkos and KokkosKernels.

@keitat
Copy link
Collaborator

keitat commented Oct 26, 2021

xSDK members are looking for a way to import Kokkos' build information. They need optimization flags and compiler (nvcc_wrapper for CUDA build) information.

@bartlettroscoe
Copy link
Member Author

xSDK members are looking for a way to import Kokkos' build information. They need optimization flags and compiler (nvcc_wrapper for CUDA build) information.

@keitat, from Spack? This is not a Spack-related epic. This epic will enable more flexibility with Spack but does not directly address Spack packages.

@bartlettroscoe
Copy link
Member Author

FYI: The move to modern CMake targets for TriBITS and Trilinos is complete. See #299 (comment).

@bartlettroscoe
Copy link
Member Author

FYI:

We have a demonstration ready for pre-building/installing Kokkos, then KokkosKernels, then the rest of Trilinos. This demos the building and installing Kokkos and KokkosKernels separately as their own Spack packages and then building the rest of Trilinos as its own Spack package (and similar use cases). (And we can further partition Trilinos into smaller Spack packages in the future as we would like starting with SEACAS.)

All of the critical changes on the TriBITS side should be complete. The question is what to do about the current incompatibilities between the TriBITS builds of Kokkos and KokkosKernels and the native non-TriBITS CMake builds for those packages and what is expected by downstream Trilinos packages. (Changes can be made on either side to accommodate some of the differences.)

@bartlettroscoe
Copy link
Member Author

FYI, with the merge of PR:

Trilinos 'develop' and Kokkos 'develop' now support pre-isntalling Kokkos with the native Kokkos non-TriBITS CMake build system.

@bartlettroscoe
Copy link
Member Author

FYI: Here is the Spack PR that has the Trilinos Spack package using the Kokkos Spack package:

@achauphan achauphan unpinned this issue Jan 8, 2024
@bartlettroscoe
Copy link
Member Author

FYI: Looks like the changes to KokkosKernels was made to allow it to be installed using its native non-TriBITS CMake build system. See:

@bartlettroscoe
Copy link
Member Author

I am going to descope to remove the SEACAS work (but I think has been implicitly done by SEACAS developers). Looking at:

it does not looks like the SEACAS Spack package has yet been updated to use external Kokkos or Zoltan, but someone added a ToDo for this a long time ago:

I don't think that is actually hard to do at this point, and SEACAS has already been updated for external Pamgen (see here and the commit sandialabs/seacas@2d4c7ce).

@bartlettroscoe
Copy link
Member Author

Closing as complete (which should have been done a long time ago ...)

@github-project-automation github-project-automation bot moved this from In Progress to Done in TriBITS Refactor Oct 10, 2024
@bartlettroscoe
Copy link
Member Author

Closing as complete (which should have been done a long time ago ...)

@bartlettroscoe
Copy link
Member Author

FYI: Someone updated the Spack build of Trilinos to use external KokkosKernels last week. See:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

No branches or pull requests

2 participants