#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum InterpolationStrategy {
GpuPrimary,
GpuThenParallel,
Parallel,
Cpu,
}
#[must_use]
pub const fn should_use_gpu(measurement_count: usize, estimated_output_points: usize) -> InterpolationStrategy {
if measurement_count >= 5_000_000 || estimated_output_points >= 2_500_000 {
return InterpolationStrategy::GpuPrimary;
}
if measurement_count >= 1_000_000 || estimated_output_points >= 500_000 {
return InterpolationStrategy::GpuThenParallel;
}
if measurement_count >= 50_000 || estimated_output_points >= 50_000 {
return InterpolationStrategy::GpuThenParallel;
}
if measurement_count >= 1_000 || estimated_output_points >= 1_000 {
return InterpolationStrategy::Cpu;
}
if measurement_count >= 100 || estimated_output_points >= 100 {
return InterpolationStrategy::GpuThenParallel;
}
InterpolationStrategy::Cpu
}