NVIDIA? ?? CUDA ?? ????? ???? 12.0? ?????. ? ???? ?? ?? ???? ??? ?? ????, ??? ???? ??? ?? ??? ????? ??? CUDA ?????? ???? ??? ?? ????.
??? ??? YouTube Premiere ???, CUDA 12.0: ??? ??? ??? ?????.
?? CUDA ??? ??, ??? ????? ? ??? ??? ?? NVIDIA Hopper ? NVIDIA Ada Lovelace ?????? ???? ?? ?? ? ??? ???? ? ? ????.
CUDA 12.0?? ??? ?? ?? ? ??? ?? ??? ?? ???? ????. ?? ?? ??? ??? ??? ?? ????, ? ?????? ?? ??? ?? ??? ?????.
??
- ? ?? ??? C ? C++ API? ?? ??? PTX ?? ? ??? ???? ?? GPU? ?? ???? ????? ?? ?? ??? ?? ??? NVIDIA Hopper ? NVIDIA Ada Lovelace ???? ?? ??
- ??? CUDA ?? ?? ?? API ???? ?? API? ?? ??? ?? ?? ??
- CUDA ??? API ?? ??:
- ?? ?? ?? ??? ???? GPU ???? ? ???? ??? ?? ??? ??? ? ????. ? ??? ???? ??? ??? ??? ??? ??? ???? ??? ? ???? CUDA ???? ???? ?? ?? ? ????.
- cudaGraphInstantiate API? ???? ?? ????? ????? ?????????.
- GCC 12 ??? ???? ??
- C++ 20 ??
- JIT LTO? CUDA ??? ??? nvJitLink ?????
- ????? ??? ? ?? ?? ??
- Nsight Compute ? Nsight Systems ??? ?? ????
- ?? Linux ??? ?? ?? ????
??? ??? CUDA ?? 12.0 ??? ??? ?????. CUDA ?? 12.0? ????? ? ????.
NVIDIA Hopper ? NVIDIA Ada Lovelace ???? ??
CUDA ??????? ??? GPU ????? ???? ??????(SM) ? ??, ??? ??? ?? ? ?? ?? ??? ??? ?? ?? ? ????. CUDA ? CUDA ?????? GPU ???? ???? ?? ??? ???? ??? ?? ???? ?????.
CUDA 12.0? NVIDIA Hopper ? NVIDIA Ada Lovelace ????? ??? ??? ????? ??? ??? ?????.
- ?? PTX? ?? ?? Tensor ?? ?? ??
- TMA ??
- TMA ?? ??
- Ultra xMMA(FP8 ? FP16 ??) 32?
- ?? ????? NVIDIA Hopper GPU? membar ??? ??
- smem ??? ?? PTX ? C++ API ??
- CGA(Coperative Grid Array) ?? ??? C ?? ?? ??
- SM ?????? ?? ????? ??? L2 ?? ??(NVIDIA Hopper GPU? ??)
- SIMT ??? ?? PTX ??: elect_one
- ?? ???? ? DPX ??? NVIDIA Hopper GPU?? ??? ? ?? ? ?? ?? ?? ?? ??(three-way max, fused add+max ?)? ?????.
?? ??
?? ??? ??????? ??? ??? ??? ??? CPU ? ?? ??? ??? ????? ?????. ???? ?????? ?? ???? ? ?? ??? ????? ?????. ?? ?? ???? ? ??? ????? ??? ????? ?? ? ?? ?? ??? ?? ??? ? ????.
?? ??? 11.7 ????? CUDA? ???????. ??? CUDA ????? ???? ?? ???? ??????. ?????? ?? ????? ?? ??? ??? ? ??? ?? ???? ????. ?? ??????? ??? ?? ??? ?? ?????.
?? ?? ??? ??? ??? ??? ??????? ?????? ? ????. ?? ???? ??? ??? ?? ???? ??????? ????? ?? ?? ?????. ?? ?? ?? ?? ? ?? ???? ????? ????.
Metric | Baseline | CUDA 11.7 | CUDA 11.8+ | Improvement |
End-to-end runtime [s] | 2.9 | 1.7 | 0.7 | 4x |
Binary load time [s] | 1.6 | 0.8 | 0.01 | 118x |
Device memory footprint [MB] | 1245 | 435 | 435 | 3x |
Host memory footprint [MB] | 1866 | 1229 | 60 | 31x |
? 1. ?? ??? ?? ?????? ?? ?? ??
?? ??? ?? ???? ?? ?????? 11.7 ???? ???? ???.
? ?????? ????? CUDA ???? ?? ??? ????? ?? ????. ??????? ?? ????? ?? ?? CUDA_MODULE_LOADING=LAZY ??? ?? ?????.
???
CUDA ??? ?? ???? 11.x?? ??? ????, ??? ?? ????? ??????? ?? ??? ??? CUDA ??? ???? ??? ? ?? ???? ?????. ??? ? ? ????? ??? ?? ??? CUDA ??? ?? ??? ???? ?????, CUDA ??? ? ??? ?? ????? ???? ??? ? ????.
?? ?? 11.6 ??????? 11.8 ??? ? ? ??? ??? ? ??? ? ??? ?????. ?? ????? ?? ?? API ?? ABI ???? ?? ??????. ??? ??? CUDA ???? ?????.
??? ??? ???? CUDA 12.x?? ?????. ??? 12.0? ??? ?? ?????? ???? ?? ???? ?????. 11.x?? ??? ?? ???? ??? ??????? 12.0? ??? ? ??? ??? ? ????. ??????? 12.0? ?? ?????? 11.x?? ??? ?????? ???? ???? ?? ???? ?????.
?????, 12.0? ?? ?????? ??? ??????? ??? 12.x ??? ????? CUDA ?? 11.x??? ??? ????? ????.
JIT LTO ??
CUDA 12.0 ???? JIT LTO ??? ?? ??? nvJitLink ?????? ?????. NVIDIA? ? ??? ???? ??? ???? ????. ??? ??? ???? ?? ??? ?????.
C++20 ???? ??
CUDA ?? 12.0? C++20 ??? ?? ??? ?????. C++20? ?? ??? ???? ? ?? ?? ??? ?? ????? ????.
- GCC 10
- Clang 11
- MSVC 2022
- NVC++ 22.x
- Arm C/C++ 22.x
??? ?? ??? ??? ?? ??? ???? ???? ?????.
???? C++20 ??? ??? ? ???? ???? ??? ? ??? ??? ?????.
?? ??
?? ??? ???? ???? ??? ? ?? ??? ???? C++20? ??? ???????.
CUDA ???? ????? ??? ???? ?? ??? ?? ??? ????? CUDA C++?? ??? ??? ?? ???? ???? ???? ????. ??? ???? ? ???? ??? ??? ??? ?????.
??? ??
???? ?? ?? ??? ?????. ??? ?? ??? ? ??? ? ?? ?? ??? ????? ?????. ?? ???? ??? ??? ???? ?????.
???? ??? ???? ????? ???? ????? ???? ????. ???? ??? ???? co_await, co_yield ? co_return ???? ??? ???? ??? ?? ??? ?????.
3?? ?? ???
3?? ?? ???(<=>)? ????? ?? ??? ???? ??? ? ??? ???? ??? ??? ??? ??????.
?? ??? ?????? ???? ??? ???? ???? ???? ??? ??? ????? ??? ??? ???? ????? ??? ?????.
???? ?? ???? ??? ??? ???? ??? ?? ??? ?????.
Nsight ??? ??
Nsight ??? ??? CUDA ?? 12.0? ?? ???????.
NVIDIA Nsight Systems 2022.5? InfiniBand ??? ??? ???? ????? ???????. NVIDIA Quantum InfiniBand ???? ????? ?? ??? ??? ?????. Nsight Systems ?????? ??? ???? ???? ??????? ???? ???? ? ? ??? ? ????. ?? ??? ???? ??????? ??? ???? ? ????.

