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
Kokkos backend in ADIOS2 #3446
Kokkos backend in ADIOS2 #3446
Conversation
541390a
to
fe6d73b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The changes to the preprocessor conditional in KokkosView.h look a bit odd, switching from defined to define and the && to || seems not to fit in. But the rest looks good.
2046692
to
9648e12
Compare
Yes, my mistake, none of the testing looked at that, I corrected the bug. The operator change (|| instead of &&) is because we cannot build ADIOS2 with both CUDA and Kokkos backend so the two macro are never true. I still need to test better the scenario when we use ADIOS2 with a Kokkos application, but CUDA applications work (I'll add an example in Kokkos-Examples) and update the documentation |
c3b9b9f
to
3ec03ef
Compare
@anagainaru I was finally able to reproduce this in the container I'm running locally. Add this change in a commit:
That seems to be all that is needed. |
@caitlinross Great ! Testing this now |
cb6f203
to
56d0892
Compare
@anagainaru should this go into the 2.9 release? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @anagainaru for waiting for my review. It looks great, I like that you are making the code more extensible. This PR brings many changes, I commented some of those. In general it looks good, but still I can see that it is still WIP.
Welcome back from vacation! Hopefully it will go in the release. I'll leave comments to your questions in the corresponding places. |
63de969
to
5acf962
Compare
@anagainaru can you allow other developers to push to this branch, I have changes I want to propose to help with this :) |
|
e56830d
to
8c892c1
Compare
@anagainaru you can
I will do the backport to master later. You can add me as co-author by writing the commits message |
@anagainaru I added the new image with Kokkos 3.7, please amend last commit and push to trigger the CI pipeline. |
nevermind, it was re-trigered |
417fa73
to
01ad13e
Compare
01ad13e
to
9e2b398
Compare
4aaa5f2
to
ef37b5e
Compare
@vicentebolea I think this is ready to merge, let me know if you think otherwise |
ef37b5e
to
ca758cf
Compare
…ive at a given time
Co-authored-by: Vicente Bolea <vicente.bolea@kitware.com>
…lication is using
ca758cf
to
f30714f
Compare
Kokkos backend in ADIOS2
This PR contains several things that allows for ADIOS2 to have either a CUDA or a KOKKOS backend
MemorySpace
can only be: Detect, Host or GPU and based on what is enabled in ADIOS2 (CUDA or Kokkos) we use specific functions. We have an environmental variableADIOS2_HAVE_GPU_SUPPORT
will be true if any GPU backend is activated.ADIOS2_HAVE_CUDA
orADIOS2_HAVE_Kokkos_CUDA
are true.All GPU related functions have been moved so they are all stored in
adios2::helper::adios{BACKEND}
The GPU logic is moved as low as possible for MinMax (in
helper::adiosMath
andhelper::adiosMemeory
) so that we capture all configurations (RandomAccess, Spans, AOS, etc.)Option to build ADIOS2 with Kokkos and use the Kokkos backend (currently supported HIP and CUDA). This requires to build ADIOS2 with
CXX_STANDARD=17
so I modified the cmake file to be able to do that. I added a script to build ADIOS2 with Kokkos on Summit here: https://github.com/anagainaru/ADIOS2-addons/blob/main/GPUAware/ADIOS.kokkos/biuld-adios-kokkos-summit.sh. I'll add something similar for Crusher, I'm not sure where to put these in the ADIOS2 repo (maybe in the documentation when I add it).