| 개발자 | 엔비디아 |
|---|---|
| 발표일 | 2007년 6월 23일 |
| 안정화 버전 | |
| 운영 체제 | 윈도우, 리눅스 |
| 플랫폼 | 아래의 지원 GPU 참고 |
| 종류 | GPGPU |
| 라이선스 | 프리웨어 |
| 웹사이트 | developer |
컴퓨팅에서 CUDA (Compute Unified Device Architecture)는 그래픽 처리 장치 (GPU)의 특정 유형을 사용하여 가속화된 범용 처리를 가능하게 하는 독점적인 병렬 컴퓨팅 플랫폼 및 API이다. 이러한 접근 방식을 GPU 기반 범용 컴퓨팅이라고 한다. CUDA는 엔비디아가 2006년에 만들었다. 처음 소개될 때 그 이름은 Compute Unified Device Architecture의 약어였지만, 엔비디아는 나중에 약어의 일반적인 사용을 중단하고 현재는 거의 확장하지 않는다.
CUDA는 GPU의 가상 명령어 집합 및 병렬 컴퓨팅 요소에 직접 접근하여 컴퓨트 커널을 실행할 수 있도록 하는 소프트웨어 계층이다. 드라이버 및 런타임 커널 외에도 CUDA 플랫폼에는 프로그래머가 애플리케이션을 가속화하는 데 도움이 되는 컴파일러, 라이브러리 및 개발자 도구가 포함되어 있다.
CUDA는 C, C++, 포트란, 파이썬, 줄리아와 같은 프로그래밍 언어와 함께 작동하도록 설계되었다. 이러한 접근성은 Direct3D 및 OpenGL과 같은 이전 API가 고급 그래픽 프로그래밍 기술을 요구했던 것과 대조적으로 병렬 프로그래밍 전문가가 GPU 리소스를 더 쉽게 사용할 수 있도록 한다. CUDA 기반 GPU는 OpenMP, OpenACC 및 OpenCL과 같은 프로그래밍 프레임워크도 지원한다.
그래픽 처리 장치 (GPU)는 전문화된 컴퓨터 프로세서로서 실시간 고해상도 3차원 그래픽스의 컴퓨팅 집약적인 작업 요구 사항을 해결한다. 2012년까지 GPU는 대규모 데이터 블록을 효율적으로 조작할 수 있는 고도로 병렬적인 멀티 코어 시스템으로 발전했다. 이러한 설계는 대규모 데이터 블록 처리가 병렬로 수행되는 상황에서 일반적인 중앙 처리 장치 (CPU)보다 알고리즘에 더 효과적이다. 예를 들어 다음과 같은 상황에서 그렇다.
이안 벅은 2000년 스탠포드에서 32개의 지포스 카드를 사용하여 8K 게임 장비를 만들었고, 그 후 DARPA 보조금을 받아 GPU에서 범용 병렬 프로그래밍을 수행했다. 그 후 그는 엔비디아에 합류하여 2004년부터 CUDA 개발을 감독하고 있다. CUDA를 추진하면서 젠슨 황은 엔비디아 GPU가 과학 컴퓨팅을 위한 일반 하드웨어가 되는 것을 목표로 했다. CUDA는 2007년에 출시되었다. 2015년경 CUDA의 초점은 신경망으로 바뀌었다.
다음 표는 CUDA 프레임워크의 온톨로지에 대한 비정확한 설명을 제공한다.
| 메모리 (하드웨어) |
메모리 (코드, 또는 변수 스코핑) | 컴퓨테이션 (하드웨어) |
컴퓨테이션 (코드 구문) |
컴퓨테이션 (코드 의미론) |
|---|---|---|---|---|
| RAM | 비-CUDA 변수 | 호스트 | 프로그램 | 하나의 루틴 호출 |
| VRAM, GPU L2 캐시 |
전역, 상수, 텍스처 | 장치 | 그리드 | 많은 프로세서에서 동일한 서브루틴 동시 호출 |
| GPU L1 캐시 | 로컬, 공유 | SM ("스트리밍 멀티프로세서") | 블록 | 개별 서브루틴 호출 |
| 워프 = 32 스레드 | SIMD 명령어 | |||
| GPU L0 캐시, 레지스터 |
스레드 (일명 "SP", "스트리밍 프로세서", "CUDA 코어", 이 이름들은 현재 사용되지 않음) | 벡터 연산 내 개별 스칼라 연산과 유사 |
CUDA 플랫폼은 CUDA 가속 라이브러리, OpenACC와 같은 컴파일러 지시문, 그리고 C, C++, 포트란, 파이썬을 포함한 산업 표준 프로그래밍 언어의 확장을 통해 소프트웨어 개발자에게 접근 가능하다. C/C++ 프로그래머는 엔비디아의 LLVM 기반 C/C++ 컴파일러인 nvcc 또는 clang 자체를 사용하여 PTX로 컴파일된 'CUDA C/C++'를 사용할 수 있다. 포트란 프로그래머는 The Portland Group의 PGI CUDA 포트란 컴파일러를 사용하여 'CUDA 포트란'을 사용할 수 있다. 파이썬 프로그래머는 cuNumeric 라이브러리를 사용하여 엔비디아 GPU에서 애플리케이션을 가속화할 수 있다.
라이브러리, 컴파일러 지시문, CUDA C/C++ 및 CUDA 포트란 외에도 CUDA 플랫폼은 크로노스 그룹의 OpenCL, 마이크로소프트의 다이렉트컴퓨트, OpenGL 컴퓨트 셰이더 및 C++ AMP를 포함한 다른 컴퓨팅 인터페이스를 지원한다. 파이썬, 펄, 포트란, 자바, 루비, 루아, 커먼 리스프, 하스켈, R, 매트랩, IDL, 줄리아에 대한 타사 래퍼도 사용할 수 있으며, 매스매티카에는 네이티브 지원이 제공된다.
비디오 게임 산업에서 GPU는 그래픽 렌더링 및 게임 물리 계산 (파편, 연기, 불, 유체와 같은 물리적 효과)에 사용되며, PhysX 및 불릿이 그 예시이다. CUDA는 계산생물학, 암호학 및 기타 분야에서 비그래픽 애플리케이션을 크게 가속화하는 데 사용되기도 했다.
CUDA는 낮은 수준의 API (CUDA 드라이버 API, 비단일 소스)와 높은 수준의 API (CUDA 런타임 API, 단일 소스)를 모두 제공한다. 초기 CUDA SDK는 2007년 2월 15일에 마이크로소프트 윈도우 및 리눅스용으로 공개되었다. 맥 OS X 지원은 나중에 버전 2.0에 추가되었으며, 이는 2008년 2월 14일에 출시된 베타 버전을 대체한다. CUDA는 G8x 시리즈 이후의 모든 엔비디아 GPU, 즉 지포스, 쿼드로 및 엔비디아 테슬라 라인과 함께 작동한다. CUDA는 대부분의 표준 운영 체제와 호환된다.
CUDA 8.0에는 다음 라이브러리가 포함된다 (컴파일 및 런타임용, 알파벳 순):
CUDA 8.0에는 다음 다른 소프트웨어 구성 요소가 포함된다:
CUDA 9.0–9.2에는 다음 다른 구성 요소가 포함된다:
CUDA 10에는 다음 다른 구성 요소가 포함된다:
CUDA 11.0–11.8에는 다음 다른 구성 요소가 포함된다:
CUDA는 그래픽 API를 사용하는 기존 GPU 기반 범용 컴퓨팅에 비해 몇 가지 장점이 있다.
다음 C++ 예제 코드는 이미지에서 GPU의 배열로 텍스처를 로드한다.
texture<float, 2, cudaReadModeElementType> tex;
void foo()
{
cudaArray* cu_array;
// Allocate array
cudaChannelFormatDesc description = cudaCreateChannelDesc<float>();
cudaMallocArray(&cu_array, &description, width, height);
// Copy image data to array
cudaMemcpyToArray(cu_array, image, width*height*sizeof(float), cudaMemcpyHostToDevice);
// Set texture parameters (default)
tex.addressMode[0] = cudaAddressModeClamp;
tex.addressMode[1] = cudaAddressModeClamp;
tex.filterMode = cudaFilterModePoint;
tex.normalized = false; // do not normalize coordinates
// Bind the array to the texture
cudaBindTextureToArray(tex, cu_array);
// Run kernel
dim3 blockDim(16, 16, 1);
dim3 gridDim((width + blockDim.x - 1)/ blockDim.x, (height + blockDim.y - 1) / blockDim.y, 1);
kernel<<< gridDim, blockDim, 0 >>>(d_data, height, width);
// Unbind the array from the texture
cudaUnbindTexture(tex);
} //end foo()
__global__ void kernel(float* odata, int height, int width)
{
unsigned int x = blockIdx.x*blockDim.x + threadIdx.x;
unsigned int y = blockIdx.y*blockDim.y + threadIdx.y;
if (x < width && y < height) {
float c = tex2D(tex, x, y);
odata[y*width+x] = c;
}
}
아래는 GPU에서 두 배열의 곱을 계산하는 파이썬 예시이다. 비공식 파이썬 언어 바인딩은 PyCUDA에서 얻을 수 있다.
import pycuda.compiler as comp
import pycuda.driver as drv
import numpy
import pycuda.autoinit
mod = comp.SourceModule(
"""
__global__ void multiply_them(float *dest, float *a, float *b)
{
const int i = threadIdx.x;
dest[i] = a[i] * b[i];
}
"""
)
multiply_them = mod.get_function("multiply_them")
a = numpy.random.randn(400).astype(numpy.float32)
b = numpy.random.randn(400).astype(numpy.float32)
dest = numpy.zeros_like(a)
multiply_them(drv.Out(dest), drv.In(a), drv.In(b), block=(400, 1, 1))
print(dest - a * b)
행렬 곱셈 연산을 단순화하는 추가 파이썬 바인딩은 pycublas 프로그램에서 찾을 수 있다.
import numpy
from pycublas import CUBLASMatrix
A = CUBLASMatrix(numpy.mat([[1, 2, 3], [4, 5, 6]], numpy.float32))
B = CUBLASMatrix(numpy.mat([[2, 3], [4, 5], [6, 7]], numpy.float32))
C = A * B
print(C.np_mat())
반면 CuPy는 NumPy를 직접 대체한다.
import cupy
a = cupy.random.randn(400)
b = cupy.random.randn(400)
dest = cupy.zeros_like(a)
print(dest - a * b)
CUDA SDK 버전 및 마이크로아키텍처 (코드명 기준)별 지원 CUDA 컴퓨팅 기능 버전:
| CUDA SDK 버전 | 테슬라 | 페르미 | 케플러 (초기) | 케플러 (후기) | 맥스웰 | 파스칼 | 볼타 | 튜링 | 암페어 | 에이다 러브레이스 | 호퍼 | 블랙웰 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1.0 | 1.0 – 1.1 | |||||||||||
| 1.1 | 1.0 – 1.1+x | |||||||||||
| 2.0 | 1.0 – 1.1+x | |||||||||||
| 2.1 – 2.3.1 | 1.0 – 1.3 | |||||||||||
| 3.0 – 3.1 | 1.0 | 2.0 | ||||||||||
| 3.2 | 1.0 | 2.1 | ||||||||||
| 4.0 – 4.2 | 1.0 | 2.1 | ||||||||||
| 5.0 – 5.5 | 1.0 | 3.0 | 3.5 | |||||||||
| 6.0 | 1.0 | 3.2 | 3.5 | |||||||||
| 6.5 | 1.1 | 3.7 | 5.x | |||||||||
| 7.0 – 7.5 | 2.0 | 5.x | ||||||||||
| 8.0 | 2.0 | 6.x | ||||||||||
| 9.0 – 9.2 | 3.0 | 7.0 – 7.2 | ||||||||||
| 10.0 – 10.2 | 3.0 | 7.5 | ||||||||||
| 11.0 | 3.5 | 8.0 | ||||||||||
| 11.1 – 11.4 | 3.5 | 8.6 | ||||||||||
| 11.5 – 11.7.1 | 3.5 | 8.7 | ||||||||||
| 11.8 | 3.5 | 8.9 | 9.0 | |||||||||
| 12.0 – 12.6 | 5.0 | 9.0 | ||||||||||
| 12.8 | 5.0 | 12.0 | ||||||||||
| 12.9 | 5.0 | 12.1 |
참고: CUDA SDK 10.2는 macOS의 최신 공식 릴리스이며, 이후 릴리스에서는 macOS 지원이 제공되지 않는다.
버전별 CUDA 컴퓨팅 기능, 관련 GPU 반도체 및 GPU 카드 모델 (다양한 애플리케이션 영역별로 구분):
| 컴퓨팅 기능 (버전) |
마이크로- 아키텍처 |
GPU | 지포스 | 쿼드로/NVS | 테슬라/데이터센터 |
|---|---|---|---|---|---|
| 1.0 | 테슬라 | G80 | GeForce 8800 Ultra, GeForce 8800 GTX, GeForce 8800 GTS(G80) | Quadro FX 5600, Quadro FX 4600, Quadro Plex 2100 S4 | Tesla C870, Tesla D870, Tesla S870 |
| 1.1 | G92, G94, G96, G98, G84, G86 | GeForce GTS 250, GeForce 9800 GX2, GeForce 9800 GTX, GeForce 9800 GT, GeForce 8800 GTS(G92), GeForce 8800 GT, GeForce 9600 GT, GeForce 9500 GT, GeForce 9400 GT, GeForce 8600 GTS, GeForce 8600 GT, GeForce 8500 GT, GeForce G110M, GeForce 9300M GS, GeForce 9200M GS, GeForce 9100M G, GeForce 8400M GT, GeForce G105M |
Quadro FX 4700 X2, Quadro FX 3700, Quadro FX 1800, Quadro FX 1700, Quadro FX 580, Quadro FX 570, Quadro FX 470, Quadro FX 380, Quadro FX 370, Quadro FX 370 Low Profile, Quadro NVS 450, Quadro NVS 420, Quadro NVS 290, Quadro NVS 295, Quadro Plex 2100 D4, Quadro FX 3800M, Quadro FX 3700M, Quadro FX 3600M, Quadro FX 2800M, Quadro FX 2700M, Quadro FX 1700M, Quadro FX 1600M, Quadro FX 770M, Quadro FX 570M, Quadro FX 370M, Quadro FX 360M, Quadro NVS 320M, Quadro NVS 160M, Quadro NVS 150M, Quadro NVS 140M, Quadro NVS 135M, Quadro NVS 130M, Quadro NVS 450, Quadro NVS 420, Quadro NVS 295 |
||
| 1.2 | GT218, GT216, GT215 | GeForce GT 340*, GeForce GT 330*, GeForce GT 320*, GeForce 315*, GeForce 310*, GeForce GT 240, GeForce GT 220, GeForce 210, GeForce GTS 360M, GeForce GTS 350M, GeForce GT 335M, GeForce GT 330M, GeForce GT 325M, GeForce GT 240M, GeForce G210M, GeForce 310M, GeForce 305M |
Quadro FX 380 Low Profile, Quadro FX 1800M, Quadro FX 880M, Quadro FX 380M, Nvidia NVS 300, NVS 5100M, NVS 3100M, NVS 2100M, ION |
||
| 1.3 | GT200, GT200b | GeForce GTX 295, GTX 285, GTX 280, GeForce GTX 275, GeForce GTX 260 | Quadro FX 5800, Quadro FX 4800, Quadro FX 4800 for Mac, Quadro FX 3800, Quadro CX, Quadro Plex 2200 D2 | Tesla C1060, Tesla S1070, Tesla M1060 | |
| 2.0 | 페르미 | GF100, GF110 | GeForce GTX 590, GeForce GTX 580, GeForce GTX 570, GeForce GTX 480, GeForce GTX 470, GeForce GTX 465, GeForce GTX 480M |
Quadro 6000, Quadro 5000, Quadro 4000, Quadro 4000 for Mac, Quadro Plex 7000, Quadro 5010M, Quadro 5000M |
Tesla C2075, Tesla C2050/C2070, Tesla M2050/M2070/M2075/M2090 |
| 2.1 | GF104, GF106 GF108, GF114, GF116, GF117, GF119 | GeForce GTX 560 Ti, GeForce GTX 550 Ti, GeForce GTX 460, GeForce GTS 450, GeForce GTS 450*, GeForce GT 640 (GDDR3), GeForce GT 630, GeForce GT 620, GeForce GT 610, GeForce GT 520, GeForce GT 440, GeForce GT 440*, GeForce GT 430, GeForce GT 430*, GeForce GT 420*, GeForce GTX 675M, GeForce GTX 670M, GeForce GT 635M, GeForce GT 630M, GeForce GT 625M, GeForce GT 720M, GeForce GT 620M, GeForce 710M, GeForce 610M, GeForce 820M, GeForce GTX 580M, GeForce GTX 570M, GeForce GTX 560M, GeForce GT 555M, GeForce GT 550M, GeForce GT 540M, GeForce GT 525M, GeForce GT 520MX, GeForce GT 520M, GeForce GTX 485M, GeForce GTX 470M, GeForce GTX 460M, GeForce GT 445M, GeForce GT 435M, GeForce GT 420M, GeForce GT 415M, GeForce 710M, GeForce 410M |
Quadro 2000, Quadro 2000D, Quadro 600, Quadro 4000M, Quadro 3000M, Quadro 2000M, Quadro 1000M, NVS 310, NVS 315, NVS 5400M, NVS 5200M, NVS 4200M |
||
| 3.0 | 케플러 | GK104, GK106, GK107 | GeForce GTX 770, GeForce GTX 760, GeForce GT 740, GeForce GTX 690, GeForce GTX 680, GeForce GTX 670, GeForce GTX 660 Ti, GeForce GTX 660, GeForce GTX 650 Ti BOOST, GeForce GTX 650 Ti, GeForce GTX 650, GeForce GTX 880M, GeForce GTX 870M, GeForce GTX 780M, GeForce GTX 770M, GeForce GTX 765M, GeForce GTX 760M, GeForce GTX 680MX, GeForce GTX 680M, GeForce GTX 675MX, GeForce GTX 670MX, GeForce GTX 660M, GeForce GT 750M, GeForce GT 650M, GeForce GT 745M, GeForce GT 645M, GeForce GT 740M, GeForce GT 730M, GeForce GT 640M, GeForce GT 640M LE, GeForce GT 735M, GeForce GT 730M |
Quadro K5000, Quadro K4200, Quadro K4000, Quadro K2000, Quadro K2000D, Quadro K600, Quadro K420, Quadro K500M, Quadro K510M, Quadro K610M, Quadro K1000M, Quadro K2000M, Quadro K1100M, Quadro K2100M, Quadro K3000M, Quadro K3100M, Quadro K4000M, Quadro K5000M, Quadro K4100M, Quadro K5100M, NVS 510, Quadro 410 |
Tesla K10, GRID K340, GRID K520, GRID K2 |
| 3.2 | GK20A | 테그라 K1, 젯슨 TK1 | |||
| 3.5 | GK110, GK208 | GeForce GTX Titan Z, GeForce GTX Titan Black, GeForce GTX Titan, GeForce GTX 780 Ti, GeForce GTX 780, GeForce GT 640 (GDDR5), GeForce GT 630 v2, GeForce GT 730, GeForce GT 720, GeForce GT 710, GeForce GT 740M (64-bit, DDR3), GeForce GT 920M | Quadro K6000, Quadro K5200 | Tesla K40, Tesla K20x, Tesla K20 | |
| 3.7 | GK210 | Tesla K80 | |||
| 5.0 | 맥스웰 | GM107, GM108 | GeForce GTX 750 Ti, GeForce GTX 750, GeForce GTX 960M, GeForce GTX 950M, GeForce 940M, GeForce 930M, GeForce GTX 860M, GeForce GTX 850M, GeForce 845M, GeForce 840M, GeForce 830M | Quadro K1200, Quadro K2200, Quadro K620, Quadro M2000M, Quadro M1000M, Quadro M600M, Quadro K620M, NVS 810 | Tesla M10 |
| 5.2 | GM200, GM204, GM206 | GeForce GTX Titan X, GeForce GTX 980 Ti, GeForce GTX 980, GeForce GTX 970, GeForce GTX 960, GeForce GTX 950, GeForce GTX 750 SE, GeForce GTX 980M, GeForce GTX 970M, GeForce GTX 965M |
Quadro M6000 24GB, Quadro M6000, Quadro M5000, Quadro M4000, Quadro M2000, Quadro M5500, Quadro M5000M, Quadro M4000M, Quadro M3000M |
Tesla M4, Tesla M40, Tesla M6, Tesla M60 | |
| 5.3 | GM20B | 테그라 X1, 젯슨 TX1, 젯슨 나노, DRIVE CX, DRIVE PX | |||
| 6.0 | 파스칼 | GP100 | Quadro GP100 | Tesla P100 | |
| 6.1 | GP102, GP104, GP106, GP107, GP108 | Nvidia TITAN Xp, Titan X, GeForce GTX 1080 Ti, GTX 1080, GTX 1070 Ti, GTX 1070, GTX 1060, GTX 1050 Ti, GTX 1050, GT 1030, GT 1010, MX350, MX330, MX250, MX230, MX150, MX130, MX110 |
Quadro P6000, Quadro P5000, Quadro P4000, Quadro P2200, Quadro P2000, Quadro P1000, Quadro P400, Quadro P500, Quadro P520, Quadro P600, Quadro P5000 (모바일), Quadro P4000 (모바일), Quadro P3000 (모바일) |
Tesla P40, Tesla P6, Tesla P4 | |
| 6.2 | GP10B | 테그라 X2, 젯슨 TX2, DRIVE PX 2 | |||
| 7.0 | 볼타 | GV100 | NVIDIA TITAN V | Quadro GV100 | Tesla V100, Tesla V100S |
| 7.2 | GV10B GV11B |
테그라 자비에르, 젯슨 자비에르 NX, 젯슨 AGX 자비에르, DRIVE AGX 자비에르, DRIVE AGX 페가수스, Clara AGX | |||
| 7.5 | 튜링 | TU102, TU104, TU106, TU116, TU117 | NVIDIA TITAN RTX, GeForce RTX 2080 Ti, RTX 2080 Super, RTX 2080, RTX 2070 Super, RTX 2070, RTX 2060 Super, RTX 2060 12GB, RTX 2060, GeForce GTX 1660 Ti, GTX 1660 Super, GTX 1660, GTX 1650 Super, GTX 1650, MX550, MX450 |
Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000, Quadro RTX 4000, T1000, T600, T400 T1200 (모바일), T600 (모바일), T500 (모바일), Quadro T2000 (모바일), Quadro T1000 (모바일) |
Tesla T4 |
| 8.0 | 암페어 | GA100 | A100 80GB, A100 40GB, A30 | ||
| 8.6 | GA102, GA103, GA104, GA106, GA107 | GeForce RTX 3090 Ti, RTX 3090, RTX 3080 Ti, RTX 3080 12GB, RTX 3080, RTX 3070 Ti, RTX 3070, RTX 3060 Ti, RTX 3060, RTX 3050, RTX 3050 Ti (모바일), RTX 3050 (모바일), RTX 2050 (모바일), MX570 | RTX A6000, RTX A5500, RTX A5000, RTX A4500, RTX A4000, RTX A2000 RTX A5000 (모바일), RTX A4000 (모바일), RTX A3000 (모바일), RTX A2000 (모바일) |
A40, A16, A10, A2 | |
| 8.7 | GA10B | 젯슨 오린 나노, 젯슨 오린 NX, 젯슨 AGX 오린, DRIVE AGX 오린, IGX 오린 | |||
| 8.9 | 에이다 러브레이스 | AD102, AD103, AD104, AD106, AD107 | GeForce RTX 4090, RTX 4080 Super, RTX 4080, RTX 4070 Ti Super, RTX 4070 Ti, RTX 4070 Super, RTX 4070, RTX 4060 Ti, RTX 4060, RTX 4050 (모바일) | RTX 6000 Ada, RTX 5880 Ada, RTX 5000 Ada, RTX 4500 Ada, RTX 4000 Ada, RTX 4000 SFF Ada, RTX 2000 Ada, RTX 5000 Ada (모바일), RTX 4000 Ada (모바일), RTX 3500 Ada (모바일), RTX 2000 Ada (모바일) | L40S, L40, L20, L4, L2 |
| 9.0 | 호퍼 | GH100 | H200, H100
GH200 (Grace Hopper Superchip) | ||
| 10.0 | 블랙웰 | GB100 | B200,
GB200 (Grace CPU+Blackwell) | ||
| 10.3 | GB110 | B300(Blackwell Ultra),
GB300 (Grace CPU+Blackwell Ultra) | |||
| 11.0 | GB10B | 젯슨 AGX 토르, | |||
| 12.0 | GB202, GB203, GB205, GB206, GB207 | GeForce RTX 5090, RTX 5080, RTX 5070 Ti, RTX 5070, RTX 5060 Ti, RTX 5060, RTX 5050 | RTX PRO 6000 Blackwell, RTX PRO 5000 Blackwell, RTX PRO 4500 Blackwell, RTX PRO 4000 Blackwell, RTX PRO 2000 Blackwell | RTX PRO 6000 Blackwell Server Edition | |
| 12.1 | GB20B | GB10 (Grace CPU+Blackwell) | |||
| 컴퓨팅 기능 (버전) |
마이크로- 아키텍처 |
GPU | 지포스 | 쿼드로/NVS | 테슬라/데이터센터 |
* – OEM 전용 제품
| 기능 지원 (나열되지 않은 기능은 모든 컴퓨팅 기능에서 지원) | 컴퓨팅 기능 (버전) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1.0, 1.1 | 1.2, 1.3 | 2.x | 3.0 | 3.2 | 3.5, 3.7, 5.x, 6.x, 7.0, 7.2 | 7.5 | 8.x | 9.0, 10.x, 12.x | ||||||
| 워프 투표 함수 (__all(), __any()) | 아니요 | 예 | ||||||||||||
| 워프 투표 함수 (__ballot()) | 아니요 | 예 | ||||||||||||
| 메모리 펜스 함수 (__threadfence_system()) | ||||||||||||||
| 동기화 함수 (__syncthreads_count(), __syncthreads_and(), __syncthreads_or()) | ||||||||||||||
| 서피스 함수 | ||||||||||||||
| 스레드 블록의 3D 그리드 | ||||||||||||||
| 워프 셔플 함수 | 아니요 | 예 | ||||||||||||
| 통합 메모리 프로그래밍 | ||||||||||||||
| 퍼널 시프트 | 아니요 | 예 | ||||||||||||
| 동적 병렬 처리 | 아니요 | 예 | ||||||||||||
| 균일 데이터패스 | 아니요 | 예 | ||||||||||||
| 하드웨어 가속 비동기 복사 | 아니요 | 예 | ||||||||||||
| 하드웨어 가속 분할 도착/대기 배리어 | ||||||||||||||
| 리덕션 연산을 위한 워프 수준 지원 | ||||||||||||||
| L2 캐시 상주 관리 | ||||||||||||||
| 가속화된 동적 프로그래밍을 위한 DPX 명령어 | 아니요 | 예 | ||||||||||||
| 분산 공유 메모리 | ||||||||||||||
| 스레드 블록 클러스터 | ||||||||||||||
| 텐서 메모리 가속기 (TMA) 장치 | ||||||||||||||
| 기능 지원 (나열되지 않은 기능은 모든 컴퓨팅 기능에서 지원) | 1.0, 1.1 | 1.2, 1.3 | 2.x | 3.0 | 3.2 | 3.5, 3.7, 5.x, 6.x, 7.0, 7.2 | 7.5 | 8.x | 9.0, 10.x, 12.x | |||||
| 컴퓨팅 기능 (버전) | ||||||||||||||
| 데이터 유형 | 지원 벡터 유형 | 저장 길이 비트 (전체 벡터) |
사용 길이 비트 (단일 값) |
부호 비트 | 지수 비트 | 가수 비트 | 비고 |
|---|---|---|---|---|---|---|---|
| E2M1 = FP4 | e2m1x2 / e2m1x4 | 8 / 16 | 4 | 1 | 2 | 1 | |
| E2M3 = FP6 변형 | e2m3x2 / e2m3x4 | 16 / 32 | 6 | 1 | 2 | 3 | |
| E3M2 = FP6 변형 | e3m2x2 / e3m2x4 | 16 / 32 | 6 | 1 | 3 | 2 | |
| UE4M3 | ue4m3 | 8 | 7 | 0 | 4 | 3 | 스케일링에 사용 (E2M1만 해당) |
| E4M3 = FP8 변형 | e4m3 / e4m3x2 / e4m3x4 | 8 / 16 / 32 | 8 | 1 | 4 | 3 | |
| E5M2 = FP8 변형 | e5m2 / e5m2x2 / e5m2x4 | 8 / 16 / 32 | 8 | 1 | 5 | 2 | FP16의 지수/범위, 8비트에 들어감 |
| UE8M0 | ue8m0x2 | 16 | 8 | 0 | 8 | 0 | 스케일링에 사용 (모든 FP4 또는 FP6 또는 FP8 형식) |
| FP16 | f16 / f16x2 | 16 / 32 | 16 | 1 | 5 | 10 | |
| BF16 | bf16 / bf16x2 | 16 / 32 | 16 | 1 | 8 | 7 | FP32의 지수/범위, 16비트에 들어감 |
| TF32 | tf32 | 32 | 19 | 1 | 8 | 10 | FP32의 지수/범위, FP16의 가수/정밀도 |
| FP32 | f32 / f32x2 | 32 / 64 | 32 | 1 | 8 | 23 | |
| FP64 | f64 | 64 | 64 | 1 | 11 | 52 |
| 데이터 유형 | 기본 연산 | 지원 시작 |
원자적 연산 | 전역 메모리 지원 시작 |
공유 메모리 지원 시작 |
|---|---|---|---|---|---|
| 8비트 정수 부호 있는/없는 |
로딩, 저장, 변환 | 1.0 | 빈칸 | 빈칸 | |
| 16비트 정수 부호 있는/없는 |
일반 연산 | 1.0 | atomicCAS() | 3.5 | |
| 32비트 정수 부호 있는/없는 |
일반 연산 | 1.0 | 원자적 함수 | 1.1 | 1.2 |
| 64비트 정수 부호 있는/없는 |
일반 연산 | 1.0 | 원자적 함수 | 1.2 | 2.0 |
| 모든 128비트 간단히 복사 가능한 유형 | 일반 연산 | 아니요 | atomicExch, atomicCAS | 9.0 | |
| 16비트 부동소수점 FP16 |
덧셈, 뺄셈, 곱셈, 비교, 워프 셔플 함수, 변환 |
5.3 | half2 원자적 덧셈 | 6.0 | |
| 원자적 덧셈 | 7.0 | ||||
| 16비트 부동소수점 BF16 |
덧셈, 뺄셈, 곱셈, 비교, 워프 셔플 함수, 변환 |
8.0 | 원자적 덧셈 | 8.0 | |
| 32비트 부동소수점 | 일반 연산 | 1.0 | atomicExch() | 1.1 | 1.2 |
| 원자적 덧셈 | 2.0 | ||||
| 32비트 부동소수점 float2 및 float4 | 일반 연산 | 아니요 | 원자적 덧셈 | 9.0 | |
| 64비트 부동소수점 | 일반 연산 | 1.3 | 원자적 덧셈 | 6.0 | |
참고: 누락된 줄이나 빈 항목은 해당 항목에 대한 정보 부족을 나타낸다.
| 텐서 코어당 사이클당 FMA | 지원 시작 | 7.0 | 7.2 | 7.5 워크스테이션 | 7.5 데스크톱 | 8.0 | 8.6 워크스테이션 | 8.7 | 8.6 데스크톱 | 8.9 데스크톱 | 8.9 워크스테이션 | 9.0 | 10.0 | 10.1 | 12.0 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 데이터 유형 | 조밀 행렬용 | 희소 행렬용 | 1세대 (8x/SM) | 1세대? (8x/SM) | 2세대 (8x/SM) | 3세대 (4x/SM) | 4세대 (4x/SM) | 5세대 (4x/SM) | ||||||||
| 1비트 값 (AND) | 8.0 (실험적) | 아니요 | 아니요 | 4096 | 2048 | 속도 미정 | ||||||||||
| 1비트 값 (XOR) | 7.5–8.9 (실험적) | 아니요 | 1024 | Deprecated 또는 제거? | ||||||||||||
| 4비트 정수 | 8.0–8.9 (실험적) | 256 | 1024 | 512 | ||||||||||||
| 4비트 부동소수점 FP4 (E2M1) | 10.0 | 아니요 | 4096 | 미정 | 512 | |||||||||||
| 6비트 부동소수점 FP6 (E3M2 및 E2M3) | 10.0 | 아니요 | 2048 | 미정 | ||||||||||||
| 8비트 정수 | 7.2 | 8.0 | 아니요 | 128 | 128 | 512 | 256 | 1024 | 2048 | 256 | ||||||
| FP16 누적을 사용하는 8비트 부동소수점 FP8 (E4M3 및 E5M2) | 8.9 | 아니요 | 256 | |||||||||||||
| FP32 누적을 사용하는 8비트 부동소수점 FP8 (E4M3 및 E5M2) | 128 | 128 | ||||||||||||||
| FP16 누적을 사용하는 16비트 부동소수점 FP16 | 7.0 | 8.0 | 64 | 64 | 64 | 256 | 128 | 512 | 1024 | 128 | ||||||
| FP32 누적을 사용하는 16비트 부동소수점 FP16 | 32 | 64 | 128 | 64 | ||||||||||||
| FP32 누적을 사용하는 16비트 부동소수점 BF16 | 7.5 | 8.0 | 아니요 | 64 | ||||||||||||
| 32비트 (19비트 사용) 부동소수점 TF32 | 속도 미정 (32?) | 128 | 32 | 64 | 256 | 512 | 32 | |||||||||
| 64비트 부동소수점 | 8.0 | 아니요 | 아니요 | 16 | 속도 미정 | 32 | 16 | 미정 | ||||||||
참고: 누락된 줄이나 빈 항목은 해당 항목에 대한 정보 부족을 나타낸다.
| 텐서 코어 구성 | 7.0 | 7.2, 7.5 | 8.0, 8.6 | 8.7 | 8.9 | 9.0 |
|---|---|---|---|---|---|---|
| FP16 단위의 점곱 유닛 폭 (바이트) | 4 (8) | 8 (16) | 4 (8) | 16 (32) | ||
| 텐서 코어당 점곱 유닛 수 | 16 | 32 | ||||
| SM 파티션당 텐서 코어 수 | 2 | 1 | ||||
| SM 파티션당 전체 처리량 (바이트/사이클) | 256 | 512 | 256 | 1024 | ||
| FP 텐서 코어: 워프 단위 행렬 계산을 위한 최소 사이클 | 8 | 4 | 8 | |||
| FP 텐서 코어: 전체 처리량을 위한 최소 행렬 형태 (바이트) | 2048 | |||||
| INT 텐서 코어: 워프 단위 행렬 계산을 위한 최소 사이클 | 아니요 | 4 | ||||
| INT 텐서 코어: 전체 처리량을 위한 최소 행렬 형태 (바이트) | 아니요 | 1024 | 2048 | 1024 | ||
| FP64 텐서 코어 구성 | 8.0 | 8.6 | 8.7 | 8.9 | 9.0 |
|---|---|---|---|---|---|
| FP64 단위의 점곱 유닛 폭 (바이트) | 4 (32) | 미정 | 4 (32) | ||
| 텐서 코어당 점곱 유닛 수 | 4 | 미정 | 8 | ||
| SM 파티션당 텐서 코어 수 | 1 | ||||
| SM 파티션당 전체 처리량 (바이트/사이클) | 128 | 미정 | 256 | ||
| 워프 단위 행렬 계산을 위한 최소 사이클 | 16 | 미정 | |||
| 전체 처리량을 위한 최소 행렬 형태 (바이트) | 2048 | ||||
| 기술 사양 | 컴퓨팅 기능 (버전) | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1.0 | 1.1 | 1.2 | 1.3 | 2.x | 3.0 | 3.2 | 3.5 | 3.7 | 5.0 | 5.2 | 5.3 | 6.0 | 6.1 | 6.2 | 7.0 | 7.2 | 7.5 | 8.0 | 8.6 | 8.7 | 8.9 | 9.0 | 10.x | 12.x | |
| 장치당 최대 상주 그리드 수 (동시 커널 실행, 특정 장치에서는 더 낮을 수 있음) |
1 | 16 | 4 | 32 | 16 | 128 | 32 | 16 | 128 | 16 | 128 | ||||||||||||||
| 스레드 블록 그리드의 최대 차원 | 2 | 3 | |||||||||||||||||||||||
| 스레드 블록 그리드의 최대 x-차원 | 65535 | 231 − 1 | |||||||||||||||||||||||
| 스레드 블록 그리드의 최대 y 또는 z-차원 | 65535 | ||||||||||||||||||||||||
| 스레드 블록의 최대 차원 | 3 | ||||||||||||||||||||||||
| 블록의 최대 x 또는 y-차원 | 512 | 1024 | |||||||||||||||||||||||
| 블록의 최대 z-차원 | 64 | ||||||||||||||||||||||||
| 블록당 최대 스레드 수 | 512 | 1024 | |||||||||||||||||||||||
| 워프 크기 | 32 | ||||||||||||||||||||||||
| 멀티프로세서당 최대 상주 블록 수 | 8 | 16 | 32 | 16 | 32 | 16 | 24 | 32 | |||||||||||||||||
| 멀티프로세서당 최대 상주 워프 수 | 24 | 32 | 48 | 64 | 32 | 64 | 48 | 64 | 48 | ||||||||||||||||
| 멀티프로세서당 최대 상주 스레드 수 | 768 | 1024 | 1536 | 2048 | 1024 | 2048 | 1536 | 2048 | 1536 | ||||||||||||||||
| 멀티프로세서당 32비트 일반 레지스터 수 | 8 K | 16 K | 32 K | 64 K | 128 K | 64 K | |||||||||||||||||||
| 멀티프로세서당 32비트 균일 레지스터 수 | 아니요 | 2 K | |||||||||||||||||||||||
| 스레드 블록당 최대 32비트 레지스터 수 | 8 K | 16 K | 32 K | 64 K | 32 K | 64 K | 32 K | 64 K | 32 K | 64 K | |||||||||||||||
| 스레드당 최대 32비트 일반 레지스터 수 | 124 | 63 | 255 | ||||||||||||||||||||||
| 워프당 최대 32비트 균일 레지스터 수 | 아니요 | 63 | |||||||||||||||||||||||
| 멀티프로세서당 공유 메모리 양 (전체 공유 메모리 + L1 캐시 중에서, 해당되는 경우) |
16 KiB | 16 / 48 KiB (64 KiB 중) | 16 / 32 / 48 KiB (64 KiB 중) | 80 / 96 / 112 KiB (128 KiB 중) | 64 KiB | 96 KiB | 64 KiB | 96 KiB | 64 KiB | 0 / 8 / 16 / 32 / 64 / 96 KiB (128 KiB 중) | 32 / 64 KiB (96 KiB 중) | 0 / 8 / 16 / 32 / 64 / 100 / 132 / 164 KiB (192 KiB 중) | 0 / 8 / 16 / 32 / 64 / 100 KiB (128 KiB 중) | 0 / 8 / 16 / 32 / 64 / 100 / 132 / 164 KiB (192 KiB 중) | 0 / 8 / 16 / 32 / 64 / 100 KiB (128 KiB 중) | 0 / 8 / 16 / 32 / 64 / 100 / 132 / 164 / 196 / 228 KiB (256 KiB 중) | 0 / 8 / 16 / 32 / 64 / 100 KiB (128 KiB 중) | ||||||||
| 스레드 블록당 최대 공유 메모리 양 | 16 KiB | 48 KiB | 96 KiB | 48 KiB | 64 KiB | 163 KiB | 99 KiB | 163 KiB | 99 KiB | 227 KiB | 99 KiB | ||||||||||||||
| 공유 메모리 뱅크 수 | 16 | 32 | |||||||||||||||||||||||
| 스레드당 로컬 메모리 양 | 16 KiB | 512 KiB | |||||||||||||||||||||||
| CUDA C/C++로 접근 가능한 상수 메모리 크기 (1개 뱅크, PTX는 11개 뱅크 접근 가능, SASS는 18개 뱅크 접근 가능) |
64 KiB | ||||||||||||||||||||||||
| 상수 메모리용 멀티프로세서당 캐시 작업 세트 | 8 KiB | 4 KiB | 8 KiB | ||||||||||||||||||||||
| 텍스처 메모리용 멀티프로세서당 캐시 작업 세트 | TPC당 16 KiB | TPC당 24 KiB | 12 KiB | 12 – 48 KiB | 24 KiB | 48 KiB | 32 KiB | 24 KiB | 48 KiB | 24 KiB | 32 – 128 KiB | 32 – 64 KiB | 28 – 192 KiB | 28 – 128 KiB | 28 – 192 KiB | 28 – 128 KiB | 28 – 256 KiB | ||||||||
| CUDA 배열에 바인딩된 1D 텍스처 참조의 최대 너비 |
8192 | 65536 | 131072 | ||||||||||||||||||||||
| 선형 메모리에 바인딩된 1D 텍스처 참조의 최대 너비 |
227 | 228 | 227 | 228 | 227 | 228 | |||||||||||||||||||
| 1D 계층형 텍스처 참조의 최대 너비 및 계층 수 |
8192 × 512 | 16384 × 2048 | 32768 x 2048 | ||||||||||||||||||||||
| CUDA 배열에 바인딩된 2D 텍스처 참조의 최대 너비 및 높이 |
65536 × 32768 | 65536 × 65535 | 131072 x 65536 | ||||||||||||||||||||||
| 선형 메모리에 바인딩된 2D 텍스처 참조의 최대 너비 및 높이 |
65000 x 65000 | 65536 x 65536 | 131072 x 65000 | ||||||||||||||||||||||
| 텍스처 수집을 지원하는 CUDA 배열에 바인딩된 2D 텍스처 참조의 최대 너비 및 높이 |
빈칸 | 16384 x 16384 | 32768 x 32768 | ||||||||||||||||||||||
| 2D 계층형 텍스처 참조의 최대 너비, 높이 및 계층 수 |
8192 × 8192 × 512 | 16384 × 16384 × 2048 | 32768 x 32768 x 2048 | ||||||||||||||||||||||
| 선형 메모리 또는 CUDA 배열에 바인딩된 3D 텍스처 참조의 최대 너비, 높이 및 깊이 |
20483 | 40963 | 163843 | ||||||||||||||||||||||
| 큐브맵 텍스처 참조의 최대 너비 (및 높이) | 빈칸 | 16384 | 32768 | ||||||||||||||||||||||
| 큐브맵 계층형 텍스처 참조의 최대 너비 (및 높이) 및 계층 수 |
빈칸 | 16384 × 2046 | 32768 × 2046 | ||||||||||||||||||||||
| 커널에 바인딩될 수 있는 최대 텍스처 수 |
128 | 256 | |||||||||||||||||||||||
| CUDA 배열에 바인딩된 1D 서피스 참조의 최대 너비 |
지원 안됨 | 65536 | 16384 | 32768 | |||||||||||||||||||||
| 1D 계층형 서피스 참조의 최대 너비 및 계층 수 |
65536 × 2048 | 16384 × 2048 | 32768 × 2048 | ||||||||||||||||||||||
| CUDA 배열에 바인딩된 2D 서피스 참조의 최대 너비 및 높이 |
65536 × 32768 | 16384 × 65536 | 131072 × 65536 | ||||||||||||||||||||||
| 2D 계층형 서피스 참조의 최대 너비, 높이 및 계층 수 |
65536 × 32768 × 2048 | 16384 × 16384 × 2048 | 32768 × 32768 × 2048 | ||||||||||||||||||||||
| CUDA 배열에 바인딩된 3D 서피스 참조의 최대 너비, 높이 및 깊이 |
65536 × 32768 × 2048 | 4096 × 4096 × 4096 | 16384 × 16384 × 16384 | ||||||||||||||||||||||
| CUDA 배열에 바인딩된 큐브맵 서피스 참조의 최대 너비 (및 높이) | 32768 | 16384 | 32768 | ||||||||||||||||||||||
| 큐브맵 계층형 서피스 참조의 최대 너비 및 계층 수 |
32768 × 2046 | 16384 × 2046 | 32768 × 2046 | ||||||||||||||||||||||
| 커널에 바인딩될 수 있는 최대 서피스 수 |
8 | 16 | 32 | ||||||||||||||||||||||
| 커널당 최대 명령어 수 | 200만 | 5억 1200만 | |||||||||||||||||||||||
| 스레드 블록 클러스터당 최대 스레드 블록 수 | 아니요 | 16 | 8 | ||||||||||||||||||||||
| 기술 사양 | 1.0 | 1.1 | 1.2 | 1.3 | 2.x | 3.0 | 3.2 | 3.5 | 3.7 | 5.0 | 5.2 | 5.3 | 6.0 | 6.1 | 6.2 | 7.0 | 7.2 | 7.5 | 8.0 | 8.6 | 8.7 | 8.9 | 9.0 | 10.x | 12.x |
| 컴퓨팅 기능 (버전) | |||||||||||||||||||||||||
엔비디아 CUDA C++ 프로그래밍 가이드에서 더 많은 정보를 읽을 수 있다.
| 아키텍처 사양 | 컴퓨팅 기능 (버전) | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1.0 | 1.1 | 1.2 | 1.3 | 2.0 | 2.1 | 3.0 | 3.2 | 3.5 | 3.7 | 5.0 | 5.2 | 5.3 | 6.0 | 6.1 | 6.2 | 7.0 | 7.2 | 7.5 | 8.0 | 8.6 | 8.7 | 8.9 | 9.0 | 10.x | 12.x | |
| INT32 산술 연산용 ALU 레인 수 | 8 | 32 | 48 | 192 | 128 | 128 | 64 | 128 | 128 | 64 | 64 | 64 | 128 | |||||||||||||
| 모든 INT32 또는 FP32 산술 연산용 ALU 레인 수 | 빈칸 | 빈칸 | ||||||||||||||||||||||||
| FP32 산술 연산용 ALU 레인 수 | 64 | 64 | 128 | 128 | ||||||||||||||||||||||
| FP16x2 산술 연산용 ALU 레인 수 | 아니요 | 1 | 128 | 128 | 64 | |||||||||||||||||||||
| FP64 산술 연산용 ALU 레인 수 | 아니요 | 1 | FP32 16개 | FP32 4개 | 8 | 8 / 64 | 64 | 4 | 32 | 4 | 32 | 2 | 32 | 2 | 64 | 2 | ||||||||||
| 부하/저장 장치 수 | SM 2개당 4개 | SM 2개당 8개 | SM 2개당 8개 / SM 3개당 8개 | SM 3개당 8개 | 16 | 32 | 16 | 32 | 16 | 32 | ||||||||||||||||
| 단정밀도 부동소수점 초월 함수용 특수 함수 장치 수 | 2 | 4 | 8 | 32 | 16 | 32 | 16 | |||||||||||||||||||
| 텍스처 매핑 장치 (TMU) 수 | SM 2개당 4개 | SM 2개당 8개 | SM 2개/3개당 8개 | SM 3개당 8개 | 4 | 4 / 8 | 16 | 8 | 16 | 8 | 4 | |||||||||||||||
| 균일 INT32 산술 연산용 ALU 레인 수 | 아니요 | 2 | ||||||||||||||||||||||||
| 텐서 코어 수 | 아니요 | 8 (1세대) | 0 / 8 (2세대) | 4 (3세대) | 4 (4세대) | |||||||||||||||||||||
| 레이 트레이싱 코어 수 | 아니요 | 0 / 1 (1세대) | 아니요 | 1 (2세대) | 아니요 | 1 (3세대) | 아니요 | |||||||||||||||||||
| SM 파티션 수 = 처리 블록 | 1 | 4 | 2 | 4 | ||||||||||||||||||||||
| SM 파티션당 워프 스케줄러 수 | 1 | 2 | 4 | 1 | ||||||||||||||||||||||
| 단일 스케줄러가 매 사이클마다 발행하는 최대 새 명령어 수 | 2 | 1 | 2 | 2 | 1 | |||||||||||||||||||||
| 데이터 캐시 및 공유 메모리용 통합 메모리 크기 | 16 KiB | 16 KiB | 64 KiB | 128 KiB | 64 KiB SM + 24 KiB L1 (별도) | 96 KiB SM + 24 KiB L1 (별도) | 64 KiB SM + 24 KiB L1 (별도) | 64 KiB SM + 24 KiB L1 (별도) | 96 KiB SM + 24 KiB L1 (별도) | 64 KiB SM + 24 KiB L1 (별도) | 128 KiB | 96 KiB | 192 KiB | 128 KiB | 192 KiB | 128 KiB | 256 KiB | |||||||||
| GPU당 L3 명령어 캐시 크기 | 32 KiB | L2 데이터 캐시 사용 | ||||||||||||||||||||||||
| 텍스처 프로세서 클러스터 (TPC)당 L2 명령어 캐시 크기 | 8 KiB | |||||||||||||||||||||||||
| SM당 L1.5 명령어 캐시 크기 | 4 KiB | 32 KiB | 32 KiB | 48 KiB | 128 KiB | 32 KiB | 128 KiB | ~46 KiB | 128 KiB | |||||||||||||||||
| SM당 L1 명령어 캐시 크기 | 8 KiB | 8 KiB | ||||||||||||||||||||||||
| SM 파티션당 L0 명령어 캐시 크기 | SM당 파티션 1개만 해당 | 아니요 | 12 KiB | 16 KiB? | 32 KiB | |||||||||||||||||||||
| 명령어 너비 | 32비트 명령어 및 64비트 명령어 | 64비트 명령어 + 7개 명령어당 64비트 제어 로직 | 64비트 명령어 + 3개 명령어당 64비트 제어 로직 | 128비트 결합 명령어 및 제어 로직 | ||||||||||||||||||||||
| 메모리 파티션당 메모리 버스 너비 (비트) | 64 ((G)DDR) | 32 ((G)DDR) | 512 (HBM) | 32 ((G)DDR) | 512 (HBM) | 32 ((G)DDR) | 512 (HBM) | 32 ((G)DDR) | 512 (HBM) | 32 ((G)DDR) | ||||||||||||||||
| 메모리 파티션당 L2 캐시 | 16 KiB | 32 KiB | 128 KiB | 256 KiB | 1 MiB | 512 KiB | 128 KiB | 512 KiB | 256 KiB | 128 KiB | 768 KiB | 64 KiB | 512 KiB | 4 MiB | 512 KiB | 8 MiB | 5 MiB | 6.25 MiB | 8 MiB | |||||||
| 메모리 파티션당 (또는 이후 모델의 GPC당) 렌더 출력 장치 (ROP) 수 | 4 | 8 | 4 | 8 | 16 | 8 | 12 | 8 | 4 | 16 | 2 | 8 | 16 | GPC당 16개 | GPC당 3개 | GPC당 16개 | ||||||||||
| 아키텍처 사양 | 1.0 | 1.1 | 1.2 | 1.3 | 2.0 | 2.1 | 3.0 | 3.2 | 3.5 | 3.7 | 5.0 | 5.2 | 5.3 | 6.0 | 6.1 | 6.2 | 7.0 | 7.2 | 7.5 | 8.0 | 8.6 | 8.7 | 8.9 | 9.0 | 10.x | 12.x |
| 컴퓨팅 기능 (버전) | ||||||||||||||||||||||||||
CUDA는 다른 GPU 컴퓨팅 스택인 인텔 OneAPI 및 AMD ROCm과 경쟁한다.
엔비디아의 CUDA는 클로즈드 소스인 반면, 인텔의 OneAPI와 AMD의 ROCm은 오픈 소스이다.
oneAPI는 여러 하드웨어 아키텍처를 위한 소프트웨어 개발을 지원하기 위해 만들어진 오픈 표준 기반의 이니셔티브이다. oneAPI 라이브러리는 특별 관심 그룹에서 공개적으로 논의되는 오픈 사양을 구현해야 하며, 모든 개발자 또는 조직이 자신만의 oneAPI 라이브러리 버전을 구현할 가능성을 제공한다.
원래 인텔에서 만들었으며, 다른 하드웨어 채택자로는 후지쓰와 화웨이가 있다.
UXL (Unified Acceleration Foundation)은 엔비디아의 CUDA에 대한 오픈 대안을 제공하는 것을 목표로 워킹 그룹 및 특별 관심 그룹 (SIG)을 통해 새로운 오픈 표준 가속기 소프트웨어 생태계, 관련 오픈 표준 및 사양 프로젝트를 지속적으로 개발하기 위해 노력하는 새로운 기술 컨소시엄이다. 주요 참여 기업은 인텔, 구글, ARM, 퀄컴, 삼성, 이매지네이션, 그리고 VMware이다.
ROCm은 AMD (Advanced Micro Devices)의 그래픽 처리 장치 (GPU) 프로그래밍을 위한 오픈 소스 소프트웨어 스택이다.