libCEED icon indicating copy to clipboard operation
libCEED copied to clipboard

Support non-tensor elements with `cuda/gen` backend.

Open YohannDudouit opened this issue 2 years ago • 13 comments

Try using dim == 1 for non-tensor basis to add support for non-tensor elements in the cuda/gen backend.

YohannDudouit avatar Jul 07 '22 21:07 YohannDudouit

Thanks for this.

So I'd expect this to be tested, but I see the noether-rocm test output is skipping the same number of tests from before https://gitlab.com/libceed/libCEED/-/pipelines/582787305/test_report image as the new https://gitlab.com/libceed/libCEED/-/pipelines/582875782/test_report image Does this make sense or should fewer tests be skipped? Cc: @jeremylt

jedbrown avatar Jul 13 '22 16:07 jedbrown

Oh, probably the issue above is that this change wasn't propagated to HIP (tested on Noether). Meanwhile, lv continuous to have stability issues and we're still waiting on a CUDA GPU for Noether to arrive, at which point we should have more reliable testing.

jedbrown avatar Jul 13 '22 19:07 jedbrown

@jedbrown I would need to work a bit more than that to make this work, it should be doable, but it is not ready (even for cuda-gen).

YohannDudouit avatar Jul 14 '22 17:07 YohannDudouit

Our CUDA CI should be reliable now. What would be needed to finish this branch, at least for cuda/gen?

jedbrown avatar Sep 06 '22 04:09 jedbrown

I think this might be easier to get to with #1050?

jeremylt avatar Sep 06 '22 14:09 jeremylt

Perhaps, but #1050 has possibly expansive scope so I don't know if it's feasible to finish for v0.11.

jedbrown avatar Sep 06 '22 16:09 jedbrown

How much is needed here now that #1050 has merged?

jedbrown avatar Nov 15 '22 19:11 jedbrown

I think a fair amount still needs to be done.

jeremylt avatar Nov 15 '22 19:11 jeremylt

So, the main issue is with the gradient, it's not just "1D" in that case, technically it's not much work, but it might be better to do something cleaner than this hack.

YohannDudouit avatar Nov 23 '22 23:11 YohannDudouit

With the refactor, we can now write and test the nontensor kernels for the shared backend and then incorporate them into the gen backend.

jeremylt avatar Nov 23 '22 23:11 jeremylt

@jeremylt If we follow this path we will still have to modify the gen backend, the "tensor" assumption is fairly hardcoded there a bit everywhere. I think the easiest would probably be to write a gen path for non-tensor operators (distinct from the current tensor path) using the non-tensor functions.

YohannDudouit avatar Nov 24 '22 00:11 YohannDudouit

Either way we need to write a new basis kernel. It seems simpler to test that on its own instead of testing the new kernel + the changes to the gen logic all at the same time.

jeremylt avatar Nov 24 '22 00:11 jeremylt

I totally agree.

YohannDudouit avatar Nov 24 '22 00:11 YohannDudouit