Altifigence Academy

9 / 20 · Concetto

Flusso con uscite stazionarie e altri flussi di dati

Confronta memorizzazione e trasporto identificando ciò che rimane nel PE.

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 datiValore mantenutoCosto da esaminare
OSSomma parziale di uscitaAccumulatori larghi e raccolta dei risultati
WSPesoPrecaricamento e trasporto/memorizzazione delle somme parziali
ISAttivazioneFornitura 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.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.