Den Hotpath in Mojo neu schreiben
Übertragen Sie den Engpass mit fn und SIMD.
Den Hotpath in Mojo neu schreiben ist eine kostenlose Mojo Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.
Den Hot Path übersetzen
Nehmen Sie jetzt die langsame Python-Schleife und bauen Sie sie in Mojo neu auf. Sie behalten dieselbe Logik bei, gewinnen durch typisierten, kompilierten Code aber echte Leistung. 🔧
fn verwenden
Schreiben Sie den Kern als fn-Funktion und nicht als def. Erforderliche Typen ermöglichen es dem Compiler, für Ihre heiße Schleife engen Maschinencode zu erzeugen.
fn sum_squares(data: List[Float64]) -> Float64:
var total: Float64 = 0.0
return totalJeden Typ annotieren
Geben Sie jedem Wert einen konkreten Typ. Wenn keine dynamische Typbestimmung mehr nötig ist, kann Mojo die arithmetischen Operationen wie C optimieren.
var total: Float64 = 0.0
var n: Int = len(data)Den Schleifenkörper portieren
Übertragen Sie die inneren Berechnungen Schritt für Schritt. Behalten Sie dieselben Operationen bei, damit die Ergebnisse exakt mit Python übereinstimmen, bevor Sie etwas optimieren.
for i in range(len(data)):
total += data[i] * data[i]Zuerst die Korrektheit prüfen
Führen Sie die Mojo-Version mit derselben Eingabe aus und vergleichen Sie die Ergebnisse. Korrektheit kommt vor Geschwindigkeit, denn ein schnelles falsches Ergebnis hilft niemandem.
SIMD einführen
Vektorisieren Sie den Code, sobald er korrekt ist. Ein SIMD-Wert bündelt mehrere Zahlen, sodass eine Anweisung viele Elemente gleichzeitig verarbeitet.
alias width = 4
var acc = SIMD[DType.float64, width](0)In Vektorstücken verarbeiten
Durchlaufen Sie die Daten in Gruppen, die der SIMD-Breite entsprechen. Jeder Durchlauf verarbeitet ein ganzes Stück statt nur eines einzelnen Elements.
for i in range(0, n, width):
var chunk = data.load[width](i)
acc += chunk * chunkDen Vektor reduzieren
Fassen Sie nach der Schleife den SIMD-Akkumulator mit einer reduce-Operation zu einer Zahl zusammen. Dadurch werden alle Lanes zu einer einzigen Gesamtsumme zusammengeführt.
var total = acc.reduce_add()Den Rest behandeln
Wenn die Länge kein ganzzahliges Vielfaches der Breite ist, bleiben einige Elemente übrig. Eine kleine Restschleife addiert sie, damit nichts verloren geht.
for i in range(n - (n % width), n):
total += data[i] * data[i]Das Ergebnis erneut prüfen
Vergleichen Sie die vektorisierten Ausgabewerte erneut mit der Python-Basis. Übereinstimmende Ergebnisse bestätigen, dass Ihre SIMD-Neufassung die Berechnung korrekt beibehält.
Den neuen Kernel messen
Messen Sie den Mojo-Kernel mit denselben Daten. Selbst mit nur einem Thread ist ein typisierter und vektorisierter Kernel der Python-Schleife meist deutlich überlegen.
Schnelltest
Wählen Sie die richtige Reihenfolge für die Neufassung eines Hot Paths in Mojo.
Zusammenfassung
Sie haben die Schleife in ein typisiertes fn portiert, die Korrektheit geprüft, anschließend mit SIMD vektorisiert und den Rest behandelt. Der Hot Path ist jetzt schneller Mojo-Code. 🎯
Lerne Mojo mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 30
- Lektionen
- 120
Häufig gestellte Fragen
Ist die Lektion „Den Hotpath in Mojo neu schreiben“ kostenlos?
Ja — der vollständige Text von „Den Hotpath in Mojo neu schreiben“ 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 „Den Hotpath in Mojo neu schreiben“?
Übertragen Sie den Engpass mit fn und SIMD. 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 2 von 4.
Wie lange dauert die Lektion „Den Hotpath in Mojo neu schreiben“?
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
- Die Python-Baseline profilieren
- Den Hotpath in Mojo neu schreiben
- Den Kern parallelisieren und abstimmen
- Das beschleunigte Projekt ausliefern