Die klassische Indexformel
blockIdx.x * blockDim.x + threadIdx.x.
Die klassische Indexformel ist eine kostenlose CUDA Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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 CUDA Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der CUDA Academy-Kurs umfasst insgesamt 4 Lektionen.
Ein Thread, ein Element
Der eigentliche Zweck eines CUDA-Kernels besteht darin, dass jeder Thread ein Datenelement verarbeitet. Dafür benötigt jeder Thread einen eindeutigen globalen Index.
Warum lokale IDs nicht ausreichen
Innerhalb eines Blocks zählt threadIdx.x nur von 0 bis blockDim minus eins. Viele Blöcke verwenden dieselben kleinen Zahlen erneut, daher kann dies nicht Ihr endgültiger Index sein.
Blöcke liegen nebeneinander
Stellen Sie sich das Grid als hintereinander angeordnete Blöcke vor. Jeder Block besitzt einen zusammenhängenden Abschnitt des Arrays, und blockIdx.x gibt an, in welchem Abschnitt Sie sich befinden.
Wie breit ist ein Block?
blockDim.x ist die Anzahl der Threads pro Block. Diese Zahl entspricht der Breite jedes Abschnitts und skaliert den Block-Offset auf die richtige Position.
Die klassische Formel
Kombinieren Sie die drei Werte: Überspringen Sie zunächst die vorherigen Blöcke und addieren Sie dann Ihre Position innerhalb dieses Blocks. Diese eine Zeile liefert jedem Thread einen eindeutigen Index.
int i = blockIdx.x * blockDim.x + threadIdx.x;Schritt für Schritt
Bei 4 Threads pro Block deckt Block 0 die Werte 0 bis 3 ab, Block 1 die Werte 4 bis 7 und Block 2 die Werte 8 bis 11. Die Offsets überschneiden sich nie.
Ein konkretes Beispiel
Thread 2 in Block 3 mit blockDim 256 landet bei 3 mal 256 plus 2, also bei 770. Das ist seine globale Position in den Daten.
// blockIdx.x=3, blockDim.x=256, threadIdx.x=2
int i = 3 * 256 + 2; // i == 770Den Index verwenden
Sobald Sie i berechnet haben, verwenden Sie ihn als Array-Index. Jeder Thread liest und schreibt nur sein eigenes Element, ohne Überschneidungen.
out[i] = a[i] + b[i];Eineindeutige Zuordnung
Starten Sie n Threads, liefert die Formel jeden Wert von 0 bis n minus 1 genau einmal. Damit wird das Array perfekt eineindeutig abgedeckt.
Die Reihenfolge ist wichtig
Multiplizieren Sie immer vor dem Addieren. blockIdx.x * blockDim.x ist der Anfang Ihres Abschnitts, und threadIdx.x gibt die Position innerhalb dieses Abschnitts an.
Über eine Dimension hinaus
Dasselbe Prinzip lässt sich mithilfe der Member .y und .z auf 2D und 3D erweitern. Für flache Arrays benötigen Sie jedoch nur die .x-Formel. 🚀
Kurzer Check
Berechnen Sie den globalen Index eines Threads.
Rückblick
Sie haben die Formel kennengelernt, die jeder Kernel verwendet: blockIdx.x * blockDim.x + threadIdx.x. Sie weist jedem Thread einen eindeutigen Platz in Ihrem Array zu. 🎉
Häufig gestellte Fragen
Ist die Lektion „Die klassische Indexformel“ kostenlos?
Ja — der vollständige Text von „Die klassische Indexformel“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des CUDA Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der CUDA Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Die klassische Indexformel“?
blockIdx.x * blockDim.x + threadIdx.x. Du übst CUDA 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 CUDA Academy zu starten?
Keine Vorkenntnisse erforderlich. CUDA 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 1 von 4.
Wie lange dauert die Lektion „Die klassische Indexformel“?
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 CUDA Academy-Lektion Code schreiben und ausführen?
Ja. Jede CUDA 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 klassische Indexformel
- Zugriffe außerhalb des Bereichs verhindern
- Die Blockanzahl aufrunden
- Grid-Stride-Schleifen