Parametrizando bloco e largura
Exponha controles ajustáveis como parâmetros.
Parametrizando bloco e largura é uma aula grátis de Mojo Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Mojo Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Mojo Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Knobs Must Be Parameters
To let autotuning vary a value, it has to be a compile-time parameter, not a plain runtime variable. Parameters can be specialized per candidate.
Tile Size as a Knob
A tile size controls how big a block of work you process at once. Make it a parameter and the tuner can try 16, 32, 64, and more.
fn process[tile: Int]():
passWidth as a Knob
SIMD width sets how many numbers you crunch per instruction. Different chips favor different widths, so expose it as a parameter too.
fn run[width: Int]():
passDeclaring the Parameters
Put tunable values inside the function's bracket list. Each entry becomes a knob the autotuner is allowed to change.
fn kernel[tile: Int, width: Int]():
passUse Them Inside
Inside the body, treat the parameter like a constant. The compiler bakes its value in for each specialized version it builds.
fn step[tile: Int]() -> Int:
return tile * 2Sensible Ranges
Pick candidate values that make hardware sense: powers of two like 8, 16, 32 for width, and cache-friendly blocks for tile size.
Keep Knobs Independent
Each knob should mean one clear thing. Tangled parameters make the search confusing and the results hard to explain.
Validate with Constraints
Use a constraint to reject impossible combinations early, so the tuner never wastes time building candidates that cannot work.
constrained[width > 0]()Defaults Still Help
Give each parameter a reasonable default. Code stays usable without tuning, and the search starts from a known-good baseline.
fn kernel[tile: Int = 32]():
passMore Knobs, Bigger Space
Every extra parameter multiplies the candidates to test. Expose the few knobs that truly matter, not every number you can find.
Now It Is Tunable
With tile and width as parameters, your kernel is ready: the autotuner has clear dials to turn while searching for peak throughput. 🔧
Quick Check
Confirm what makes a value tunable by the autotuner.
Recap
You exposed tile and width as compile-time parameters, added a constraint and defaults, and gave the autotuner clean dials to turn. 🎯
Perguntas Frequentes
A aula “Parametrizando bloco e largura” é grátis?
Sim — o texto completo de “Parametrizando bloco e largura” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Mojo Academy, atualize para CoddyKit PRO. O curso de Mojo Academy inclui 4 aulas no total.
O que vou aprender em “Parametrizando bloco e largura”?
Exponha controles ajustáveis como parâmetros. Você pratica Mojo Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Mojo Academy?
Nenhuma experiência prévia é necessária. Mojo Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Parametrizando bloco e largura”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Mojo Academy?
Sim. Cada aula de Mojo Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O que o ajuste automático resolve
- Parametrizando bloco e largura
- Pesquisando o espaço de parâmetros
- Fixando a melhor configuração