从高层 PyTorch 到中层 CUDA Kernel 到底层硬件 Tensor Core
层级 | 组件 | 作用 | 举例 |
---|---|---|---|
① 高层框架 | PyTorch | 用户用它写模型,调用 tensor 操作 | torch.matmul(a, b) |
② 执行层 / 中间层 | CUDA kernel | 实现 PyTorch 的底层算子逻辑,运行在 GPU 上 | cublasGemmEx() , custom_op |
③ 硬件执行层 | Tensor Core | NVIDIA GPU 中用于高效执行矩阵乘法的物理单元 | FP16/FP8 TensorMath 单元 |
🔧 Tensor Core 是什么?
是 NVIDIA Volta 之后引入的硬件结构(TensorMath 单元)
本质是一个 4x4 或 8x8 矩阵乘加(FMA)模块
优化执行如下类型计算:
D = A × B + C
支持精度:FP16, BF16, TF32, FP8(取决于架构)
➡️ Tensor Core 能以比传统 CUDA core 快几倍的吞吐执行矩阵乘法!
🛠️ CUDA kernel 是什么?
是你编写或 PyTorch/库调用的 GPU 端执行代码
是 GPU 上的计算任务载体(你可以手写 .cu 文件,也可以用 JIT 写)
举例:
PyTorch 自带 kernel:aten::add, aten::matmul
cuBLAS kernel:cublasGemmEx()
你自己写的 kernel:my_custom_add<<<>>>
➡️ CUDA kernel 调度线程块 + 调用底层硬件单元(如 Tensor Core)
🧩 torch.compile、custom kernel 与 Tensor Core 的连接
模块 与 Tensor Core 的关系
torch.compile 会尝试 fuse 运算 → 使用 Triton / cuBLAS 等生成高效 kernel
Triton kernel 能生成调用 Tensor Core 的代码(例如 FP16 matmul)
Custom CUDA kernel 你手写 kernel 时,可以手动调用 Tensor Core 相关 intrinsics