CUDA:Architecture
지원 아키텍처 확인 방법
nvidia-smi 자체로는 시스템이나 드라이버가 호환 가능한 전체 아키텍처(sm_XX) 목록을 직접 출력해 주지 않으며, 현재 장착된 GPU의 Compute Capability(sm 버전) 확인도 제한적입니다.
전체 sm_XX 목록 확인 및 현재 GPU의 sm 버전을 확인하는 방법은 다음과 같습니다.
현재 설치된 CUDA 컴파일러(nvcc)가 지원하는 전체 sm_XX 목록 확인
설치된 CUDA 툴킷 버전에 따라 지원하는 아키텍처 목록을 확인할 수 있습니다.
PyTorch 활용 (가장 간편한 방법)
## Pytorch 설치 후 실행
python3 -c "import torch; print(f'sm_{torch.cuda.get_device_capability()[0]}{torch.cuda.get_device_capability()[1]}')"
CUDA Samples / deviceQuery 빌드 실행
Thread vs Block vs Warp
Thread
Block
Warp
쓰레드 블럭이 실행될 때는 Warp 단위로 실행된다. 각각의 쓰레드 블럭들은 하나 또는 그 이상의 warp로 매핑되며 보통 32개의 쓰레드로 구성된다. 예를 들어, 128개의 쓰레드로 이루어진 쓰레드 블럭이 있다면 32 개의 쓰레드로 이루어진 4개의 Warp로 매핑된다. 하지만 만약, 쓰레드 블럭의 크기가 32개의 배수가 아닌 경우에는 마지막 warp에서 사용되지 않는 쓰레드들은 자동으로 disabled 된다.
Cuda_warp_example_image.png
See also
Favorite site
- CUDA GPUs (GPU별 CUDA지원 현황표)
- Wikipedia (en) CUDA (이 곳에도 정리되어 있다)