0Pricing
Mojo Academy · Lektion

Das Skalarprodukt optimieren

Vektorisieren und entrollen Sie das Skalarprodukt.

Das Skalarprodukt optimieren ist eine kostenlose Mojo Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Mojo Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Mojo Academy-Kurs umfasst insgesamt 4 Lektionen.

Der Kern des Skalarprodukts

Das innere Produkt multipliziert zwei Sequenzen elementweise und addiert die Ergebnisse. Wenn Sie es beschleunigen, beschleunigen Sie Ihre gesamte Matmul.

var acc: Float32 = 0.0
for k in range(K):
    acc += a[k] * b[k]

Eine Lane nach der anderen ist langsam

Eine einfache Schleife verarbeitet pro Schritt nur ein Wertepaar. Moderne CPUs können viele Werte gleichzeitig verarbeiten, daher lässt skalare Verarbeitung Lanes ungenutzt.

SIMD kommt ins Spiel

Ein SIMD-Wert bündelt mehrere Zahlen und wendet eine Operation gleichzeitig auf alle an, sodass jede Instruktion tatsächlich parallel Arbeit verrichtet.

var v = SIMD[DType.float32, 4](1, 2, 3, 4)

Einen Block auf einmal laden

Laden Sie statt eines einzelnen Floats mit load in einem einzigen Schritt einen ganzen SIMD-breiten Ausschnitt aus jedem Array, bereit für die Vektorrechnung.

var va = a.load[width=4](k)
var vb = b.load[width=4](k)

Ganze Vektoren multiplizieren

Die Multiplikation zweier SIMD-Werte ergibt in einem Schritt einen Vektor mit den Produkten. Die elementweise Verarbeitung erfolgt gleichzeitig über alle Lanes.

var prod = va * vb  # 4 products at once

In einen Vektor akkumulieren

Verwenden Sie einen SIMD-Akkumulator und addieren Sie jeden Produktvektor hinein. Die endgültige Summe bilden Sie erst, wenn die Schleife beendet ist.

var acc = SIMD[DType.float32, 4](0)
acc += va * vb

In der Breite weiterschalten

Die Schleife rückt jetzt um die SIMD-Breite vor, nicht um eins. Bei vier Lanes ist die Zahl der Iterationen nur ein Viertel so groß.

for k in range(0, K, 4):
    acc += a.load[width=4](k) * b.load[width=4](k)

Am Ende reduzieren

Fassen Sie nach der Schleife den Lane-Akkumulator mit einer horizontalen reduce-Operation zu einer Zahl zusammen. Das ergibt das endgültige Skalarprodukt.

var total = acc.reduce_add()

Die Schleife abrollen

Unrolling verarbeitet pro Iteration mehrere Breiten, reduziert den Schleifen-Overhead und macht mehr unabhängige Arbeit für die CPU sichtbar.

Den Rest verarbeiten

Wenn K kein Vielfaches der Breite ist, bleiben einige Elemente übrig. Eine kleine Tail-Schleife verarbeitet sie einzeln.

for k in range(K - K % 4, K):
    total += a[k] * b[k]

Mojo helfen lassen

Mojo bietet den Helfer vectorize, der einen parametrisierten Schleifenkörper über einen Bereich anwendet und dabei das Weiterschalten sowie den Tail für Sie übernimmt.

Kurzer Check

Warum rufen Sie am Ende einer Skalarprodukt-Schleife mit SIMD-Breite reduce_add auf?

Zusammenfassung

Vektorisieren Sie das innere Produkt, indem Sie SIMD-Blöcke laden, die Lanes miteinander multiplizieren und akkumulieren und anschließend reduzieren; rollen Sie die Schleife ab und verarbeiten Sie den Tail. ⚡

Häufig gestellte Fragen

Ist die Lektion „Das Skalarprodukt optimieren“ kostenlos?

Ja — der vollständige Text von „Das Skalarprodukt optimieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Mojo Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Mojo Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Das Skalarprodukt optimieren“?

Vektorisieren und entrollen Sie das Skalarprodukt. Du übst Mojo Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Mojo Academy zu starten?

Keine Vorkenntnisse erforderlich. Mojo Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Das Skalarprodukt optimieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Mojo Academy-Lektion Code schreiben und ausführen?

Ja. Jede Mojo Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Einen Tensor in Mojo modellieren
  2. Matmul Schritt für Schritt erstellen
  3. Das Skalarprodukt optimieren
  4. Numerische Korrektheit überprüfen
← Zurück zu Mojo Academy