Altifigence Academy

1 / 20 · Konzept

Skalarprodukte auf Verarbeitungselemente abbilden

Trennen Sie Zeilen-, Spalten- und Reduktionsindizes und berechnen Sie eine kleine Referenzmatrix.

Die Berechnung vor ihrer zeitlichen Planung festlegen

A habe die Form M×K und B die Form K×P. Ihr Produkt C hat die Form M×P. Der Index i wählt eine Ausgabezeile, j eine Ausgabespalte und k ist der Reduktionsindex innerhalb der Summe. Indizes beginnen in diesem Kurs stets bei Null.

Ci,j=∑k=0K−1Ai,kBk,jC_{i,j}=\sum_{k=0}^{K-1} A_{i,k}B_{k,j}

Unser ausgabestationärer Entwurf ordnet C(i,j) dem PE(i,j) zu. Dieses Verarbeitungselement hält seine Teilsumme, während A nach rechts und B nach unten wandert. Die Bewegung ermöglicht Wiederverwendung; die Gleichung definiert, welche Operanden multipliziert werden dürfen. Das Takt-Timing definieren wir getrennt, damit ein Fehler im zeitlichen Ablauf die beabsichtigte Mathematik nicht unbemerkt ändern kann.

Eine vollständige Referenz durchrechnen

Verwenden Sie A=[[1,2],[3,4]] und B=[[5,6],[7,8]]. PE(0,1) kombiniert Zeile [1,2] mit Spalte [6,8]. Es akkumuliert 1×6=6 und 2×8=16 und erhält 22. Die Verwendung der zweiten Zeile [7,8] von B ergibt stattdessen 23, ein hilfreiches Erkennungsmerkmal eines Zeilen-/Spaltenfehlers.

PETerm k=0Term k=1Ergebnis
(0,0)51419
(0,1)61622
(1,0)152843
(1,1)183250

Die erwartete Matrix lautet [[19,22],[43,50]]. Jedes PE führt zwei gültige MACs aus, insgesamt führt das Array also acht MACs aus. Eine Konvention, die Multiplikation und Addition getrennt zählt, meldet sechzehn arithmetische Operationen. Geben Sie beim Vergleich von Durchsatz immer die Einheit an.

Koordinaten mit der Speicherung verbinden

Bei zeilenweiser Speicherung hat A(i,k) den Elementoffset iK+k und B(k,j) den Offset kP+j. Für Spalte j=1 nutzt B in diesem Beispiel die Offsets 1 und 3. Eine Speicherschnittstelle, die zusammenhängende Zeilen liefert, benötigt daher Pufferung oder Umordnung, um die Spalten am oberen Rand des Arrays bereitzustellen.

Erstellen Sie die arithmetische Referenz mit breiten Ganzzahlen und wenden Sie die gewählte Ausgabeumwandlung anschließend an. Diese kleinen positiven Eingaben testen keinen Überlauf. Spätere Tests müssen negative Werte, den negativsten Operanden und eine längere Reduktion ergänzen. Eine Einheitsmatrix B sollte A reproduzieren, während eine vollständig mit Nullen belegte Zeile von A eine ebensolche Zeile von C ergeben sollte. Erfassen Sie neben der endgültigen Summe auch die Liste der k-Terme jedes PE: Ein fehlender oder wiederholter Term wird dann sichtbar, selbst wenn zwei Fehler sich numerisch aufheben.

Selbst ausprobieren

Bestimmen Sie für A=[[2,-1],[0,3]] und B=[[4,5],[-2,1]] die Matrix C, die MAC-Anzahl und den Elementoffset von B(1,0) bei zeilenweiser Speicherung.

Erklärung lesen

C=[[10,9],[-6,3]]: Die vier Summen lauten 8+2, 10−1, 0−6 und 0+3. Es gibt 2×2×2=8 MACs. B(1,0) hat den Elementoffset 1×2+0=2.

Deine Auswahl gilt für diesen Browser. Du kannst sie jederzeit in der Fußzeile ändern.