#include <iostream>
#include <cuda_runtime.h>
int main() {
cudaDeviceProp prop;
int device_id = 0;
cudaGetDeviceProperties(&prop, device_id);
std::cout << "===== GPU Device Info =====" << std::endl;
std::cout << "Name : " << prop.name << std::endl;
std::cout << "SM Count : " << prop.multiProcessorCount << std::endl;
std::cout << "Warp Size : " << prop.warpSize << std::endl;
std::cout << "Max Threads/SM : " << prop.maxThreadsPerMultiProcessor << std::endl;
std::cout << "Max Threads/Block: " << prop.maxThreadsPerBlock << std::endl;
std::cout << "Regs Per SM : " << prop.regsPerMultiprocessor << std::endl;
std::cout << "Regs Per Block : " << prop.regsPerBlock << std::endl;
std::cout << "Shared Mem Per SM (bytes) : " << prop.sharedMemPerMultiprocessor << std::endl;
std::cout << "Shared Mem Per Block (bytes) : " << prop.sharedMemPerBlock << std::endl;
std::cout << "Max Blocks/SM : " << prop.maxBlocksPerMultiProcessor << std::endl;
std::cout << "Compute Capability : "
<< prop.major << "." << prop.minor << std::endl;
std::cout << "Clock Rate (KHz) : " << prop.clockRate << std::endl;
return 0;
}
///////////////////////////////////////////////////////
===== GPU Device Info =====
Name : NVIDIA GeForce RTX 3080 Ti Laptop GPU
SM Count : 58
Warp Size : 32
Max Threads/SM : 1536
Max Threads/Block: 1024
Regs Per SM : 65536
Regs Per Block : 65536
Shared Mem Per SM (bytes) : 102400
Shared Mem Per Block (bytes) : 49152
Max Blocks/SM : 16
Compute Capability : 8.6
Clock Rate (KHz) : 1125000
| SM Count | 58 | 병렬성의 실제 상한 |
| Warp Size | 32 | 거의 고정, 스레드 구조 기준 |
| Max Threads / SM | 1536 | SM 내부에서 동시에 수행 가능한 최대 스레드 수 |
| Max Blocks / SM | 16 | SM당 block 동시 실행 최대 개수 |
| Regs Per SM | 65536 | register tiling 가능 한계 |
| Regs Per Block | 65536 | block당 최대 사용 가능 레지스터수 |
| Shared Memory Per SM | 100 KB | (102400 bytes) |
| Shared Memory Per Block | 48 KB | tiling limit (단 96KB까지 설정 가능, config 조건 따라) |
| Clock Rate | 1.125 GHz | 계산 속도 직접 계산 가능 |
| Compute Capability | 8.6 | Ampere Tensor Core 가능 SSA |
Occupancy 최대 도달 조건 ( 수식화 )
SM 내부 워크 수 제한
가능 워프 수 = (max threads per SM) / (warp_size)
= 1536 / 32 = 48 warps/SM
'GPU-KERNEL' 카테고리의 다른 글
| 두 가지 커널 성능 측정 방식 - "벤치마크용" vs "프로파일용" (0) | 2025.11.20 |
|---|---|
| 커널 내부에서의 sharedmemory 선언 이유, 커널은 그리드 전체에 대응되는 느낌임! (0) | 2025.11.20 |
| Register Pressure -> Warp Scheduler -> Occupancy -> (Nsight 타임라인 구조) (0) | 2025.11.20 |
| 총 SM 수 + 하드웨어 구조에 따라, 각기 다른 Block/Grid 전략 (0) | 2025.11.20 |
| Shared memory 을 선언한 순간! ( block, warp, bank, thread ) - 사용자 관점 실제 GPU 관점 (0) | 2025.11.20 |