Srotolamento dei cicli a tempo di compilazione
Espanda i cicli con @parameter for.
Srotolamento dei cicli a tempo di compilazione è una lezione Mojo Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Mojo Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Mojo Academy include 4 lezioni in totale.
Cicli espansi dal compilatore
Lo srotolamento dei cicli consiste nello scrivere ogni iterazione come codice lineare, eliminando il sovraccarico del conteggio e dei salti del ciclo. ⚙️
Il decoratore @parameter for
Applichi @parameter a un ciclo for il cui intervallo è noto in fase di compilazione: Mojo lo srotolerà completamente invece di eseguirlo a runtime.
@parameter
for i in range(4):
print(i)Il limite deve essere statico
L'intervallo del ciclo deve essere un valore di fase di compilazione, così il compilatore sa esattamente quante copie del corpo generare.
alias N = 8
@parameter
for i in range(N):
process(i)L'indice diventa una costante
In un ciclo srotolato, l'indice è un vero parametro in ogni copia, quindi può essere utilizzato nei contesti in cui sono ammessi solo valori di fase di compilazione.
@parameter
for i in range(4):
arr[i] = i * iPerché srotolare i cicli?
Lo srotolamento elimina il salto e il lavoro del contatore a ogni iterazione, offrendo alla CPU una sequenza ordinata di istruzioni che può organizzare in pipeline in modo efficiente.
Si abbina a SIMD
I corpi srotolati alimentano spesso le operazioni SIMD, consentendo a ogni copia generata di gestire un gruppo di lane del vettore per ottenere il massimo throughput.
Indicizzare le lane SIMD
Un indice di fase di compilazione consente di raggiungere singole lane di un vettore SIMD, cosa che una variabile di ciclo a runtime non può sempre fare.
@parameter
for i in range(4):
total += vec[i]Codice più grande, esecuzioni più veloci
Lo srotolamento scambia un binario più grande con un numero inferiore di istruzioni eseguite: un compromesso vantaggioso nei cicli interni critici eseguiti milioni di volte.
Non srotoli tutto
Riservi lo srotolamento ai piccoli cicli interni critici. Srotolare intervalli molto grandi gonfia il codice e può peggiorare le prestazioni della cache delle istruzioni.
Uno strumento di fase di compilazione
@parameter for è puro metaprogramming: il ciclo non esiste mai a runtime, perché il compilatore lo ha già espanso in codice lineare. 🚀
Abbinarlo alle costanti
Definisca il limite con un alias, così un'unica costante denominata determina il numero di iterazioni srotolate, mantenendo il codice chiaro e facile da ottimizzare nuovamente in seguito.
alias TILE = 4
@parameter
for i in range(TILE):
work(i)Verifica rapida
Ricordi che cosa fa @parameter a un ciclo for.
Riepilogo
@parameter for srotola in fase di compilazione i cicli con limite statico: l'indice diventa una costante, il sovraccarico scompare e i cicli critici vengono eseguiti più velocemente. 🎯
Domande Frequenti
La lezione «Srotolamento dei cicli a tempo di compilazione» è gratuita?
Sì — il testo completo di «Srotolamento dei cicli a tempo di compilazione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Mojo Academy, passa a CoddyKit PRO. Il corso Mojo Academy include 4 lezioni in totale.
Cosa imparerò in «Srotolamento dei cicli a tempo di compilazione»?
Espanda i cicli con @parameter for. Eserciti Mojo Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Mojo Academy?
Non è richiesta alcuna esperienza precedente. Mojo Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Srotolamento dei cicli a tempo di compilazione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Mojo Academy?
Sì. Ogni lezione Mojo Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Algoritmi parametrici
- Srotolamento dei cicli a tempo di compilazione
- Compilazione condizionale
- Vincoli e controlli statici