활성화 비율 = 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이 있을 수 있다.

 

Posted by 긍정왕오킹