GPU 프로그래밍
CUDA에서 블록과 SM(스트리밍 멀티프로세서)의 관계로 올바른 것은?
- A하나의 블록의 스레드는 모든 SM에 분산되어 실행된다
- BSM의 수와 블록의 수는 반드시 같아야 한다
- C각 블록은 하나의 SM에 할당되어 끝까지 거기서 실행되며, 하나의 SM에는 여러 블록이 동시에 올라갈 수 있다
정답과 해설 보기
정답: C. 각 블록은 하나의 SM에 할당되어 끝까지 거기서 실행되며, 하나의 SM에는 여러 블록이 동시에 올라갈 수 있다
GPU는 다수의 SM을 가지며, 커널의 블록을 비어 있는 SM에 차례로 할당합니다. 하나의 블록은 하나의 SM에서 실행되므로 블록 안의 스레드는 그 SM의 공유 메모리를 사용할 수 있고 동기화도 할 수 있습니다. 블록 수를 SM 수보다 충분히 많게 해 두면 GPU 규모가 달라도 모든 SM에 작업이 돌아가고, 끝난 SM에는 다음 블록이 할당됩니다.