7 / 20 · Konzept
Gültigkeitsflags, Tags und Leeren
Unterscheiden Sie numerische Null, Leerstellen und Tokens eines anderen Auftrags.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
Ein Token enthält mehr als eine Zahl
Unser Referenztoken enthält value, valid, job und k. Ein ungültiges Token ist eine Leerstelle. Ein gültiges Token mit Wert Null ist ein echter Matrixoperand. Job identifiziert die Transaktion, k den Reduktionsterm. Die Verdrahtung legt für jedes PE die A-Zeile und B-Spalte fest, während die Hülle die Kachelkoordinaten festhält.
Sind beide Eingaben gültig, prüfen Sie vor der Multiplikation die Gleichheit der job- und k-Tags. A(0,1)=2 gepaart mit B(0,0)=5 ergibt zehn, ist aber kein zulässiger Term. Das passende Paar für k=1 besteht aus zwei und sieben und ergibt vierzehn. Behandeln Sie eine Tag-Abweichung als sichtbaren Verifikationsfehler, statt sie still als gewöhnliche Leerstelle zu verwerfen.
Terme zählen, nicht Takte
Löschen beginnt mit acc=0 und count=0. Fordern Sie für jedes passende Paar k=count und erhöhen Sie dann count. Die Verarbeitung von k=K−1 schließt das lokale Ergebnis unmittelbar nach dieser Flanke ab. Leerstellen und Pausen erhöhen count nicht. Dieses einfache Steuerwerk benötigt geordnete k-Werte. Beliebige Reihenfolgen erfordern eine Bitkarte empfangener Terme und Duplikaterkennung.
Bei K=2 ergibt die Verarbeitung von eins und fünf acc=5, count=1. Eine Leerstelle lässt beide unverändert. Die Verarbeitung von zwei und sieben mit k=1 ergibt acc=19, count=2 und done. Ein wiederholtes k=1 ist ein Fehler, auch wenn ein nachgeschalteter Empfänger das Ergebnis bereits übernommen hat.
Auslaufenlassen und Löschen haben unterschiedliche Zwecke
Das Array ist nicht leer, wenn die letzte Eingabe am Rand eintritt. Tokens verbleiben in internen Weitergaberegistern. Lassen Sie es mit ungültigen Randeingaben weiterlaufen, bis das letzte PE seinen letzten Term verarbeitet. Halten Sie während dieses Auslaufens fertige Akkumulatoren, bis ihre Ergebnisse eingesammelt sind. Für den Beginn eines neuen Auftrags müssen dagegen Akkumulator, Zähler, Gültigkeits- und Tag-Zustand gemeinsam gelöscht werden.
Die Hülle dieses Kurses führt jeweils einen Auftrag aus. Sie schließt ihn ab, sammelt Ergebnisse ein, löscht und beginnt dann erneut. Überlappende Aufträge erfordern zusätzlichen Zustand oder Akkumulatoren und ein Ausgabeprotokoll; Tags allein ermöglichen dies nicht. Tests müssen abweichende Tags, fehlende und wiederholte Terme, verbleibende Gültigkeitszustände nach dem Löschen sowie gültige Nulloperanden enthalten, die den Termzähler trotzdem erhöhen.
Selbst ausprobieren
Ein PE mit K=3 verarbeitet das Paar k=0 (2,4), eine Leerstelle, das Paar k=1 (0,9) und das Paar k=2 (−1,3). Bestimmen Sie acc und count. Was geschieht, wenn der letzte job-Tag abweicht?
Erklärung lesen
Bei passenden Tags gilt acc=5 und count=3, also ist das Ergebnis vollständig. Die Leerstelle zählt nicht, die gültige Null schon. Ein abweichender job muss einen Verifikationsfehler auslösen und darf nicht als erfolgreicher Abschluss gemeldet werden.