9 / 20 · Concetto
Flusso con uscite stazionarie e altri flussi di dati
Confronta memorizzazione e trasporto identificando ciò che rimane nel PE.
Le lezioni sono gratuite. Iscriviti per salvare i progressi.
Chiediti quale valore rimane locale
Un array sistolico esegue lavoro parallelo mentre gli operandi si muovono tra elementi di elaborazione vicini. «Stazionario» descrive un valore conservato localmente per essere riutilizzato durante un calcolo. Scelte diverse modificano i registri dei PE, i percorsi delle somme parziali e la pianificazione al confine anche quando l'operazione matematica è identica.
Nel progetto con uscite stazionarie di questo corso, PE(i,j) mantiene la somma parziale di C(i,j). A e B si muovono mentre k avanza. Dopo l'arrivo di tutti i K termini, il risultato viene raccolto; clear avvia un nuovo blocco di uscita. I valori A vengono riutilizzati lungo una riga e i valori B lungo una colonna. Nell'esempio 2×2, A(0,0)=1 contribuisce sia a C(0,0) sia a C(0,1).
I progetti con pesi stazionari precaricano pesi come B nei PE e li riutilizzano tra le attivazioni in arrivo. Le somme parziali devono muoversi o essere raccolte altrove. Rinominare le porte non trasforma il controllore OS in WS: cambiano valore memorizzato, sequenza di precaricamento e percorso del risultato. I progetti con ingressi stazionari conservano le attivazioni per riutilizzarle con pesi o calcoli di uscita diversi. Confrontiamo questa idea senza implementare qui un array IS.
| Flusso dei dati | Valore mantenuto | Costo da esaminare |
|---|---|---|
| OS | Somma parziale di uscita | Accumulatori larghi e raccolta dei risultati |
| WS | Peso | Precaricamento e trasporto/memorizzazione delle somme parziali |
| IS | Attivazione | Fornitura dei pesi e combinazione delle somme di uscita |
Mantieni separate tre misure del traffico
Considera due prodotti 2×2 che usano la stessa B. Il nostro modello al confine OS fornisce quattro valori A e quattro B per lavoro: sedici valori di operandi nei due lavori. Un buffer B locale può evitare di rileggere B dalla memoria esterna per il secondo lavoro, pur fornendo ancora i suoi quattro token al confine. Il riuso dei pesi precaricati offre un compromesso diverso e richiede un diverso percorso delle somme parziali.
Letture esterne, inserimenti al confine e trasferimenti tra PE sono misure separate. Il README Gemmini dell'UC Berkeley fornisce un esempio da fonte primaria di flussi OS e WS configurabili. Il nostro array didattico ha un proprio contratto e non riproduce l'implementazione o l'interfaccia di istruzioni di Gemmini.
Per una revisione del progetto, identifica ciò che rimane locale, dove si accumulano le somme e quali valori attraversano ogni confine. Il riuso da solo non garantisce porte di memoria adeguate o throughput sostenuto.
Prova tu
Due lavori 2×2 condividono B mantenuta in un buffer locale. A non viene riutilizzata. Quante letture esterne di operandi e quanti inserimenti al confine OS occorrono?
Leggi la spiegazione
Le letture esterne totalizzano 12 valori: due matrici A da quattro più una matrice B da quattro. Gli inserimenti al confine totalizzano 16 valori: quattro A più quattro B per lavoro. Scritture dei risultati e inoltro interno sono esclusi.