GPU 프로그래밍
CUDA의 __syncthreads()의 역할로 올바른 것은?
- AGPU의 모든 스레드를 블록에 관계없이 대기시켜 맞춘다
- B같은 블록의 모든 스레드가 그 지점에 도달할 때까지 대기시키고, 그때까지의 공유 메모리 쓰기가 보이도록 한다
- CCPU와 GPU의 시계를 맞춘다
정답과 해설 보기
정답: B. 같은 블록의 모든 스레드가 그 지점에 도달할 때까지 대기시키고, 그때까지의 공유 메모리 쓰기가 보이도록 한다
공유 메모리를 사용하는 처리에서는 어떤 스레드가 쓴 값을 다른 스레드가 읽기 전에 쓰기가 끝나 있어야 합니다. __syncthreads()는 블록의 모든 스레드가 이 지점에 도착할 때까지 기다리게 하므로, 예컨대 모두가 데이터를 공유 메모리에 읽어 들인 뒤에 계산을 시작하는 순서를 보장할 수 있습니다. 대기시킬 수 있는 것은 같은 블록의 스레드뿐입니다.