Skip to main content

execute_with_fallback

Function execute_with_fallback 

Source
pub fn execute_with_fallback<T, GpuFn, CpuFn>(
    config: &FallbackConfig,
    gpu_op: GpuFn,
    cpu_op: CpuFn,
) -> GpuResult<FallbackResult<T>>
where GpuFn: FnOnce() -> GpuResult<T>, CpuFn: FnOnce() -> T,
Expand description

Execute gpu_op and, if it returns a fallback-triggering error, run cpu_op instead.

§Behaviour

GPU resultconfig.enabledAction
Ok(v)anyreturn FallbackResult { value: v, path: Gpu }
fallback-triggering errortrueinvoke cpu_op, return Cpu path
fallback-triggering errorfalsepropagate the GPU error
non-fallback erroranypropagate the GPU error unchanged

§Examples

use oxigdal_gpu::cpu_fallback::{FallbackConfig, ExecutionPath, execute_with_fallback};
use oxigdal_gpu::GpuError;

let cfg = FallbackConfig::default();
let result = execute_with_fallback(
    &cfg,
    || Err::<u32, GpuError>(GpuError::device_lost("test")),
    || 42_u32,
).unwrap();

assert_eq!(result.value, 42);
assert_eq!(result.path, ExecutionPath::Cpu);