GPU 프로그래밍
GPU에서 큰 행렬을 전치(b[j][i] = a[i][j])할 때, 공유 메모리를 경유시키는 주된 목적은?
- A전치 계산 횟수를 절반으로 줄이기 위해
- B행렬 값을 공유 메모리에서 재배열하여 작은 순서로 만들기 위해
- C타일을 행 방향으로 병합 접근으로 읽어 들이고, 공유 메모리 안에서 방향을 바꿔 쓰기도 병합 접근이 되도록 하기 위해
정답과 해설 보기
정답: C. 타일을 행 방향으로 병합 접근으로 읽어 들이고, 공유 메모리 안에서 방향을 바꿔 쓰기도 병합 접근이 되도록 하기 위해
단순하게 작성하면 a를 행 방향으로 읽는 것은 병합 접근이 되지만, b로의 쓰기는 열 방향이 되어 주소가 띄엄띄엄 떨어져 느려집니다. 타일을 공유 메모리에 읽어 들인 뒤 스레드의 담당을 바꿔 읽어 내면, 글로벌 메모리로의 읽기도 쓰기도 연속된 주소로 할 수 있습니다. 이때 공유 메모리의 열 방향 읽기에서 뱅크 충돌이 일어나지 않도록 한 열을 더 확보하는 방법도 함께 사용합니다.