The following is a high-level overview of this manager and the concept of a heuristic.
The heuristic manager maintains a list of heuristics that may be applied to a matrix at run-time.
A heuristic implements a "strategy" for optimizing a given input matrix, and is generally specific to a particular kernel and/or matrix type. Each heuristic must implement the public interface in heurexport.h . Among other things, these routines allow the OSKI library to ask each heuristic whether it applies to a given input matrix, or to ask approximately how much the heuristic costs (in units of naive SpMV operations).
When the user calls oski_TuneMat, the library determines how much time may be used for tuning, and then uses the procedure described in src/tune.c to apply the various heuristics, one-by-one, until either the time remaining for tuning elapses or a heuristic can be applied.
New heuristics may be registered with the library at run-time via a call to oski_RegisterHeur.
Files | |
file | estfill.h |
BCSR fill ratio estimator. | |
file | mregblock.h |
Implementation of the register blocking heuristic based on modified block compressed sparse row (MBCSR) format. | |
file | regblock.h |
Implementation of the basic register blocking heuristic for sparse matrix-vector multiply (as described in the Sparsity SC'02 and IJHPCA'04 papers), based on block compressed sparse row format. | |
file | symmrb.h |
Implementation of the register blocking heuristic for symmetric matrices, as described in the paper by Lee, et al., in ICPP'04, but extended to the Symmetric or Hermitian cases and based on MBCSR format. | |
file | heur.h |
Heuristic management module. | |
file | heur_internal.h |
Heuristic management module. | |
file | heur_typedep.h |
Matrix type-dependent part of the heuristic module. | |
file | heurexport.h |
Matrix type-dependent part of the heuristic management module. | |
file | hint.h |
Set-hint routines. | |
file | tune.h |
Tuning interface. | |
file | estfill.c |
BCSR fill ratio estimator. | |
file | hint.c |
Implementation of hint tracking for the tuning module. | |
file | structhint.c |
Implementation of structural tuning hint data structure. | |
file | tune.c |
Tuning module implementation. | |
file | xforms.c |
Save/restore tuning transformations. | |
Modules | |
Offline Benchmarking Utilities | |
These executable programs benchmark various aspects of the library for run-time tuning. | |
Permutations | |
These routines allow the user to access underlying matrix row and column permutations, as well as a permuted form of the matrix, in the special case that tuning produces a permuted representation. |