一句话定义:CUDA Core(CUDA 核心)是 NVIDIA GPU 中最基础、最通用的标量计算单元,一次执行一条简单的算术运算,比如一次乘法、一次加法,或一次“乘加”。
展开讲讲:把 GPU 想成一座大工厂。工厂里有很多被称作流多处理器(SM,Streaming Multiprocessor)的“车间”,每个车间里有调度员、有存放原料的仓库(寄存器和共享内存),还有几十上百个工位——工位就是 CUDA Core。每个工位上的工人只会做极简单的动作,但成百上千人同时开工,整体产出就很可观。
这背后是单指令多线程(SIMT,Single Instruction Multiple Threads)的思路:同一批 CUDA Core 在同一时刻执行同一条指令,只是各自处理的数据不同。比如做向量加法,一个核心负责第 1 个元素,另一个负责第 2 个,以此类推。所以 GPU 擅长的是“同样的简单动作、海量的数据”,而不是“复杂的判断和跳转”。后者是 CPU 的强项:CPU 核心少,但每个核心像一位博士,能处理复杂逻辑、大缓存和乱序执行。
和相邻概念的区别:最容易混的是 Tensor Core。
| 维度 | CUDA Core | Tensor Core |
|---|---|---|
| 定位 | 通用标量运算 | 专用矩阵乘加 |
| 一次处理 | 个别数据的乘加 | 一小块矩阵的乘加 |
| 灵活性 | 高,各种算子都能跑 | 低,只认特定形状与精度 |
| 类比 | 全能工人 | 专用机床 |
Tensor Core 是“特种兵”:它把矩阵乘法中大量的乘加融合成一个动作,一次处理一小块矩阵,在深度学习的矩阵乘里吞吐远高于让 CUDA Core 逐个元素去算。但它挑活,需要数据形状和精度满足要求,不规则的算子、标量运算、复杂控制流仍要交回 CUDA Core。另外还有两个概念别搞混:CUDA 是编程模型和平台的名字,CUDA Core 只是借它命名,并非“CUDA 的核心”;SM 是“车间”,CUDA Core 是车间里的工位。
对实际工作的意义:做模型优化的人,看到某个算子跑不满 GPU,常见原因就是形状太小或不规则,喂不饱 Tensor Core,只能退回 CUDA Core 慢慢算,或者并行度不够、车间没坐满。这也解释了为什么很多框架会把矩阵维度补齐到某些倍数。
对普通职场人,意义在于别把“核心数”当成唯一指标。买算力像买工厂产能:不能只数工人,还要看有没有自动化设备(Tensor Core)、原料供应跟不跟得上(显存带宽)、订单形状适不适合流水线。同一个数字在不同代架构之间也不能直接横比,具体规格以官方页面为准。
