GPU 프로그래밍

1024개의 값을 트리 형태의 리덕션으로 합산할 때 필요한 단계 수는 몇 개인가?

  1. A10
  2. B512
  3. C1023
정답과 해설 보기

정답: A. 10

각 단계에서 값의 수가 절반이 되므로 1024→512→256→…→1로, 1이 될 때까지 10번 절반으로 줄입니다. 즉 단계 수는 log2 1024=10입니다. 덧셈의 총 횟수는 512+256+…+1=1023회로 하나의 스레드가 순서대로 더하는 경우와 같지만, 단계가 10개뿐이므로 충분한 수의 스레드가 있으면 매우 빠르게 끝납니다.

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

GPU 프로그래밍의 다른 문제

  1. 단일 GPU를 사용하는 프로그램에서 CPU 측 메모리와 GPU 측 메모리에 대해 일반적으로 올바른 것은?
  2. 배열 요소를 한 번만 더하는 가벼운 처리를 위해 데이터를 GPU로 보내면 CPU에서 계산하는 것보다 느려지는 경우가 있다. 주된 이유는?
  3. CPU 메모리를 핀 고정(페이지 락)한 뒤 GPU로 전송하면 빨라지는 이유로 올바른 것은?
  4. CUDA 스트림을 여러 개 사용하는 주된 목적은?
  5. 매우 작은 커널을 수천 번 연속으로 실행하는 프로그램이 느릴 때, 개선 방법으로 가장 적절한 것은?

이 분야의 비교