GPU 프로그래밍
CUDA 공유 메모리의 뱅크 충돌에 대한 설명으로 올바른 것은?
- A두 개의 GPU가 같은 은행 계좌를 사용하는 문제
- B공유 메모리 용량이 부족해져 프로그램이 멈추는 문제
- C공유 메모리는 32개의 뱅크로 나뉘어 있어, 워프의 여러 스레드가 같은 뱅크의 서로 다른 주소를 동시에 읽으면 접근이 순차적으로 이루어져 느려진다
정답과 해설 보기
정답: C. 공유 메모리는 32개의 뱅크로 나뉘어 있어, 워프의 여러 스레드가 같은 뱅크의 서로 다른 주소를 동시에 읽으면 접근이 순차적으로 이루어져 느려진다
공유 메모리는 4바이트마다 순서대로 할당된 32개의 뱅크로 이루어져 있으며, 각 뱅크는 한 번에 하나의 주소만 읽고 쓸 수 있습니다. 워프의 32개 스레드가 서로 다른 뱅크를 사용하면 1회로 끝나지만, 2개 스레드가 같은 뱅크의 다른 주소를 사용하면 2회로 나뉩니다. 예를 들어 32요소 간격으로 읽으면 모두가 같은 뱅크에 몰려 32회로 나뉘고 맙니다. 모두가 같은 주소를 읽는 경우에는 일제히 배포(브로드캐스트)되므로 충돌하지 않습니다.