pub struct PlanPreference {
pub max_workspace_bytes: usize,
pub allow_sm90a: bool,
pub prefer_backend: Option<BackendKind>,
}Expand description
Hints that influence kernel selection inside a plan’s select
method.
The fields are intentionally generic across kernel families — each
op category may layer its own *PlanPreference wrapper on top
(e.g. GroupedPlanPreference adds grouped-specific knobs) that
embeds this struct.
Fields§
§max_workspace_bytes: usizeMaximum workspace the caller is willing to provide. The selector
only considers kernels whose workspace size for the descriptor
fits in this budget. Use usize::MAX to disable the constraint.
allow_sm90a: boolAllow Hopper-specialized (sm_90a) kernels in selection. Has no
effect when the sm90a feature is off in the underlying kernel
crate (no such kernels exist in the build).
prefer_backend: Option<BackendKind>Force a particular backend at plan-selection time, bypassing the plan’s built-in heuristic.
None (the default) lets the plan’s per-op-category heuristic
decide. Some(BackendKind::Cublas) / Some(BackendKind::Cutlass)
override the heuristic when a caller has profiling-driven
information the heuristic doesn’t have (or wants deterministic
kernel selection for golden-output testing).
Plans surface their actual choice through their sku() accessor —
inspect sku.backend to see what the heuristic picked.
Returns Error::Unsupported from select if the requested
backend doesn’t have a kernel for the requested
(layout, epilogue, element) triple. For example, the cuBLAS
backend doesn’t support EpilogueKind::BiasRelu (cuBLAS has no
fused-bias-activation GEMM); forcing it on a Bias* epilogue
returns an error rather than silently falling back to CUTLASS.
Trait Implementations§
Source§impl Clone for PlanPreference
impl Clone for PlanPreference
Source§fn clone(&self) -> PlanPreference
fn clone(&self) -> PlanPreference
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more