tuning-flydsl

Tune FlyDSL kernel configs on AMD Instinct GPUs and race them against other backends.

178|52|Updated Jul 30, 2025
One-click install
npx skills add https://github.com/AMD-AGI/GEAK --skill tuning-flydsl-amd-agi
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: tuning-flydsl
Source: https://github.com/AMD-AGI/GEAK/tree/main/perf_knowledge/expert_skills/tuning/tuning-flydsl
Command: npx skills add https://github.com/AMD-AGI/GEAK --skill tuning-flydsl-amd-agi

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? FlyDSL kernels on AMD Instinct GPUs ship with default configs that leave performance on the table, and misconfigured autotune keys or config spaces silently produce wrong or slow kernels. This Skill guides you through building a correct FlyDSL config space, setting the autotune key, pruning candidates, and racing FlyDSL against hipBLASLt, CK, Triton, and torch via aiter's libtype mechanism. ## Core Features & Use Cases - Config space authoring: Build flydsl.Config spaces covering tile sizes, split-K factors, async copy, and LDS staging, with the key API divergences from Triton (e.g. waves_per_eu as a keyword) called out explicitly. - Autotune key correctness: Ensure the key names every dimension the kernel tiles or branches on, avoiding silent reuse of configs tuned for the wrong shape (measured at 3.75x slowdown). - Backend racing: Use aiter's gemm_tuner.py to race FlyDSL against hipBLASLt, Triton, CK, and torch per shape, with results recorded in a libtype column. - Use Case: You have a bf16 GEMM serving both prefill and decode on a gfx950 box. Use this Skill to split the config space by regime, add split-K factors, prune analytically, and confirm whether FlyDSL actually wins against the vendor libraries before committing to it. ## Quick Start Ask the agent to tune the FlyDSL kernel for your target shape on the current AMD GPU, building a pruned config space and racing it against the other aiter backends.

Frequently Asked Questions about tuning-flydsl

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I tune FlyDSL kernels on AMD GPUs?

Author a flydsl.Config search space with tile sizes, split-K factors, async copy, and LDS staging options, then let flydsl.autotune race the candidates per key tuple. Prune the space analytically with prune_configs_by and split spaces by regime such as prefill versus decode.

What is the difference between FlyDSL and Triton autotune configs?

FlyDSL accepts waves_per_eu as a Config keyword while Triton only takes it in the positional dict and raises TypeError for the keyword form. FlyDSL also lacks num_stages as a Config field, so porting config lists between frameworks by search-and-replace produces silently different kernels.

How do I race FlyDSL against hipBLASLt and Triton in aiter?

Run aiter's gradlib/gemm_tuner.py with an input CSV of shapes and a tuned output file. It races FlyDSL against hipBLASLt, Triton, CK, and torch and records the winning backend per shape in a libtype column; put the dtype in the input CSV rather than using --indtype.

Does a tuned FlyDSL config transfer between gfx942 and gfx950?

No. FlyDSL kernel names bake the target architecture into the artifact, so a config tuned on gfx950 does not serve gfx942. Re-tune per architecture, and expect the winning tile and split-K choices to shift because CU counts differ between the devices.

Why does my FlyDSL kernel run slow on decode shapes after tuning?

The autotune cache key likely omits a dimension the kernel tiles on, so an M=1 decode call reuses a config tuned at large M. Name every tiled or branched dimension in the key, and race a decode-shaped config space rather than a general one.