pub struct AlgorithmSelector { /* private fields */ }Expand description
The main entry point for cuBLASLt-style algorithm selection.
An AlgorithmSelector is constructed for a specific GPU architecture and
pre-populates a catalogue of known GEMM algorithm variants. Users can then
enumerate compatible algorithms, query heuristics, or let the selector
auto-pick the best candidate.
Implementations§
Source§impl AlgorithmSelector
impl AlgorithmSelector
Sourcepub fn new(sm_version: SmVersion) -> Self
pub fn new(sm_version: SmVersion) -> Self
Creates a new selector targeting the given SM architecture.
The selector is pre-populated with a set of built-in algorithm variants covering SIMT, Tensor Core, skinny, split-K, stream-K, warp-specialized, and bandwidth-limited categories.
Sourcepub fn enumerate_algorithms(&self, problem: &GemmProblem) -> Vec<AlgorithmId>
pub fn enumerate_algorithms(&self, problem: &GemmProblem) -> Vec<AlgorithmId>
Enumerates all algorithms compatible with the given problem.
An algorithm is compatible if:
- The problem dimensions are non-zero.
- The problem’s math mode allows the algorithm’s compute path.
- Architecture-specific requirements are met (e.g., Tensor Core needs
MathMode::TensorCoreand an eligible type).
Sourcepub fn get_heuristic(
&self,
algo_id: &AlgorithmId,
problem: &GemmProblem,
) -> BlasResult<AlgorithmHeuristic>
pub fn get_heuristic( &self, algo_id: &AlgorithmId, problem: &GemmProblem, ) -> BlasResult<AlgorithmHeuristic>
Returns a performance heuristic for a specific algorithm on the given problem.
§Errors
Returns BlasError::InvalidArgument if the algorithm ID is not
found in the selector’s catalogue.
Sourcepub fn select_best(&self, problem: &GemmProblem) -> BlasResult<AlgorithmId>
pub fn select_best(&self, problem: &GemmProblem) -> BlasResult<AlgorithmId>
Automatically selects the best algorithm for the given problem.
Evaluates heuristics for all compatible algorithms and returns the one with the highest composite score.
§Errors
Returns BlasError::UnsupportedOperation if no compatible algorithm
is found.
Sourcepub fn select_top_n(
&self,
problem: &GemmProblem,
n: usize,
) -> Vec<(AlgorithmId, AlgorithmHeuristic)>
pub fn select_top_n( &self, problem: &GemmProblem, n: usize, ) -> Vec<(AlgorithmId, AlgorithmHeuristic)>
Returns the top N algorithms for the given problem, ranked by heuristic score (descending).
If fewer than n algorithms are compatible, returns all of them.
Sourcepub fn create_custom(
&mut self,
config: AlgorithmConfig,
problem: &GemmProblem,
) -> BlasResult<AlgorithmId>
pub fn create_custom( &mut self, config: AlgorithmConfig, problem: &GemmProblem, ) -> BlasResult<AlgorithmId>
Creates a custom algorithm with user-specified configuration.
The configuration is validated against the problem dimensions.
§Errors
Returns BlasError::InvalidArgument if the configuration is invalid.
Sourcepub fn algorithm_count(&self) -> usize
pub fn algorithm_count(&self) -> usize
Returns the number of registered algorithms.
Sourcepub fn sm_version(&self) -> SmVersion
pub fn sm_version(&self) -> SmVersion
Returns the target SM version.