首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >CUDA 编程:Tensor Core 与混合精度 GEMM

CUDA 编程:Tensor Core 与混合精度 GEMM

作者头像
Michael阿明
发布2026-07-28 14:09:49
发布2026-07-28 14:09:49
1280
举报

文章目录

  • 1. 背景
  • 2. Tensor Core 的核心思想
  • 3. 实验环境
  • 4. 实现方式
    • FP32 SGEMM
    • Mixed Precision GEMM
  • 5. 实验结果
    • 5.1 不同矩阵规模性能
    • 5.2 GFLOPS 对比
  • 6. Tensor Core 为什么越大矩阵越快?
  • 7. 矩阵尺寸对 Tensor Core 的影响
  • 8. Tensor Core不是简单降低精度
  • 9. 实验结论

从 cuBLAS SGEMM 到 Tensor Core GEMM,探索现代 GPU 矩阵计算的核心优化路径。

在这里插入图片描述
在这里插入图片描述

1. 背景

前一节,我们比较了:

  • CPU MatMul
  • CUDA Naive Kernel
  • Shared Memory Kernel
  • cuBLAS SGEMM

发现 cuBLAS 已经远超手写 CUDA Kernel。

但现代深度学习模型中的矩阵计算,还会进一步使用:

Tensor Core + Mixed Precision

例如:

  • Transformer Linear 层
  • Attention Projection
  • MLP
  • CNN 卷积

大量采用 FP16/BF16 混合精度计算。

本节在 Tesla T4 上测试:

代码语言:javascript
复制
FP32 SGEMM

vs

FP16 Tensor Core GEMM

2. Tensor Core 的核心思想

普通 CUDA Core:

代码语言:javascript
复制
一个线程
    |
    |
标量乘加
    |
    ↓
a*b+c

Tensor Core:

代码语言:javascript
复制

        Matrix A
           |
           |
        Tensor Core
           |
           |
Matrix B ---------> Matrix C


一次完成矩阵块乘加

D = A × B + C

Tensor Core 针对矩阵计算进行了硬件优化:

  • 矩阵块运算
  • 高吞吐 FP16 运算
  • FP32 累加保证稳定性

3. 实验环境

GPU:

代码语言:javascript
复制
Tesla T4
Compute Capability:
7.5

测试:

项目

配置

输入类型

FP16

累加类型

FP32

输出类型

FP32

计算库

cuBLAS

GPU

Tesla T4

矩阵规模

512~4096

4. 实现方式

FP32 SGEMM

计算流程:

代码语言:javascript
复制
FP32 Matrix A
        +
FP32 Matrix B
        ↓
cuBLAS SGEMM
        ↓
FP32 Matrix C

Mixed Precision GEMM

流程:

代码语言:javascript
复制
FP32 数据
 ↓
转换 FP16
 ↓
Tensor Core
FP16 × FP16
 ↓
FP32 accumulate
 ↓
FP32 Output

关键代码:

代码语言:javascript
复制
cublasGemmEx(
    handle,
    ...,
    CUDA_R_16F,
    ...,
    CUDA_R_16F,
    ...,
    CUDA_R_32F,
    ...,
    CUBLAS_COMPUTE_32F,
    CUBLAS_GEMM_DEFAULT_TENSOR_OP
);

含义:

配置

作用

CUDA_R_16F

输入 FP16

CUDA_R_32F

输出 FP32

CUBLAS_COMPUTE_32F

FP32累加

Tensor_OP

启用Tensor Core

5. 实验结果

5.1 不同矩阵规模性能

矩阵规模

FP32(ms)

Tensor Core(ms)

加速

512×512

0.0492

0.0299

1.64×

1024×1024

0.2475

0.0946

2.62×

2048×2048

1.4601

0.5835

2.50×

4096×4096

16.2076

4.7007

3.45×

可以看到:

随着矩阵规模增加:

代码语言:javascript
复制
Tensor Core 优势逐渐扩大

5.2 GFLOPS 对比

矩阵规模

FP32 SGEMM

Mixed GEMM

512

5457 GFLOPS

8969 GFLOPS

1024

8675 GFLOPS

22694 GFLOPS

2048

11766 GFLOPS

29442 GFLOPS

4096

8479 GFLOPS

29237 GFLOPS

性能变化:

4096矩阵:

代码语言:javascript
复制
FP32:
8.5 TFLOPS

Tensor Core:
29.2 TFLOPS

接近:

代码语言:javascript
复制
3.5倍提升

6. Tensor Core 为什么越大矩阵越快?

小矩阵:

代码语言:javascript
复制
计算量较少

Kernel启动
调度
缓存

占比较高

大矩阵:

代码语言:javascript
复制
更多矩阵Tile
↓
Tensor Core持续工作
↓
硬件利用率提高

因此:

代码语言:javascript
复制
N ↑
Tensor Core利用率 ↑
加速比 ↑

7. 矩阵尺寸对 Tensor Core 的影响

Matrix Size

FP32 SGEMM(ms)

Tensor Core GEMM(ms)

Speedup

1024×1024

0.2636

0.1037

2.54×

1023×1023

0.4504

0.1683

2.68×

2048×2048

1.2328

0.4890

2.52×

2047×2047

2.9654

1.1937

2.48×

Matrix Size

FP32 SGEMM

Tensor Core GEMM

1024

8147 GFLOPS

20711 GFLOPS

1023

4754 GFLOPS

12723 GFLOPS

2048

13935 GFLOPS

35132 GFLOPS

2047

5784 GFLOPS

14371 GFLOPS

非规则尺寸需要:

代码语言:javascript
复制
padding
边界处理

GPU 高性能计算非常依赖规则的数据布局

8. Tensor Core不是简单降低精度

很多人认为:

代码语言:javascript
复制
FP16 = 精度差

实际上:

Tensor Core 混合精度:

代码语言:javascript
复制
输入:
FP16

计算:
FP32 accumulate

输出:
FP32

结构:

代码语言:javascript
复制
        FP16
          |
          |
       Tensor Core
          |
          |
     FP32 Accumulate
          |
          |
        FP32

兼顾:

代码语言:javascript
复制
速度
+
精度

9. 实验结论

本次 Tesla T4 实验得到:

  1. Tensor Core 显著提高 GEMM 性能
  2. 矩阵越大,Tensor Core优势越明显
  3. 混合精度是AI推理的重要优化

CUDA Kernel 可以让我们理解 GPU 工作方式,而 Tensor Core 代表现代 GPU 矩阵计算的极致性能。 对于深度学习推理和训练,合理使用 FP16/BF16 混合精度,是获得高吞吐的重要手段。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 文章目录
  • 1. 背景
  • 2. Tensor Core 的核心思想
  • 3. 实验环境
  • 4. 实现方式
    • FP32 SGEMM
    • Mixed Precision GEMM
  • 5. 实验结果
    • 5.1 不同矩阵规模性能
    • 5.2 GFLOPS 对比
  • 6. Tensor Core 为什么越大矩阵越快?
  • 7. 矩阵尺寸对 Tensor Core 的影响
  • 8. Tensor Core不是简单降低精度
  • 9. 实验结论
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档