Autotuner Module
The helion.autotuner
module provides automatic optimization of kernel configurations.
Configuration Classes
Config
- class helion.runtime.config.Config(*, block_sizes=None, loop_orders=None, flatten_loops=None, l2_groupings=None, reduction_loops=None, range_unroll_factors=None, range_warp_specializes=None, range_num_stages=None, range_multi_buffers=None, range_flattens=None, static_ranges=None, num_warps=None, num_stages=None, pid_type=None, indexing=None, **kwargs)[source]
- Parameters:
- __init__(*, block_sizes=None, loop_orders=None, flatten_loops=None, l2_groupings=None, reduction_loops=None, range_unroll_factors=None, range_warp_specializes=None, range_num_stages=None, range_multi_buffers=None, range_flattens=None, static_ranges=None, num_warps=None, num_stages=None, pid_type=None, indexing=None, **kwargs)[source]
Initialize a Config object.
- Parameters:
block_sizes (
list
[int
] |None
) – Controls tile sizes for hl.tile invocations.loop_orders (
list
[list
[int
]] |None
) – Permutes iteration order of tiles.l2_groupings (
list
[int
] |None
) – Reorders program IDs for L2 cache locality.reduction_loops (
list
[int
|None
] |None
) – Configures reduction loop behavior.range_unroll_factors (
list
[int
] |None
) – Loop unroll factors for tl.range calls.range_warp_specializes (
list
[bool
|None
] |None
) – Warp specialization for tl.range calls.range_num_stages (
list
[int
] |None
) – Number of stages for tl.range calls.range_multi_buffers (
list
[bool
|None
] |None
) – Controls disallow_acc_multi_buffer for tl.range calls.range_flattens (
list
[bool
|None
] |None
) – Controls flatten parameter for tl.range calls.static_ranges (
list
[bool
] |None
) – Whether to use tl.static_range instead tl.range.num_stages (
int
|None
) – Number of stages for software pipelining.pid_type (
Optional
[Literal
['flat'
,'xyz'
,'persistent_blocked'
,'persistent_interleaved'
]]) – Program ID type strategy (“flat”, “xyz”, “persistent_blocked”, “persistent_interleaved”).indexing (
Optional
[Literal
['pointer'
,'tensor_descriptor'
,'block_ptr'
]]) – Indexing strategy (“pointer”, “tensor_descriptor”, “block_ptr”).**kwargs (
object
) – Additional user-defined configuration parameters.
Search Algorithms
The autotuner supports multiple search strategies:
Differential Evolution
- class helion.autotuner.differential_evolution.DifferentialEvolutionSearch(kernel, args, population_size=40, num_generations=20, crossover_rate=0.8, immediate_update=None)[source]
A search strategy that uses differential evolution to find the best config.
- Parameters:
Random Search
- class helion.autotuner.random_search.RandomSearch(kernel, args, count=1000)[source]
Implements a random search algorithm for kernel autotuning.
This class generates a specified number of random configurations for a given kernel and evaluates their performance.
- Inherits from:
FiniteSearch: A base class for finite configuration searches.
- kernel
The kernel to be tuned.
- Type:
BoundKernel