??? GPU ??????? ??? ? ?? ?? ??? ???? ???, ????? ??, ?????? ????? ? ? ??? ????. OpenACC ?? ???? ???? GPU? ?? ?? ??? ?? ?? ??? ?? ????? ??? ??? ???? ? ?????. ???? ??? ??? ?? ??????? ??? ??? ???? ?? ?? ????.
CUDA C, C++ ?? ????? ??? ?????? ?? ? ??? ???? ????? ???? ?? ?????? ??? ??? ??? ??? ?????? ?? ??? ???? ???. ??? ??? ??? ? ?? ?? ?? ?????? ????????.
NVIDIA Math ?????? ??? ???? ? ?? ??? ??? ?? ??? GPU ????? ????? ???? ???? ? ????. ??????? ??? ??? ? ?? ??? ?? ??? ? ???? ???? ?????? ??? ?????? ??? ?? ? ?? ??? ?? ??? ?????.
CUDA Toolkit? ??? ???(HPC) ????? ?? ??(SDK)?? ????? ???? NVIDIA Math ?????? ???? ??? ??? ?? ???? ? ? ?? ?? ?? ?? ???? ?????. ?? ?? ???? ?? ??, ? ??, ?? ???, ?? ?? ??(CFD), ?? ??, ?? ?? ??, ?? ?? ?? ????.
??? ?????? OpenBLAS, LAPACK, Intel MKL ?? ?? CPU ?????? ??? ?? ??? ???? ?? ????? NVIDIA GPU? ?? ??????? ??? ? ??? ???????. ??? ??? ??? ? ? ??? DGEMM(Double Precision General Matrix Multiplication) ?? ??? ???? cuBLAS? OpenBLAS? ??? ??????.
?? ?? ??? OpenBLAS DGEMM ??? ??? ????? ?????.
// Init Data
…
// Execute GEMM
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasTrans, m, n, k, alpha, A.data(), lda, B.data(), ldb, beta, C.data(), ldc);
?? ? ?? ?? ??? cuBLAS DEGMM ??? ??? ????.
// Init Data
…
// Data movement to GPU
…
// Execute GEMM
cublasDgemm(cublasH, CUBLAS_OP_N, CUBLAS_OP_T, m, n, k, &alpha, d_A, lda, d_B, ldb, &beta, d_C, ldc));
? ???? ? ? ??? ??? ???? OpenBLAS CPU ??? cuBLAS API ??? ??? ? ????.?cuBLAS ? OpenBLAS ??? ?? ?? ??? ?????. cuBLAS ??? NVIDIA(R) V100 Tensor Core GPU?? ?? 20??? ???? ??????. ?? ???? ?? ? ??? ???? ? ???? ??? ??? ????.

