GPU 프로그래밍

GPU 커널에서 스레드당 레지스터 사용량이 너무 많을 때 일어날 수 있는 일로 올바른 것은?

  1. A레지스터가 자동으로 늘어나 성능이 반드시 향상된다
  2. B계산 결과가 반드시 틀린다
  3. CSM의 레지스터 총수는 정해져 있으므로 동시에 올릴 수 있는 스레드 수가 줄어 메모리 지연을 숨기기 어려워진다
정답과 해설 보기

정답: C. SM의 레지스터 총수는 정해져 있으므로 동시에 올릴 수 있는 스레드 수가 줄어 메모리 지연을 숨기기 어려워진다

GPU는 실행 중인 모든 스레드의 레지스터를 칩 상에 유지함으로써 워프 전환을 순식간에 수행합니다. 따라서 한 스레드가 사용하는 레지스터가 많으면 SM에 동시에 올릴 수 있는 스레드 수가 줄어듭니다. 부족한 분량은 메모리로 밀려나(스필) 느려지기도 합니다. 컴파일러 설정으로 레지스터 상한을 지정하여 스레드 수와의 균형을 맞추기도 합니다.

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

GPU 프로그래밍의 다른 문제

  1. GPU의 점유율(occupancy)에 대한 설명으로 올바른 것은?
  2. GPU가 메모리의 긴 지연(수백 클럭)을 숨기는 주된 방법으로 올바른 것은?
  3. GPU의 점유율에 대해 올바른 것은?
  4. CUDA에서 블록과 SM(스트리밍 멀티프로세서)의 관계로 올바른 것은?
  5. CUDA에서 커널 도중에 다른 모든 블록의 계산이 끝나기를 기다린 뒤 다음 단계로 진행하고 싶다. 일반적인 방법은?

이 분야의 비교