There are a ton of recent bugs found which are due to us silently falling back on RTC compilation failure for CUDA/HIP.
While this silent fallback is generally good for user-facing code, we need a way to make that error loud during CI testing for tests that should not fall back.
I think the easiest way would be to have a CeedSetWarnOperatorFallback(Ceed ceed, bool should_warn) (or similar) function which turns the normally silent (CeedDebug) fallback messages into loud (printf) fallback messages. We could also make it more specific, say CeedSetWarnJiTCompilationFailures, which is really the case we most often care about.
There's a couple edge cases we need to be careful about, such as CeedOperatorLinearAssembleDiagonal and CeedOperatorLinearAssembleSingle which intentionally fall back to the reference implementation, then use the fallback parent implementation of the inner CeedOperatorLinearAssembleQFunctionBuildOrUpdate kernel.
There are a ton of recent bugs found which are due to us silently falling back on RTC compilation failure for CUDA/HIP.
While this silent fallback is generally good for user-facing code, we need a way to make that error loud during CI testing for tests that should not fall back.
I think the easiest way would be to have a
CeedSetWarnOperatorFallback(Ceed ceed, bool should_warn)(or similar) function which turns the normally silent (CeedDebug) fallback messages into loud (printf) fallback messages. We could also make it more specific, sayCeedSetWarnJiTCompilationFailures, which is really the case we most often care about.There's a couple edge cases we need to be careful about, such as
CeedOperatorLinearAssembleDiagonalandCeedOperatorLinearAssembleSinglewhich intentionally fall back to the reference implementation, then use the fallback parent implementation of the innerCeedOperatorLinearAssembleQFunctionBuildOrUpdatekernel.