GPU 프로그래밍

GPU에서 조건에 맞는 요소만 배열에서 골라 다른 배열에 채워 넣어 출력하고 싶다(각 스레드의 출력 수는 0 또는 1). 각 스레드의 쓰기 위치 주소를 정하는 데 자주 사용되는 병렬 계산은?

  1. A행렬 전치
  2. B프리픽스 섬(스캔, 앞에서부터의 누적합)
  3. C고속 푸리에 변환
정답과 해설 보기

정답: B. 프리픽스 섬(스캔, 앞에서부터의 누적합)

각 스레드가 출력할지 여부를 0 또는 1로 나타내고 그 앞에서부터의 누적합(배타적 프리픽스 섬)을 구하면, 각 스레드의 값은 "자신보다 앞에서 출력하는 스레드의 수"가 되며 그것이 그대로 쓰기 위치 주소가 됩니다. 스캔은 리덕션과 마찬가지로 트리 형태로 병렬 계산할 수 있습니다. 출력 수가 요소마다 다른 처리를 병렬 그대로 채워서 출력하기 위한 기본 도구입니다.

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

GPU 프로그래밍의 다른 문제

  1. GPU 커널을 작성할 때 지켜야 할 전제로 올바른 것은?
  2. GPU에서 큰 행렬을 전치(b[j][i] = a[i][j])할 때, 공유 메모리를 경유시키는 주된 목적은?
  3. CUDA에서 CPU 측 프로그램이 커널을 실행한 직후의 동작으로 일반적으로 올바른 것은?
  4. CPU와 GPU의 설계 사고방식의 차이로 올바른 것은?
  5. GPU에서 빠르게 처리할 수 있는 작업의 특징으로 가장 적절한 것은?

이 분야의 비교