GPU 프로그래밍

CUDA에서 블록당 스레드 수를 정할 때의 일반적인 기준으로 올바른 것은?

  1. A워프 크기인 32의 배수로 한다(128이나 256 등)
  2. B반드시 1로 한다
  3. C반드시 소수로 한다
정답과 해설 보기

정답: A. 워프 크기인 32의 배수로 한다(128이나 256 등)

블록의 스레드는 32개씩 워프로 나뉘므로, 예컨대 100개로 하면 마지막 워프는 4개만 사용하고 나머지 28개 분량의 실행 슬롯이 낭비됩니다. 32의 배수로 해 두면 모든 워프를 가득 사용할 수 있습니다. 실제로는 128~256개 정도가 자주 사용되며, 점유율이나 공유 메모리 사용 방식을 보면서 조정합니다.

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

GPU 프로그래밍의 다른 문제

  1. 위와 같은 루프(그리드 스트라이드 루프)로 커널을 작성할 때의 이점으로 올바른 것은?
  2. CUDA 상수 메모리(constant memory)가 특히 빠르게 동작하는 것은 어떤 접근일 때인가?
  3. GPU 캐시에 대해 CPU와 비교한 일반적인 특징으로 올바른 것은?
  4. NVIDIA 이외의 GPU에서도 사용할 수 있는, GPU 등의 병렬 계산을 위한 프로그래밍 체계의 예로 올바른 것은?
  5. GPU에서 조건에 맞는 요소만 배열에서 골라 다른 배열에 채워 넣어 출력하고 싶다(각 스레드의 출력 수는 0 또는 1). 각 스레드의 쓰기 위치 주소를 정하는 데 자주 사용되는 병렬 계산은?

이 분야의 비교