???? ??: ? ?????? cuPy, cuDNN, RAPIDS ?? ?? ?? Python API? ?? ???? ??? API? ??? ??? ??? ?? NVIDIA Math ?????? ??? ????.
?? ????? ?? ??? Math ?????? ?? ???????. ?? ???? ? ??? NVIDIA Math ?????? ?? ?? ???? ??? ? ????.
CPU? ???? ??? ???? ?? ??
BLAS? GPU ?? ???? ?? ??? ????? ??? ? ?? NVIDIA Math ?????? ????. ???? NVIDIA Math ?????? ?? ??? ???? ????? ??? ??? ?? ? ?? ??? ?? ?????.
cuBLAS? ?? BLAS ??
GEMM(General Matrix Multiplication)? AI ? ?? ?? ??? ???? BLAS(Basic Linear Algebra Subprograms) ??? ?? ?? ??? ?????. ?? ? ?? ???????? ???? ??? ?????. GEMM? ? ?? ?????? ???? ??? ?? ??? ?? ??? ? ???? GEMM? ??? ??? ?????.
cuBLAS ?????? ??? GPU ?? ??? ???? BLAS ??????. ? ?????? ??(?? 1), ???(?? 2), ???(?? 3) ?? ?? ? ?? ??? ??? ? ?? ???? ???? ????.
?? ??-?? ?? ?? ???? ??? cuBLAS? ??? ?? ?? ??? GEMM? ???? ?? ??, ?? ?? ? LAPACK??? ??? ? ????. ?? ??, ?? ???? ??? ?? ? ?? ??? ?? ??? ?? ??? CPU ? GPU?? BLAS ?? ??? ?? ?? ??? ?????.
cuBLASXt
?? ??? ?? ?? GPU??? ?????, ??????? ??-??, ??-GPU ??? ??????cuBLASXt? ?? ??? ? ? ????. cuBLASXt? ????? CPU-GPU ??? ??? ?? ??? BLAS Level 3 ??? ???? herk ?? Hermitian ??? ?????? ??-?? ??? ?????.
cuBLASLt
cuBLASLt? GEMM? ???? ?? ????????. ? ?????? ?? 2? ??? ?? ??? “??”? ?? ??? ??? ??????? ???? ??? ??? ???? ??? ?? ??? ??? ??? ?????. ?? ???? ????? ??? ??? ???? ?? ?????(????? ReLU ??? ???? ?????, ???? ???? ?? ??? ??).
cuBLASMg: CUDA Math Library Early Access ????
?? ??? ??? cuBLASMg? ?? ??-GPU, ??-?? ??-???? ????? ?????. ?? ? ???? CUDA Math Library Early Access ?????? ???? ????. ?? ????? ?????.
cuSPARSE? ?? ?? ?? ??
?? ??, ?? ???(SpMM)? ??, ???, ??? ??, ?? ??, ? ??, CFD, ?? ?? ?? ??? ??? ?? ????? ?????. ?? ?? ?? ??????? ???? ?? ?? ??? ?? ?????.
??? ??? ?? ?? ?? ? ??? ?? ??? ???? ?? ???? ???????. ? ?? ?? ? ?? ? ??? ??? ????? ??? ??? ???? ?? ??? ??? ????. ??? ??? cuSPARSE ?? ?????? ???? ?? ??? ?? ??? ?? ???? ?? ???? ??? ?????.
cuSPARSE?? ???? BLAS ??? GPU ?? ??? ??? ? ???? ?? ??? ???? ? ??????. ????? ??? 4?? ????? ????.
- ?? 1? ?? ??? ?? ?? ???? ?? ?? ??? ?????.?
- ?? 2? ?? ??? ?? ?? ???? ??-??? ?? ??? ?????.?
- ?? 3? ?? ??? ?? ?? ?? ???? ??-??? ?? ??? ?????.?
- ?? 4? ??? ?? ??? ?? ????, ?? ???(CSR) ??? ?????.
cuSPARSELt
?? ???? ? ??? ??? helper ??? ?? ?? ??-?? ???? ??? ? ?? ?? ??? cuSPARSE ?????? ?????cuSPARSELt? ?????. cuSPARSELt ?????? ?? ??? ?? ??? cuSPARSELt? ?? NVIDIA Ampere ??? ??? ????? ?????.
cuTENSOR? ?? ?? ?????? ???
cuTENSOR ?????? ?? ???? ????? ??????. ??? ?? ?? ??????? ???? ?? ??? ?? ??? ??? ?? ???? ???? ? ???? ? ? Math ?????. cuTENSOR? ?? ?? ??, ?? ??, ??? ?? ??? ?? ??? ???? ??? ? ?? ?? ? ??, ??? ??, ?? ??, ?? ??? ???? ??? ??? ? ?????.
cuTENSORMg
cuTENSOR ??? ??? ??? DGX A100? ??? ??? ??? ??? ?? ??? ??-GPU? ????? ??? cuTENSORMg? ?????. ? ?????? ?? ???? ????? ??? ?? ??? ?? ?? ??? ?? ?? ??, ?? ??, ??? ?? ??? ???? ????. .
cuSOLVER? ?? GPU ?? LAPACK ??
cuSOLVER ?????? cuBLAS ?????? cuSPARSE ?????? ???? ???? ??? ??? ?? ?? ??????. cuSOLVER? ?? ????, ?? ??? ?? ?? ?? ??, ?? ???? ??, ??? ?? ?? LAPACK? ??? ??? ?????.
cuSOLVER? ??? ?? ? ?? ??? ???? ????.
- cuSolverDN? ?? ?? ????? ?????.
- cuSolverSP? ?? QR ????? ???? ?? ?? ??? ?????.
- cuSolverRF? ?? ????? ???? ?? ??? ??? ??? ??? ??? ???? ? ?????.?
cuSOLVERMg
GPU ?? ScaLAPACK ??, ??? ?? ??, 1-D ?? ?? ?? ???? ??, cuSOLVER ??? ?? ??-??, ??-GPU ??? ????? cuSOLVERMg? ???????.
cuSOLVERMp
??? ?? ??? ??? ????? ??-??, ??-GPU ??? ?????. ??? LU ???? ??? Cholesky ???? ???? ? ??? cuSOLVERMp? ??????.
cuRAND? ?? ??? ?? ??
cuRAND ?????? ???(CPU) API ?? ????(GPU) API?? ?? ?? ?? ?? ?? ???? ?? ????? ??? ?????. ??? API? ?? ????? ??? ???? ??? ???? ??? ? ????. ????? ?????? ???? ??????? ?? ??? ????? ??? ??? ?????? ???? ?? ???? ?????.
???? API? ?? ??? ??? ???? ?? ??? ??? ? ?? ??? ?????. ??? ??? ??? ???? ?? ???? ??? ?? ?? ??? ???? ?? ?????. ? ?? ?? ?? ???? ??? ?? ??? ??? ??? ??? ????.
????? ?????? GPU?? ?? ???? ??? ?? ?? ? ?????. CUDA Fortran?? ????? ??????? ??? GPU ?? ?? PRNG ????? ??? ?? cuRAND? ???? ??? ??? ???? ??? ???? ?? ????.
cuFFT? ?? ?? ??? ?? ??
CUDA Fast Fourier Transform(FFT)? ???? cuFFT ?????? NVIDIA GPU?? ??? FFT? ??? ? ?? ?????? ?????. FFT? ??? ?? ??? ??? ??? ?? ??? ??? ????? ??? ? ?? ??-?? ???????. ?? ?? ????? ?? ?? ???? ?? ?? ???? ?? ???? ? ????? ???.
cuFFT? ?? ?? ??, ?? ??? ? ???? ???? ?????. ??? ????? ??? ?? ?? ??? ???? ?? ??? ??? ?? ??? ??? ???? cuFFT? ???? ???? ????. ?? FFTW ?????? ????? ??? ??? NVIDIA GPU? ????? cuFFTW? ???? ???. cuFFTW ?????? FFTW3 API? ???? ?? FFTW ??????? ??? ?? ??? ? ??? ?????.
cuFFTXt
FFT ?? ??? ?? ??? GPU? ????? ??? cuFFTXt? ????. ? ??????? ???? ??-GPU?? ???? ???? ??? ??? ??? ? ?? ??? ???? ??? ??? ???? ???? ???? ??? ? ????.
cuFFTMp
cuFFTMp? ?? ????? ??-GPU? ??? ?? ??? ?? ???? ??-GPU?? ?????. ? ?????? MPI ???? ??? ??? ?? ??? ?? MPI ????????? ?? ?????. ? ??? NVIDIA GPU? ??? ??? OpenSHMEM ?? ?? ?? ?????? NVSHMEM? ?????.
cuFFTDx
???? ?? ??? ??? ??? ?? ??? ??? FFT ??? ???? ??? ??? ??? cuFFTDx (cuFFT device extensions)? ?????. Math Libraries Device Extensions?? ????? ???? ? ?????? ???? ??????? ??? ?? ??? FFT? ??? ? ????.
CUDA Math API? ?? ?? Math ?? ???
CUDA Math API? NVIDIA GPU ????? ???? ?? ?? ??? ???? ??????. CUDA ?????? ?? CUDA Math ?????? ?????. CUDA Math API? ?? C99 ?? ?? ??? ? ???? Math ??? ??? ?? ???/????/?? ??? ??? ? ?? ?? ? ?? ??(cospi, sincos), ?? ?? ???(erfinv, erfcinv) ?? ??? ??? ?????.
C++ ???? CUTLASS? ?? ???? ?? ??? ??
???? ??? ?? ???? ???? ??? ???. ?? ? ?? ????? ????? ????? ??? ??? ?? ??????. cuBLAS? ????? CUTLASS(CUDA Templates for Linear Algebra Subroutines) ?? ?? ? ???? ??? ?? ? ?? ???? ?? ??? ?????.
???? cuBLAS? cuDNN? ??? ? ???? ??? ??? ??? ?? ? ??? ?? ??? ???? ????. ??? CUTLASS? ?? ??? ??? ??? ?????? ??? cuBLAS? ????. GEMM?? ???? ??? C++ ??? ???? ??? ? ?? ?? ?? ?? ???? ???? ??? ????? ???? ??? ??? ? ????. ?? ??? ??? ??? ???? ???? ???? ?????? ?????. ??? ?? ?? ?? ???? ????? ??? ???? ?????, ??? ????? ????, ??????? ??? ?? ???? ??? ? ????. CUTLASS? ??? ?????? ??? ?? ? ?? ??? ?? ??? ?? ????CUTLASS: CUDA C++? ?? ?? ??? ?????.
AmgX? ?? ?? ??? ??
AmgX? GPU ?? AMG(Algebraic Multi-Grid) ?????? ????, ?? ??? ?? GPU ?? ??-GPU?? ?????. ??? ???? ?? ?? ??, ???, ??????? ??? ? ????. ? ?????? block-Jacobi, Gauss-Seidel, dense LU ? ??? ???? ??? ??? ? ??? ???? ??? ????? ??? ?????.
? ??????? PCG, BICGStab ?? ????? ??? Krylov subspace ?? ???? ???? ???? AmgX? ??????? ?? ???? ?? ??? ?? 10??? ???? ??? ??? ??? ??? ?????.
AmgX? ?? CFD ?? ??? ??? ?????? ???, ???, ??? ?? ?? ????? ?? ?????. ?? ?? ??? ??? ???? ??? ??? ??? ????? ??? ???? ?? ?? ?? AmgX ?????? ?????.
??? ???? ????? ?? ?? GPU?? AmgX ??? ??? CFD ??? ???? ? ??? ??? ??? ????? ? ? ????. 12?? CPU ?? 1?? ???? ? K20 GPU 1??? ?? ??? 300? ?? 21??? ?????.
NVIDIA Math ????? ????
?cuBLAS, cuRAND, cuFFT, cuSPARSE, cuSOLVER, CUDA Math ?????? NVIDIA HPC SDK? CUDA Toolkit?? ?? ?????.
- cuFFTDx(Math Library Device Extensions)? MathDx 20.22?? ??? ? ????.
- cuTENSOR,?cuSPARSELt,?MathDx? DevZone?? ??? ? ????.
- AmgX,?CUTLASS? GitHub?? ??? ? ????.?
- cuBLASMg? ?? CUDA Math Library Early Access ?????? ?? ?????.
???? NVIDIA Math ?????? ???? ?? ??? ??? ?????. ??? ?? ??? ??? ??? ???? ??? ?? ???? Matthew Nicely?? ????? ????.