CUDA Academy · 课时

混合精度:FP16、BF16、TF32

以精度换取吞吐量

第 2 / 4 课13 个步骤

混合精度:FP16、BF16、TF32 是 CoddyKit 上的免费 CUDA Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CUDA Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CUDA Academy 课程共包含 4 节课。

用位数换速度

张量核心通过混合精度获得速度:输入较小的数字格式,使硬件每个周期能够执行更多运算。⚡

FP32 的代价

标准FP32每个值使用 32 位。它精确但开销较大,因此移动和计算大量 FP32 数值会消耗带宽和时间。

认识 FP16

FP16仅使用 16 位:指数更小,有效数位也更少。大小减半意味着每次可以移动并计算更多数值。

FP16 的范围较小

FP16 可以节省空间,但较窄的指数范围带来了很小的动态范围。非常大或非常小的值可能会溢出或变为零。

认识 BF16

BF16同样使用 16 位,但保留 FP32 的完整指数范围,代价是减少有效数位。它拥有 FP32 的范围,但精度更低。

BF16 为何适合训练

由于 BF16 具有与 FP32 相同的宽指数范围,梯度很少溢出。因此,BF16成为安全训练大型神经网络的首选格式之一。

认识 TF32

TF32是张量核心使用的 19 位格式:采用 FP32 的指数,但缩短有效数位。它能加速运算,同时对您的代码表现得像 FP32。

累加器保持较宽范围

无论输入格式如何,张量核心通常都会在 FP32 中累加部分和。速度来自输入,可靠性来自持续更新的总和。

范围与精度

核心思想是:FP16 和 BF16 都使用 16 位,但分配方式不同。一个偏重精度,另一个偏重范围。

选择格式

当范围很重要时,请使用 BF16 或 TF32;能够处理缩放时,可以使用 FP16。正确的格式取决于您的数据,而不仅仅是速度。

声明半精度

在 CUDA C++ 中,FP16 类型有一个简短名称。这一行声明了一个可用于张量核心运算的half值。

__half x = __float2half(1.5f);

快速检查

哪种格式只用 16 位,却保留了 FP32 的完整指数范围?

回顾

您已经看到,混合精度用位数换取吞吐量:FP16 偏重精度,BF16 偏重范围,TF32 则加速 FP32 风格的运算。宽范围累加可以保证结果可靠。✨

免费开始

用 AI 导师学习 C++ — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「混合精度:FP16、BF16、TF32」课时是免费的吗?

是的 — 「混合精度:FP16、BF16、TF32」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CUDA Academy 课程的其余内容,请升级到 CoddyKit PRO。 CUDA Academy 课程共包含 4 节课。

「混合精度:FP16、BF16、TF32」这节课中我会学到什么?

以精度换取吞吐量 你通过在浏览器中直接运行的动手代码来练习 CUDA Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 CUDA Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 CUDA Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「混合精度:FP16、BF16、TF32」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 CUDA Academy 课中编写并运行代码吗?

能。每节 CUDA Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 张量核心计算什么
  2. 混合精度:FP16、BF16、TF32
  3. WMMA 片段 API
  4. 数值稳定性的权衡
← 返回 CUDA Academy