GPU 프로그래밍

CUDA 상수 메모리(constant memory)가 특히 빠르게 동작하는 것은 어떤 접근일 때인가?

  1. A워프의 모든 스레드가 같은 주소를 읽을 때(한 번의 읽기를 모두에게 배포할 수 있다)
  2. B워프의 스레드가 각각 다른 주소에 쓸 때
  3. C워프의 스레드가 각각 다른 주소를 무작위로 읽을 때
정답과 해설 보기

정답: A. 워프의 모든 스레드가 같은 주소를 읽을 때(한 번의 읽기를 모두에게 배포할 수 있다)

상수 메모리는 커널 실행 중에는 갱신하지 않는 작은 영역으로, 전용 캐시를 가지고 있습니다. 워프의 모든 스레드가 같은 주소를 읽으면 한 번의 읽기 결과를 모두에게 일제히 배포할 수 있어 매우 빠르게 읽을 수 있습니다. 이미지 필터의 계수나 물리 시뮬레이션의 파라미터처럼 모든 스레드가 같은 값을 사용하는 경우에 적합합니다. 주소가 제각각이면 읽기가 나뉘어 오히려 느려집니다.

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

GPU 프로그래밍의 다른 문제

  1. GPU 캐시에 대해 CPU와 비교한 일반적인 특징으로 올바른 것은?
  2. NVIDIA 이외의 GPU에서도 사용할 수 있는, GPU 등의 병렬 계산을 위한 프로그래밍 체계의 예로 올바른 것은?
  3. GPU에서 조건에 맞는 요소만 배열에서 골라 다른 배열에 채워 넣어 출력하고 싶다(각 스레드의 출력 수는 0 또는 1). 각 스레드의 쓰기 위치 주소를 정하는 데 자주 사용되는 병렬 계산은?
  4. GPU 커널을 작성할 때 지켜야 할 전제로 올바른 것은?
  5. GPU에서 큰 행렬을 전치(b[j][i] = a[i][j])할 때, 공유 메모리를 경유시키는 주된 목적은?

이 분야의 비교