Files
tilelang/testing/python/autotune
53f195c476 [Enhance] Reject default scalar params and support do_not_specialize for autotune (#2084)
* [Refactor] Enhance Producer-Consumer WS Transformation

- Introduced a new utility function `ExprUsesAnyVar` to check variable usage in expressions.
- Updated `BuildWSBlock` to collect enclosing loops for better context in transformations.
- Modified global linear index calculations to account for nested loops.
- Enhanced phase counter logic to handle non-rectangular loop nests.
- Added functionality to hoist workspace branches out of loops for improved performance.
- Implemented `CollectEnclosingForLoops` to facilitate loop ancestry collection.
- Refactored related methods to accommodate new logic and ensure correctness in transformations.

* Fix nested warp-specialized pipeline sync

* lint

* Reject autotune default scalar inputs

* [Autotune] Defer scalar input validation and add do_not_specialize option

- Move _validate_input_supply_requirements from __call__ into run(),
  after the "tunable parameters already provided" check. This prevents
  spurious errors when all tunable params are supplied by the caller
  and the autotuner skips profiling entirely (fixes test_example_mha_fwd_varlen).

- Add `do_not_specialize` parameter to @autotune decorator. Parameters
  listed here are excluded from the autotune cache key, so changing
  their values reuses the previously tuned configuration instead of
  triggering re-autotuning.

  Usage:
    @autotune(configs=get_configs(), do_not_specialize=["batch_size", "UQ"])
    @tilelang.jit
    def kernel(batch_size, UQ, ...):
        ...

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Revert unrelated WS changes from autotune PR

* Remove CPU count logging and related calculations from AutoTuner class in tuner.py

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: LeiWang1999 <leiwang1999@outlook.com>
2026-05-20 14:53:48 +08:00
..