CUDA 是 NVIDIA 於 2007 年推出的平行運算平台和 API,允許使用 C/C++ 直接控制 GPU 進行通用計算(GPGPU)。CUDA 提供了完整的開發工具鏈,包括編譯器(nvcc)、除錯器、效能分析器,以及 cuBLAS、cuFFT、cuDNN 等函式庫。它是深度學習訓練最主流的加速框架。
GPU 由多個 SM(Streaming Multiprocessor)組成,每個 SM 包含 CUDA Core、Tensor Core、Register File、Shared Memory、L1 Cache。執行緒(Thread)是基本執行單位,以 32 個為一組形成 Warp,Warp 是 GPU 的最小排程單位。數百萬個執行緒同時運行形成巨大的平行度。
// 執行階層:Grid → Block → Thread
__global__ void vecAdd(float *A, float *B, float *C, int N) {
int i = blockIdx.x * blockDim.x + threadIdx.x;
if (i < N) C[i] = A[i] + B[i];
}
// 呼叫 kernel
int threadsPerBlock = 256;
int blocksPerGrid = (N + threadsPerBlock - 1) / threadsPerBlock;
vecAdd<<<blocksPerGrid, threadsPerBlock>>>(dA, dB, dC, N);