-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Kokkos Function System #31653
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
base: next
Are you sure you want to change the base?
Kokkos Function System #31653
Conversation
c76eb6e to
2f65c74
Compare
|
@lindsayad My next thing to look into would be this. I will start from functions. Do you have any thoughts on this? |
|
If we use virtuals, should we consider just adapting the current functor system? |
|
The problem with that is we can't construct MOOSE objects directly on device. If an object that has virtual methods is constructed on host, the vtable will be populated with host function pointers. What I'm trying to do here is to define a thin wrapper that has virtual methods and is light enough to be built on device, and let the wrapper call the wrapped functor methods statically. |
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.
I think this looks ok to me
2f65c74 to
3a865ff
Compare
|
Still working... just want to run test suite once |
c723295 to
68df514
Compare
|
Job Documentation, step Docs: sync website on f9d7ff6 wanted to post the following: View the site here This comment will be updated on new commits. |
|
Job Coverage, step Generate coverage on f9d7ff6 wanted to post the following: Framework coverage
Modules coverageCoverage did not change Full coverage reportsReports
This comment will be updated on new commits. |
||||||||||||||||||||||||||
2d9d24b to
977be17
Compare
|
going to unsubscribe for now. Mention me when you want more input or it's ready for review |
|
@lindsayad I might have to hold this. Virtual functions on device seem to require RDC to be fully functional. |
977be17 to
6e2a5af
Compare
|
The code is currently in a state where CUDA will work when we have RDC. |
6e2a5af to
ca47cdc
Compare
|
I don't want to indefinitely hold this PR for RDC. I will temporarily disable using virtual dispatch for GPU. |
ca47cdc to
cddc8c9
Compare
cddc8c9 to
f9d7ff6
Compare
|
Job Test, step Results summary on f9d7ff6 wanted to post the following: Framework test summaryCompared against 4e5abd1 in job civet.inl.gov/job/3352081. Removed testsAdded tests
Run time changesModules test summaryCompared against 4e5abd1 in job civet.inl.gov/job/3352081. Removed testsAdded testsRun time changes |
Refs #30655.
Functors are not dispatched but plugged inside the user's parallel code, so I can't think of a way to achieve static polymorphism here. I think I will have to introduce virtual functions minimally in the wrapper class, but any idea to avoid it would be welcome, if you have any. Of course, if the user specifies the exact object type instead of using the abstract type, they will be able to evaluate functors statically.
Concerns are performance and SYCL, but regarding SYCL, Intel is adding an extension to allow virtual functions on GPU. We may be able to leverage it when the time comes to support SYCL. I don't think we are interested in supporting SYCL for backends other than Intel GPU.