활성화 비율 = SM 활성화 워프 수 / SM 활성화 최대 워프 수
여기서 워프를 다시 말하면, SM당 존재하는 32개의 스레드
GTX280은 30개의 SM으로 구성되어 있으니깨, 30개의 워프가 있는것이다
활성화 비율을 높여야 하는 이유
활성화 된 스레드들이 많아야 메모리 참조시 발생하는 지연시간 동안 다른 활성화 된 스레드에 대한 연산을 수행하도록 해서 SM이 쉬는 시간을 줄이게 될 수 있기 때문이다.
SM을 놀게하면 GPU의 연산능력을 최대화 시키지 못해 성능 저하를 유발한다.
한 블록은 한 SM에서 처리된다,
SM에는 자원 즉, 레지스터, 스레드 수, 공유메모리가 허용하는 최대한의 블록들이 할당되어 활성화 된다.
활성화 된 블록의 수를 늘리면 SM을 유효화(일시키고) 지연 감춤 효과를 유도할 수 있다.
- 지연 감춤 : 스레드 밀림현상 줄이기
블록 당 스레드 수 : 워프의 배수 크기로 128 or 256개 이상의 스레드 할당
- SM 당 최대 블록 수는 제한되어있기 때문에 이를 고려하여 블록 크기를 결정한다.
그래서, 하나의 스레드가 사용하는 레지스터의 수와 SM 당 레지스터의 수, 사용하는 공유 메모리의 크기를 고려하여 활성 블록 수를 예측해 볼 수 있다. 이렇게 해서 활성 워프의 수가 최대가 되도록 하는 것이 중요하다.
효율이 올라간다.
블록당 최대 512개의 스레드를 사용할 수 있으며, CUDA Compute Capability 1.2 이상의 GPU의 경우 SM당 최대 활성 스레드의 개수는 1024, 레지스터는 16,384개.
활성화 비율을 최대로 하기 위한 사용 가능 최대 레지스터 수
= 16K(SM당 레지스터의 수) / (활성 블록 수 * 블록 당 스레드 수)
예를들면, 블록 당 256개의 쓰레드, 활성 블록 수는 SM에서 최대 4개 (최대 SM 활성 스레드 개수 1024, 한 블록에 256개의 스레드가 들어가니까 1024/256 = 4)
SM당 공유 메모리 크기가 16K니까 블록당 4K 이하의 공유메모리 사용이 활성화 비율을 1로 만든다.
활성화 비율이 1이라는 뜻은, 바로 100% SM을 활용한다는 것.
그렇지 못하면 노는 SM이 있을 수 있다.
'Graphics > GPU' 카테고리의 다른 글
GPU 최적화 기초 - 전역메모리 참조시간, 지연감춤 (0) | 2014.06.09 |
---|---|
GPU 최적화 기초 - 활성 블록 수와 자원 (0) | 2014.06.09 |
GPU 최적화 기초 - 지역, 전역메모리 접근 속도 (0) | 2014.06.09 |
GPU 최적화 기초 - 메모리 접근 주안점 (0) | 2014.06.09 |
GPU 구조 (1) | 2014.06.09 |