SM당 활성 스레드의 개수는 GPU Compute Capability를 통해 확인한다.
nVidia 프로파일러에서 occupancy 항목을 확인한다.
GTX280은 1.3이다.
Compute Capability는 그냥 그래픽카드가 지원하는 계산능력 버전(?) 뭐 그 정도로 해두자
요게 바로 Compute Capability 버전에 따른 계산능력 스펙 차이
최대 활성 스레드의 수는 1024,
컴파일러 옵션 : -ptxas-options = -v를 통해 커널이 사용하는 레지스터 수와 지역메모리, 공유메모리, 상수메모리 수를 알 수 있다.
- 의도와 다르게 레지스터 대신 지역메모리가 사용될 수 있기 때문에 컴파일 결과를 통해
이를 반드시 확인한다.
-maxrregcount : 최대 레지스터 수 제한
- 레지스터가 의도했던 것 보다 더 많이 사용되어 활성화 비율이 떨어졌을 때
GPU성능을 최대한 활용하기 위해서는 활성 워프 수와 블록 수는 자원이 허락하는 한 많을수록 좋다. 블록의 수는 최소 SM 수가 되도록 하고 활성 워프를 많게하여 스레드 동기화나 메모리 지연으로 인한 시간동안 SM이 다른 워프 및 블록을 실행할 수 있도록 한다.
'Graphics > GPU' 카테고리의 다른 글
GPU 최적화 기초 - 지연 감춤과 __syncthreads() (0) | 2014.06.09 |
---|---|
GPU 최적화 기초 - 전역메모리 참조시간, 지연감춤 (0) | 2014.06.09 |
GPU 최적화 기초 - 활성화 비율 (0) | 2014.06.09 |
GPU 최적화 기초 - 지역, 전역메모리 접근 속도 (0) | 2014.06.09 |
GPU 최적화 기초 - 메모리 접근 주안점 (0) | 2014.06.09 |