GPU 프로그래밍

CUDA 스레드 계층의 조합으로 올바른 것은? (큰 순서)

  1. A그리드 → 블록 → 스레드
  2. B스레드 → 블록 → 그리드
  3. C블록 → 스레드 → 그리드
정답과 해설 보기

정답: A. 그리드 → 블록 → 스레드

커널을 한 번 실행하면 전체가 그리드가 되고, 그리드는 다수의 블록으로, 블록은 다수의 스레드로 나뉩니다. 하나의 블록에 속한 스레드는 같은 SM(연산기의 집합)에서 실행되며, 공유 메모리로 협력하거나 동기화할 수 있습니다. 서로 다른 블록은 독립적으로 실행되므로 GPU 규모에 따라 동시에 실행되는 블록 수가 달라지며, 같은 프로그램이 크고 작은 GPU에서 모두 동작합니다.

이 분야 연습하기 분야로 돌아가기

GPU 프로그래밍의 다른 문제

  1. CUDA 커널에서 위의 식으로 각 스레드의 번호 i를 구한다. blockIdx.x=2, blockDim.x=256, threadIdx.x=5인 스레드의 i는 얼마인가?
  2. 요소 수 1000인 배열을 블록당 256스레드, 스레드당 1요소씩 처리하려 한다. 실행할 블록 수로 올바른 것은?
  3. 위 CUDA 커널에 "if (i < n)"을 넣은 이유로 올바른 것은?
  4. NVIDIA GPU에서 32개의 스레드를 하나의 묶음으로 하여 같은 명령을 일제히 실행하는 단위를 무엇이라 하는가?
  5. GPU의 SIMT(단일 명령·다중 스레드) 방식과 CPU의 SIMD 명령의 차이로 올바른 것은?

이 분야의 비교