Проверка результата на CPU
Сравните результат с эталонным ответом.
«Проверка результата на CPU» — бесплатный урок CUDA Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Trust, but Verify
A kernel that runs without crashing is not proof it is correct. You must check the numbers, because silent logic bugs are easy to miss. 🔍
Compute a Reference
The simplest check is a plain CPU loop that does the same math. This reference result is your trusted source of truth.
for (int i = 0; i < n; i++)
ref[i] = h_A[i] + h_B[i];Compare Element by Element
Walk both arrays and compare each GPU result against the reference. One loop over all n elements catches any wrong value.
for (int i = 0; i < n; i++)
if (h_C[i] != ref[i]) { /* mismatch */ }Floats Are Not Exact
For floating point, never test with plain equality. Tiny rounding differences mean you should compare with a small tolerance instead.
if (fabs(h_C[i] - ref[i]) > 1e-5f) { /* fail */ }Why Tolerance, Not Equality
The GPU and CPU may round in different orders, so results can differ by a hair. A small epsilon like 1e-5 absorbs that harmless noise.
Count the Errors
Instead of bailing on the first mismatch, track an error count. Seeing how many elements fail hints at the kind of bug you have.
int errors = 0;
if (fabs(h_C[i] - ref[i]) > 1e-5f) errors++;Print a Clear Verdict
End with a single, honest message. A clear PASS or FAIL line saves you from squinting at raw arrays.
printf(errors == 0 ? "PASS\n" : "FAIL: %d\n", errors);Spot Check the Edges
Boundary bugs love the first and last elements. Printing C[0] and C[n-1] is a fast sanity glance before the full loop.
An Off-by-One Tell
If exactly the last element is wrong, suspect your bounds math. A bad block count or guard often drops the final thread.
Verify Before You Optimize
Always confirm correctness before you tune for speed. A fast kernel that returns wrong answers is worse than a slow correct one.
Keep the Check Around
Leave the verification step in during development. It is your regression test, catching mistakes the moment you change the kernel.
Quick Check
How should you compare floating-point GPU results to a CPU reference?
Recap
You verified the result: a CPU reference, a tolerance compare, an error count, and a clear PASS or FAIL. Correctness first, always. ✅
Часто задаваемые вопросы
Урок «Проверка результата на CPU» бесплатный?
Да — полный текст урока «Проверка результата на CPU» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.
Чему я научусь в уроке «Проверка результата на CPU»?
Сравните результат с эталонным ответом. Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CUDA Academy?
Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Проверка результата на CPU»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CUDA Academy?
Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Ядро сложения векторов
- Настройка части для хоста
- Проверка результата на CPU
- Измерение первого ускорения