0Pricing
CUDA Academy · Урок

Защита от выхода за диапазон

Проверка границ с помощью if (i < n).

«Защита от выхода за диапазон» — бесплатный урок CUDA Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

You Often Launch Too Many

Thread counts come in fixed block sizes, so you almost always launch a few extra threads beyond your array length. Those spares need handling.

What Goes Wrong

An extra thread computes an index past the end of the array. If it writes there, it touches memory it does not own, causing a silent out-of-bounds bug.

The GPU Will Not Warn You

Unlike a clean crash, an out-of-range write may corrupt nearby data or read garbage. The kernel keeps running, so the failure is invisible until results look wrong.

The Fix Is One Line

Before any thread uses its index, check that it falls inside the array. This tiny bounds check is the most important safety habit in CUDA.

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

Why Less Than, Not Less Or Equal

Valid indices run 0 to n minus 1. The strict i < n lets the last real element through and stops the first invalid one.

Idle Threads Just Exit

A thread whose index is out of range simply skips the work and returns. Doing nothing is perfectly safe and costs almost no time.

Pass n to the Kernel

The kernel cannot guess the array length, so you give it n as a parameter. Then the guard always knows where the data ends.

__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];
}

Guard Reads Too

It is not only writes. Reading a[i] past the end loads garbage or faults, so the same i < n check protects every access.

A Common Off-by-One

Writing i <= n by mistake lets one thread touch element n, which does not exist. Always keep the comparison strict.

Cheap Insurance

The branch costs almost nothing because extra threads are rare and exit fast. The safety it buys is worth far more than that tiny cost. ✅

Make It a Reflex

Treat the bounds check as part of the index formula itself. Compute i, then immediately guard it before doing anything else.

Quick Check

Pick the correct guard.

Recap

You learned to add if (i < n) after computing the index. This one line stops out-of-range reads and writes that the GPU would never warn you about. 🛡️

Часто задаваемые вопросы

Урок «Защита от выхода за диапазон» бесплатный?

Да — полный текст урока «Защита от выхода за диапазон» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.

Чему я научусь в уроке «Защита от выхода за диапазон»?

Проверка границ с помощью if (i < n). Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать CUDA Academy?

Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Защита от выхода за диапазон»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке CUDA Academy?

Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Классическая формула индекса
  2. Защита от выхода за диапазон
  3. Округление числа блоков вверх
  4. Циклы с шагом, равным размеру сетки
← Назад к CUDA Academy