Nsight ??? ????? ??? ? ??? ???????. Nsight Systems? ?? ??? ?? Nsight Compute? ?? ??? ?? ?? ??? ?????.
? ????? ????? ?? Nsight Compute 2022.4??? Nsight Systems ??? ?????. ?? ??? ???? ??? ?? ??? ???? Nsight Compute ??????? ???? ??? ? ????. ?? ?? ???? ???? ???? ???? ?? ?????? ??? ? ????.
? ?????? ???? ?? ? ?? ?? ?? ??????? ??? ??? ????. ??? ?????? ??? ?? ??? ? ????.

?? Nsight Compute 2022.4?? ??? ?? ?? ????? ?? ??? ?? ???? ???? ??? ??? ?? ???? ?????. ?? ??? ??? ? ??? ???? ??? ????? ?? ??? ??? ??? ?? ??? ????? ????? ??? ? ????.
?? ???? ???? ??? ??? ? ???? ??? ??? ?? ??? ??? ? ?? ? ?? ??? ??? ? ????. ? ?? ????? ? ? ???? ??? ??? ?? ???? ??? ??? ????? ??? ?? ??? ? ??? ?? ???? ?????.

?? ?? ?? ??? NVIDIA OptiX ?? ?????? ?? ??? ???? ??? ??? ? ?? ??? ???????.
??? ??? NVIDIA Nsight Compute, NVIDIA Nsight Systems, Nsight Visual Studio Code Edition? ?????.
?? ????? ????
?????? ??? ?? ??? ? ??? ????? ???? ??? ??? ??? ?????. ? ?????? ???? ??? ?? ?? ?? ??? ??????. NVIDIA? ??? ???? ?? ??? ????? ???? ?? ?? ??? ??????. cuFFT? CUDA ?? 11.8? 12.0 ???? 50% ??? ?? ? ?? ??? ?????.
??? ??? ??? ?? ? ?? ????? ?? ?????.
cuBLAS
cuBLASLt? ??? FP8 ??? ???? ?? ??? ?? ??? ?????. ??? ??? ?? BF16 ? FP16 ?? ???? ??? FP8 ?? ? ?? ??? ??? ?? GEMM? ?? GELU ??? ??? ?? FP16 ??? ?????.
??? ???? FP8 GEMM? A100? BF16? ?? H100 PCIe ? SXM?? ?? ?? 3? ? 4.5? ? ?? ? ????. CUDA Math API? ??? FP8 ?? ?? ??? ??? ???? ?? ?? FP8 ??? ?????.cuBLAS 12.0? API? ???? 64?? ?? ?? ??, ?? ?? ? ?? ??? ?????. ??? ??? ??? ??? _64 ???? ??? ?? ????? int64_t ???? ?? ????? 32?? ??? ??? API? ????
cublasStatus_t cublasIsamax(cublasHandle_t handle, int n, const float *x, int incx, int *result);
64?? ?? ??? ??? ????:
cublasStatus_t cublasIsamax_64(cublasHandle_t handle, int64_t n, const float *x, int64_t incx, int64_t *result);
cuBLAS? ??? ?? ?????. 64?? ?? API? ??? ??? 32?? ??? ??? ?????? 32?? ?? API? ???? ?? ??? ??? ?????. ? API? ????? int32_t ??? int64_t?? C/C++ ?? ?? ??? cuBLAS ??? _64 ???? ???? ??? ???? ???.
cuFFT
?? ??? ?? cuFFT? ????? ??? ??? ??? ???? ?? ?? ???? ??? ???? ??? ?????.
CUDA 12.0?? cuFFT? ???? ?? ?? CUDA PTX(Parallel Thread eXecution) ???? ??? ???? ??? ? ?? ??? ?????.
cuFFT ??? PTX ??? cuFFT ??? ???? ? ???? CUDA ???? ????? ?? ???? ??? ???? ??????. ??? ???? ?? ???? ? ?? ?? ??? ?? NVIDIA Maxwell, NVIDIA Pascal, NVIDIA Volta ? NVIDIA Turing ????? ?? ??? ??? ?? ??? ?????.
cuSPARSE
SpGEMM(sparse-sparse matrix multiplication)? ??? ?? ??? ??? ?? NVIDIA? ??? ???? ?? ? ?? ??? ????? ?????. ? ?? ????? ?? ??? ?? ?? ??? ??? ???? ? ?? ????? ???? ??? ??? ? ????. ??? ??? ????? ??? ?? ??? ?? ????? ???? ???? ?????.
INT8 ??? cusparseGather, cusparseScatter ? cusparseCsr2cscEx2? ???????.
????? SpSV ? SpSM? ?? ??? ??? ?? 2.5? ???????. ?? ???? SpSV? ?? 1.1? ???? SpSM? ?? 3.0? ?????.
?? API
??? NVIDIA Hopper ?????? 3-way max, fused add+max ?? ?? ?? ?? ??? ? ??? ??? ? ?? ??? ???? ? DPX ???? ?? ?????.
??? DPX ???? ?? ????? ????? A100 GPU?? ?? 7?? ??????. ?? ?????? ??? ?? ??? ? ??? ?? ??? ????? ???? ???? ?????. ? ?? ??? ??? ?? ? ??? ?? Math API? ?? ?????.
?: 3-way max + ReLU ??, max(max(max(a, b), c), 0)
int __vimax3_s32_relu ( const int a, const int b, const int c )
??? ??? NVIDIA Hopper GPU DPX ???? ??? ?? ????? ?? ??? ?????.
??? ?? ????: nvJPEG
nvJPEG? ?? GPU ??? ?? ??? ?? ??? ??? ??? ?????. ?? ?? ?? ??? ??, ?? ?? ? ?? ? ? ?? ??? ???? ?????.
??
NVIDIA? ???, ???, ???? ???? ????? ??? ?? ???? ?? ??? AI/ML ? ??? ???? ??? ????? ???? ? ???? ??? ?? ????.
? CUDA 12.0 ???? ?? ?? ??? ? ?? ?? ????? ??? NVIDIA GPU ???? ??????? ????? ? ??? ?? ?????. NVIDIA Hopper ? NVIDIA Ada Lovelace ????? ??? ????? ?? ? ??? ?? CUDA ??? ??, ??? ????? ? ??? ??? ?? ???? ??? ? ????.
CUDA ??? ???? GPU ?? ???? ???, ???? ?????? ?????? ?????, ???? ?? ??? ? HPC ??????? ??????? ??, ??? ? ??? ? ????. ? ???? GPU ?? ?????, ??? ? ??? ??, C/C++ ????, ??? ?????, ??? ?? C/C++ ? Python ?????? ?? ???? ?????.
??? ??? ?? ???? ????? ????.