2014-09-24 4 views
0

SM 당 48kB 공유 메모리가 있고 공유 메모리에 32kB를 할당하는 커널을 만들면 이는 동시에 하나의 SM에서만 하나의 SM을 실행할 수 있다는 것을 의미합니까?CUDA 공유 메모리 사용량

답변

2

네, 맞습니다.

공유 메모리는 모든 "상주"스레드 블록의 "발자국"을 지원해야합니다. SM에서 스레드 블록을 시작하려면이를 지원할 충분한 공유 메모리가 있어야합니다. 그렇지 않으면 현재 실행중인 스레드가 완료 될 때까지 대기합니다.

Maxwell GPUs (cc 5.0, 5.2)으로 도착하는 데 약간의 차이가 있습니다. 이 GPU는 공유 메모리 64KB (cc 5.0) 또는 96KB (cc 5.2)를 지원합니다. 이 경우 단일 스레드 블록에서 사용할 수있는 최대 공유 메모리는 여전히 48KB로 제한되지만 단일 스레드에서 여러 스레드 블록이 총 48KB 이상을 사용할 수 있습니다. 이는 cc 5.2 SM이 32KB 공유 메모리를 사용하는 경우에도 2 개의 스레드 블록을 지원할 수 있음을 의미합니다.

+0

왜이 경우 3 개의 스레드 블록이 필요하지 않습니까? – Seltymar

+0

아마도 3 개의 스레드 블록. –