0Pricing
CUDA Academy · Lektion

Zugriffe außerhalb des Bereichs verhindern

Die Bereichsprüfung if (i < n).

Zugriffe außerhalb des Bereichs verhindern ist eine kostenlose CUDA 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 CUDA Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der CUDA Academy-Kurs umfasst insgesamt 4 Lektionen.

Sie starten oft zu viele Threads

Die Threadanzahl wird durch feste Blockgrößen bestimmt. Deshalb starten Sie fast immer einige zusätzliche Threads über die Länge Ihres Arrays hinaus. Diese überschüssigen Threads müssen behandelt werden.

Was schiefgeht

Ein zusätzlicher Thread berechnet einen Index hinter dem Ende des Arrays. Wenn er dorthin schreibt, greift er auf Speicher zu, der ihm nicht gehört, und verursacht einen stillen Out-of-Bounds-Fehler.

Die GPU warnt Sie nicht

Im Gegensatz zu einem eindeutig erkennbaren Absturz kann ein Zugriff außerhalb des gültigen Bereichs benachbarte Daten beschädigen oder Datenmüll lesen. Der Kernel läuft weiter, sodass der Fehler unsichtbar bleibt, bis die Ergebnisse falsch aussehen.

Die Lösung besteht aus einer Zeile

Prüfen Sie vor jeder Verwendung des Index, ob er innerhalb des Arrays liegt. Diese kleine Bereichsprüfung ist die wichtigste Sicherheitsgewohnheit in CUDA.

if (i < n) {
    out[i] = a[i] + b[i];
}

Warum kleiner als und nicht kleiner oder gleich?

Gültige Indizes reichen von 0 bis n minus 1. Mit dem strikten i < n wird das letzte gültige Element berücksichtigt und das erste ungültige Element ausgeschlossen.

Inaktive Threads beenden sich einfach

Ein Thread, dessen Index außerhalb des gültigen Bereichs liegt, überspringt die Arbeit einfach und kehrt zurück. Nichts zu tun ist völlig sicher und kostet nahezu keine Zeit.

n an den Kernel übergeben

Der Kernel kann die Array-Länge nicht erraten, daher übergeben Sie ihm n als Parameter. So weiß die Prüfung immer, wo die Daten enden.

__global__ void add(float* a, float* b, float* out, int n) {
    int i = blockIdx.x * blockDim.x + threadIdx.x;
    if (i < n) out[i] = a[i] + b[i];
}

Auch Lesezugriffe absichern

Es geht nicht nur um Schreibzugriffe. Das Lesen von a[i] hinter dem Ende lädt Datenmüll oder löst einen Fehler aus. Dieselbe Prüfung i < n schützt daher jeden Zugriff.

Ein häufiger Off-by-One-Fehler

Wenn Sie versehentlich i <= n schreiben, kann ein Thread auf Element n zugreifen, das nicht existiert. Lassen Sie den Vergleich immer streng.

Eine günstige Versicherung

Der Verzweigungsbefehl kostet nahezu nichts, weil zusätzliche Threads selten sind und schnell beendet werden. Die dadurch gewonnene Sicherheit ist den geringen Aufwand bei Weitem wert. ✅

Machen Sie es zur Gewohnheit

Betrachten Sie die Bereichsprüfung als Teil der Indexformel selbst. Berechnen Sie i und sichern Sie es sofort ab, bevor Sie irgendetwas anderes tun.

Kurzer Check

Wählen Sie die korrekte Prüfung aus.

Rückblick

Sie haben gelernt, nach der Indexberechnung if (i < n) hinzuzufügen. Diese eine Zeile verhindert Lese- und Schreibzugriffe außerhalb des gültigen Bereichs, vor denen die GPU Sie niemals warnen würde. 🛡️

Häufig gestellte Fragen

Ist die Lektion „Zugriffe außerhalb des Bereichs verhindern“ kostenlos?

Ja — der vollständige Text von „Zugriffe außerhalb des Bereichs verhindern“ 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 „Zugriffe außerhalb des Bereichs verhindern“?

Die Bereichsprüfung if (i < n). 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 2 von 4.

Wie lange dauert die Lektion „Zugriffe außerhalb des Bereichs verhindern“?

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

  1. Die klassische Indexformel
  2. Zugriffe außerhalb des Bereichs verhindern
  3. Die Blockanzahl aufrunden
  4. Grid-Stride-Schleifen
← Zurück zu CUDA Academy