Progettazione RTL: acceleratori CNN
Impara l'indicizzazione della convoluzione e i contratti numerici interi, poi le finestre in streaming, l'associazione ai PE e la suddivisione in blocchi. Verifica un riferimento eseguibile e un piccolo percorso di inferenza separando valori, stime della pianificazione e traffico.
Che cosa imparerai
- Calcolare forme e indici della convoluzione inclusi passo, riempimento, dilatazione e canali
- Specificare unità a virgola fissa, scale, punti zero, larghezza dell'accumulatore, arrotondamento e saturazione
- Confrontare la convoluzione diretta con un modello di riferimento im2col
- Generare finestre con buffer di riga e accettazione dei trasferimenti che conservi lo stato in pausa
- Calcolare riuso dei PE, memoria dei blocchi, traffico e ipotesi di pianificazione
- Riportare risultati numerici e limiti delle prove per un piccolo percorso di inferenza
Prima di iniziare
Gli esercizi nel browser usano modelli didattici e non compilano né eseguono HDL. Per eseguire il codice separatamente, segui la guida Digital Design Studio del tuo sistema operativo e accedi quando l’operazione lo richiede.
Installazione e primo avvio ↗ · Download ↗Programma
- Il contratto di inferenza
- Inferenza e addestramentoConcetto
Se soltanto i canali di uscita aumentano da tre a sei, come cambiano il conteggio MAC e il numero di bias memorizzati?
- Convoluzione e correlazione incrociataConcetto
Quali sono i risultati di correlazione incrociata e kernel invertito per [1,2;4,5] con kernel [1,0;0,-1]?
- Forme, passo, riempimento e dilatazioneConcetto
Per H=7,R=3,passo 2,riempimento superiore 0,inferiore 1,dilatazione 2, calcola Ho e la coordinata di ingresso per h=1,r=2.
- Verifica: forma e conteggio MACVerifica
Usa N=1,C=2,H=W=5,M=3,un kernel 3×3,passo 2,riempimento uno su tutti i lati,dilatazione uno. Quali sono forma di uscita e conteggio MAC?
- Il contratto numerico
- Bit e unità della virgola fissaConcetto
Moltiplica 0.5 e −1.25 con F=4, poi aggiungi bias 0.25 con F=8. Quali sono codice dell'accumulatore e valore reale?
- Scala e punto zeroConcetto
Per sx=0.25,zx=128, quali sono il codice di riempimento e il valore reale di q=132? Quale codice del bias rappresenta 0.75 con sw=0.5?
- Larghezza dell'accumulatore, arrotondamento e saturazioneConcetto
Diciotto bit con segno sono sufficienti per nove prodotti int8 con segno e bias zero?
- Laboratorio: esegui il contratto di quantizzazioneEsercitazione
Quantizza −40 con le stesse impostazioni uint8. Quali sono il suo codice e il valore dequantizzato e quale asserzione aggiungeresti?
- Operatori di riferimento
- Riferimento di convoluzione direttaConcetto
Per ingressi [2,3], pesi [4,−1] e bias uno, quale risultato errato si ottiene se il bias viene aggiunto a ogni iterazione dei canali di ingresso?
- im2col e moltiplicazione di matriciConcetto
Per H=W=4,C=1 e un kernel 3×3 senza riempimento, calcola elementi di ingresso originali, P,K ed elementi delle patch espanse.
- Collegare ReLU e max poolingConcetto
Con punto zero di uscita uint8 100, applica ReLU e max pooling 2×2 a [98,103;101,97].
- Verifica: ordine di elaborazione dell'uscitaVerifica
Applica moltiplicatore 0.5,zy=0,arrotondamento al pari,saturazione int8,ReLU e max pooling 2×2 agli accumulatori [−1,2;3,−4]. Qual è il codice finale?
- Generazione di finestre in streaming
- Buffer di riga e finestre 3×3Concetto
Per W=8,H=6, calcola posizioni di memoria, indice del primo ingresso accettato valido e numero totale di finestre.
- Ready/valid e stato in stalloConcetto
Lo stadio di uscita mantiene A con out_ready=0 mentre l'ingresso B è valido. Che cosa devono fare stadio e produttore al fronte successivo?
- Laboratorio: finestre che resistono alle pauseEsercitazione
Se invece i cicli zero,uno,due sono in pausa e tutti gli ingressi vengono infine accettati, cambiano valori o numero delle finestre? Qual è il conteggio totale dei cicli?
- Verifica: temporizzazione della prima finestraVerifica
Un generatore 4×4, di larghezza quattro e finestre 3×3 senza riempimento non accetta ingressi nei primi quattro cicli, poi un pixel per ciclo. Quali sono indice di ingresso accettato e ciclo trascorso della prima finestra, entrambi da zero?
- Associazione ai PE e alla memoria
- PE, flusso dei dati e riuso dei MACConcetto
Associa P=3,M=2,K=8 a quattro PE con uscite stazionarie. Quali sono cicli MAC e utilizzo utile delle posizioni MAC, escludendo le scritture?
- Blocchi, aloni e somme parzialiConcetto
Per Th=Tw=2,Tc=1,Tm=2,un kernel 3×3,passo due,dilatazione uno, calcola i byte con buffer singolo di ingresso/pesi/somme a 32 bit/bias.
- Banda e limiti di calcoloConcetto
Per 1152 MAC e 224 byte, usa otto PE ma mantieni la banda a 0.5 byte/ciclo. Qual è il limite inferiore con sovrapposizione perfetta?
- Pianificazioni, code finali e doppio bufferingConcetto
Per K=10,quattro uscite,tre PE e un ciclo aggiuntivo per uscita, calcola cicli modellati e utilizzo dei soli MAC.
- Verifica e progetto finale misurabile
- Modelli di riferimento e classificazione degli erroriConcetto
Il riferimento [37,47;67,77] differisce da [38,48;68,78]. Che cosa esamineresti prima e che cosa registreresti?
- Laboratorio: metti alla prova i casi limiteEsercitazione
Nel caso di riempimento, sostituisci ogni peso del kernel con uno. Qual è la prima uscita e perché un test soltanto al centro è insufficiente?
- Progetto finale: piccolo percorso di inferenza e rapportoEsercitazione
Mantieni K=9,quattro uscite e un ciclo aggiuntivo per uscita ma usa tre PE. Quali sono cicli totali modellati e utilizzo delle posizioni dei soli MAC?
- Verifica finale: affermazioni e proveVerifica
L'esecuzione Node del progetto finale verifica accordo numerico, 36 MAC, un modello di pianificazione di 24 cicli e utilizzo delle posizioni MAC del 90%. Quale dichiarazione di completamento è accurata?