Kokkos support in 4C #2070
Replies: 8 comments 9 replies
|
@georghammerl I can only cast a single vote in above's poll. I'd be available on July 7th, 8th, and 9th. |
|
July 6th, 7th, or 8th would work for me. |
|
At this time, all of these dates are open for me. HR hasn't put anything on my schedule yet |
|
Let us have the meeting on July 7th, 10:00 - 11:30 |
|
For me, some potential points of clarification/discussion would be
I am still learning 4C as a codebase, so some of these questions, but I feel like too much communication is better than too little in this sort of situation. |
|
Meeting notes 07.07.2026
|
|
Using Kokkos via Trilinos 16.2.0 has us using Kokkos 4.7.1. We can improve that by swapping to Trilinos 16.2.1, which brings us to Kokkos 4.7.4 which includes some fixes for newer compilers. It's a bugfix release, so I don't think it should break anything for 4C. As we add Kokkos to 4C, we should make sure that we only use features that are supported by Kokkos 5.0+, since the long term goal is to move 4C to Trilinos 17.0+, which uses Kokkos 5.0+. Don't need to add more tech debt. There's something about how the implementation of Kokkos Views changed between 4.1 and 5.0, and I'm working on figuring out what that means for us in terms of any potential for tech debt. |
|
Ok, just a small update - I am working on some research and hope to have a proposal next week on how I'd recommend we update an entire module(?), like the particle code, to use Kokkos. Since Kokkos ships with Trilinos and we have it included in 4C automatically, I wouldn't worry to much about directly including Kokkos code into files, as Kokkos will compile them for the CPU if no GPU device is available. I think the big concern I have is designing the interactions with common core modules like linalg and utils so that memory synchronization isn't isn't something most users or developers have to think about. It might make the most sense to attach Kokkos views to any large allocation of memory and only use the Kokkos view in modules that are adding Kokkos code. Those modules would have to do something similar when interfacing with other modules that are not Kokkos enabled. Once we have the memory transfer between Kokkos enabled and not enabled modules defined, then we have natural break points and can transition the entire innards of a module to Kokkos execution gradually without disrupting other work. Once two modules that touch are both Kokkos enabled, then we can make a version of the interface that just hands off Kokkos views instead of CPU only objects. Transitioning the innards to Kokkos isn't conceptually difficult - I imagine we'll largely start out with Kokkos Anyways, its Friday, so this will rumble around in my head over the weekend and I'll hopefully have more concrete of ideas late next week. I'm playing around with learning Kokkos and some of the options for not disrupting existing functions here: https://github.com/jeremylt/legacy-kokkos-integration-demo I also hope to research what other projects have done when binging on Kokkos like this, as this one of the use cases it was designed for. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
I would like to set up a meeting to get to know each other with Jeremy, our new colleague at Hereon who will be joining us in July. One of his key priorities is to add GPU support to 4C. Significant initial progress has already been made toward enabling Kokkos (#2012 (comment)).
The goal will be to get to know each other and exchange ideas on the future integration of Kokkos, GPU, and OpenMP support into 4C.
The vote does not work as expected. I apologize for the inconvenience. Only single vote is possible. Please comment your favorite dates. Thank you.
2 votes ·
All reactions