Altifigence Academy

7 / 20 · Concetto

Flag valid, tag e svuotamento

Distingui zero numerico, bolle e token appartenenti a un altro lavoro.

Un token trasporta più di un numero

Il nostro token di riferimento contiene value, valid, job e k. Un token non valido è una bolla. Un token valido con valore zero è un vero operando della matrice. Job identifica la transazione; k identifica il termine di riduzione. Il cablaggio fissa la riga A e la colonna B per ogni PE, mentre il wrapper ricorda le coordinate dei blocchi.

Quando entrambi gli ingressi sono validi, verifica che i tag job e k siano uguali prima di moltiplicare. A(0,1)=2 accoppiato con B(0,0)=5 produce dieci, ma non è un termine legittimo. La coppia corrispondente k=1 è due e sette, che produce quattordici. Tratta una differenza di tag come errore di verifica visibile anziché scartarla silenziosamente come una normale bolla.

Conta i termini, non i clock

Clear avvia acc=0 e count=0. Per ogni coppia corrispondente, richiedi k=count, poi incrementa count. Consumare k=K−1 completa il risultato locale immediatamente dopo quel fronte. Bolle e pause non incrementano count. Questo semplice controllore richiede valori k ordinati. Supportare un ordine arbitrario richiede una bitmap dei termini ricevuti e il rilevamento dei duplicati.

Per K=2, consumare uno e cinque dà acc=5, count=1. Una bolla lascia entrambi invariati. Consumare due e sette con k=1 dà acc=19, count=2 e done. Un k=1 ripetuto è un errore anche se un consumatore a valle ha già accettato il risultato.

Completamento del transito e azzeramento hanno scopi diversi

L'array non è vuoto quando entra l'ultimo ingresso al confine. Rimangono token nei registri interni di inoltro. Continua ad avanzare con ingressi al confine non validi finché l'ultimo PE consuma il proprio termine finale. Durante questo completamento del transito, conserva gli accumulatori completati finché i risultati vengono raccolti. Iniziare un nuovo lavoro richiede invece di azzerare insieme accumulatore, conteggio, valid e stato dei tag.

Il wrapper di questo corso esegue un lavoro alla volta. Completa, raccoglie i risultati, azzera, poi riparte. Sovrapporre lavori richiede stato o accumulatori aggiuntivi e un protocollo di uscita; i soli tag non forniscono questa capacità. Le prove devono includere tag diversi, termini mancanti e ripetuti, stato valid residuo dopo clear e operandi zero validi che incrementano comunque il conteggio dei termini.

Prova tu

Un PE con K=3 consuma la coppia k=0 (2,4), una bolla, la coppia k=1 (0,9) e la coppia k=2 (−1,3). Trova acc e count. Che cosa accade se il tag job finale non corrisponde?

Leggi la spiegazione

Con tag corrispondenti, acc=5 e count=3, quindi il risultato è completo. La bolla non conta; lo zero valido sì. Un job diverso deve causare un errore di verifica e non può essere riportato come completamento riuscito.

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