GPU 프로그래밍

GPU에서 큰 행렬을 전치(b[j][i] = a[i][j])할 때, 공유 메모리를 경유시키는 주된 목적은?

  1. A전치 계산 횟수를 절반으로 줄이기 위해
  2. B행렬 값을 공유 메모리에서 재배열하여 작은 순서로 만들기 위해
  3. C타일을 행 방향으로 병합 접근으로 읽어 들이고, 공유 메모리 안에서 방향을 바꿔 쓰기도 병합 접근이 되도록 하기 위해
정답과 해설 보기

정답: C. 타일을 행 방향으로 병합 접근으로 읽어 들이고, 공유 메모리 안에서 방향을 바꿔 쓰기도 병합 접근이 되도록 하기 위해

단순하게 작성하면 a를 행 방향으로 읽는 것은 병합 접근이 되지만, b로의 쓰기는 열 방향이 되어 주소가 띄엄띄엄 떨어져 느려집니다. 타일을 공유 메모리에 읽어 들인 뒤 스레드의 담당을 바꿔 읽어 내면, 글로벌 메모리로의 읽기도 쓰기도 연속된 주소로 할 수 있습니다. 이때 공유 메모리의 열 방향 읽기에서 뱅크 충돌이 일어나지 않도록 한 열을 더 확보하는 방법도 함께 사용합니다.

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

GPU 프로그래밍의 다른 문제

  1. CUDA에서 CPU 측 프로그램이 커널을 실행한 직후의 동작으로 일반적으로 올바른 것은?
  2. CPU와 GPU의 설계 사고방식의 차이로 올바른 것은?
  3. GPU에서 빠르게 처리할 수 있는 작업의 특징으로 가장 적절한 것은?
  4. GPU에서 실행하면 효율이 떨어지기 쉬운 처리는?
  5. CUDA 등 GPU 프로그래밍에서 말하는 '커널'에 대한 설명으로 올바른 것은?

이 분야의 비교