Use Kokkos:Parallel in SmootherTake and Prepare COO/CSR Matrix#239
Use Kokkos:Parallel in SmootherTake and Prepare COO/CSR Matrix#239julianlitz wants to merge 21 commits into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #239 +/- ##
==========================================
+ Coverage 90.72% 90.80% +0.08%
==========================================
Files 86 86
Lines 9473 9556 +83
==========================================
+ Hits 8594 8677 +83
Misses 879 879 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@EmilyBourne If you think that *innerBoundaryMatrix_ptr doesnt work on GPU, then we probably need to delete my custom matrix copy constructor/assignment of the Coo/Csr matrix. |
I'm already working on this. I renamed to |
|
I think its better to mark the copy constructor as = delete so we dont mess things up |
That was my first step. But it is impossible to delete the copy constructor and have things working on GPU as it is used to copy data to the GPU |
|
Ah yes you are right |
|
@EmilyBourne Claude suggested that the issue was the use of the member Vector instead of AllocatableVector. I think that in
we need to use AllocatableVector as the private member. "Why Kokkos The problem was the The Switching the private members to removes the |
I disagree with Claude. KOKKOS_DEFAULTED_FUNCTION BatchedTridiagonalSolver(const BatchedTridiagonalSolver&) = default;should be sufficient to create a |
EmilyBourne
left a comment
There was a problem hiding this comment.
I've just noticed something that I missed in #162. You are using KOKKOS_LAMBDA in non-static class functions. This will not work on GPU.
See https://kokkos.org/kokkos-core-wiki/API/core/macros-special/host_device_macros.html#kokkos-lambda
When creating lambdas inside of class member functions you may need to use KOKKOS_CLASS_LAMBDA instead.
The copy-constructor also needs to be marked with KOKKOS_DEFAULTED_FUNCTION
|
This PR is probably outdated: Use kokkos class lambdas instead of static inlining everything which is more effort than continue using the global member functions. |
|
I would recommend to start a new pr from the current main state. |
It is currently up to date with the
If you prefer the class lambda strategy we can use this but we need to beware of having addressable functions (this is the cause of the current compiler failure). |
Merge Request - GuideLine Checklist
Guideline to check code before resolve WIP and approval, respectively.
As many checkboxes as possible should be ticked.
Checks by code author:
Always to be checked:
If functions were changed or functionality was added:
If new functionality was added:
If new third party software is used:
If new mathematical methods or epidemiological terms are used:
Checks by code reviewer(s):