Parallelisierung und Vektorisierung kombinieren
Setzen Sie Threading auf SIMD auf.
Parallelisierung und Vektorisierung kombinieren 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.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Two Kinds of Speed
SIMD packs many values into one core's instruction. Threads spread work across cores. Stacking both gives you the most. ⚡
Outer Layer: Threads
Use parallelize on the outer level so each core owns a chunk of the data. That is the coarse split across cores.
parallelize[do_chunk](workers)Inner Layer: Vectors
Inside each chunk, use vectorize so one core chews through its slice in SIMD packs. That is the fine split per core.
from algorithm import vectorizeImport Both Helpers
Both tools live in the algorithm module, so you can bring them in together and combine them in one function.
from algorithm import parallelize, vectorizeThe Chunk Worker
Each chunk worker computes its start and end, then hands its own slice to vectorize for the SIMD sweep.
fn do_chunk(c: Int):
var start = c * chunkVectorize the Inner Range
Within the worker, call vectorize on just this chunk's length. The SIMD width sets how many lanes run at once.
vectorize[step, width](end - start)Offset Into the Data
The inner step gets a local index, so add the chunk start to reach the right spot in the full array.
fn step[w: Int](i: Int):
out.store[width=w](start + i, ...)Pick the SIMD Width
Match the vector width to your hardware lanes with simdwidthof so each core uses its registers fully.
alias width = simdwidthof[DType.float32]()Cores Times Lanes
The win multiplies: many cores, each doing many lanes per step. That product is why combined code is so fast.
Keep Chunks Independent
This stacking only works because chunks never touch each other's data. Independence keeps the two layers safe.
Measure the Combined Gain
Benchmark scalar, vector-only, and combined versions. The numbers reveal how much each layer contributes.
Quick Check
You combine threads and SIMD on the same workload.
Recap
You wrap parallelize over chunks and call vectorize inside each, offsetting by the chunk start, so cores times lanes multiply your throughput. 🚀
Häufig gestellte Fragen
Ist die Lektion „Parallelisierung und Vektorisierung kombinieren“ kostenlos?
Ja — der vollständige Text von „Parallelisierung und Vektorisierung kombinieren“ 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 „Parallelisierung und Vektorisierung kombinieren“?
Setzen Sie Threading auf SIMD auf. 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 „Parallelisierung und Vektorisierung kombinieren“?
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 Funktion parallelize
- Arbeit in Blöcke aufteilen
- Parallelisierung und Vektorisierung kombinieren
- Datenrennen vermeiden