Skip to content

CUDA:Architecture

지원 아키텍처 확인 방법

nvidia-smi 자체로는 시스템이나 드라이버가 호환 가능한 전체 아키텍처(sm_XX) 목록을 직접 출력해 주지 않으며, 현재 장착된 GPU의 Compute Capability(sm 버전) 확인도 제한적입니다.

전체 sm_XX 목록 확인 및 현재 GPU의 sm 버전을 확인하는 방법은 다음과 같습니다.

현재 설치된 CUDA 컴파일러(nvcc)가 지원하는 전체 sm_XX 목록 확인

설치된 CUDA 툴킷 버전에 따라 지원하는 아키텍처 목록을 확인할 수 있습니다.

nvcc --help | grep -A 30 -- "--gpu-architecture"

PyTorch 활용 (가장 간편한 방법)

## Pytorch 설치 후 실행
python3 -c "import torch; print(f'sm_{torch.cuda.get_device_capability()[0]}{torch.cuda.get_device_capability()[1]}')"

CUDA Samples / deviceQuery 빌드 실행

## CUDA Samples 디렉토리에서 deviceQuery 빌드 후 실행
./deviceQuery | grep "CUDA Capability"

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