0Pricing
CUDA Academy · 강의

GPU의 경쟁 상태

동시 쓰기가 데이터를 손상시키는 이유를 알아봅니다.

GPU의 경쟁 상태은(는) CoddyKit의 무료 CUDA Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 CUDA Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. CUDA Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

Many Hands, One Counter

On the GPU, thousands of threads can touch the same memory at once. When several write to one spot together, you get a race condition. 🏁

What a Race Really Is

A race condition happens when the final result depends on the unpredictable order in which threads run. Same code, different answer each launch.

Read-Modify-Write

Incrementing a counter is really three steps: read the value, add one, write it back. This read-modify-write sequence is where things break.

counter = counter + 1;

How the Steps Interleave

Two threads both read 5, both compute 6, both write 6. You expected 7 but got 6. One increment silently vanished.

The Lost Update

That vanished increment is called a lost update. With thousands of threads racing, dozens or hundreds of updates can disappear at once.

A Kernel That Looks Fine

This kernel looks correct, but every thread races on the same address. The final count will be wrong and will vary between runs.

__global__ void count(int* total) {
    *total = *total + 1;
}

Why It Is Nondeterministic

The hardware never promises a thread order. So a racy kernel is nondeterministic: it may even pass on small inputs and fail on big ones.

Reads Alone Are Safe

Many threads reading the same value is perfectly fine. Trouble starts only when at least one thread writes while others read or write.

Disjoint Writes Are Safe Too

If each thread writes its own unique slot, like out[i], there is no conflict. A race needs threads aiming at the same location.

out[i] = a[i] + b[i];

The Fix Preview

The cure is to make read-modify-write happen as one indivisible step. That is an atomic operation, coming up in the next lesson. ⚛️

Spotting Races in Review

When reviewing a kernel, ask: do two threads write the same address without protection? If yes, you almost certainly have a data race.

Quick Check

Let's make sure the race idea clicked.

Recap: Races on the GPU

You learned that unguarded read-modify-write on shared data causes race conditions and lost updates. Atomics, up next, make those steps indivisible. ✅

자주 묻는 질문

“GPU의 경쟁 상태” 강의는 무료인가요?

네 — “GPU의 경쟁 상태” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 CUDA Academy 강의 전체를 잠금 해제할 수 있습니다. CUDA Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“GPU의 경쟁 상태”에서 뭘 배우나요?

동시 쓰기가 데이터를 손상시키는 이유를 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 CUDA Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

CUDA Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 CUDA Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“GPU의 경쟁 상태” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 CUDA Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 CUDA Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. GPU의 경쟁 상태
  2. atomicAdd와 관련 연산
  3. 히스토그램 만들기
  4. atomicCAS로 사용자 지정 원자 연산 만들기
← CUDA Academy(으)로 돌아가기