Conversation
| std::cout << "--n_refinements number of refinements (0-)" << std::endl; | ||
| std::cout << "--fe_degree polynomial degree (1-)" << std::endl; | ||
| std::cout << "--print_timings name of benchmark (0, 1)" << std::endl; | ||
| std::cout << "--resource name of resource (e.g., /cpu/self/avx/blocked)" << std::endl; |
There was a problem hiding this comment.
@jeremylt I am wondering whether it is possible to extract the resource information from Kokkos and pass it to libCEED or what the best approach is to keep them in sync?
There was a problem hiding this comment.
All libCEED backends can accept CPU pointers for vectors, so what we do in PETSc is
-
Create the user requested libCEED backend
-
Request the preferred memory space (CEED_MEM_HOST or CEED_MEM_DEVICE) of this libCEED backend
-
Set PETSc to use the requested memory space
I think a simpler version of this could be to request the libCEED backend's preferred memory space and hand off pointers in that memory space.
libCEED/examples/petsc/multigrid.c
Line 111 in e4483ef
|
I will update this PR. By now, we also support vectorial elements and overintegration. |
|
I would like to help with this as I have time. Which branch in deal.II does this use? |
|
@jeremylt I have updated the code so that it compiles with dealii/master. It also works now for all BPs (new: vectorial elements, overintegration, diagonal preconditioner). I have not rebased on libCEED/main. If you agree with the direction, could I ask you to take over? |
|
To understand the difference of the two programs, |
|
Yea, I can work on this some now, thanks for the update! |
|
Unfortunately, I haven't made any progress on this yet, as I usually only have about a day available at a time and that's usually spent fighting KOKKOS to get Deal.II to build correctly, but I'm still trying |
|
Ok, finally my build is cooperating, so I'll start fixing the issues in my branch tomorrow! |
As suggested in #1436 (comment), this PR adds a deal.II example using Kokkos. The matrix-free infrastructure in deal.II that uses Kokkos is not as mature so that I only run BP1 (without overintegration) and BP5.