学习资料
InfiniTensor 冬季训练营 CUDA 编程第二课《性能模型与逐元素优化》
发表于:

2026 年 1 月 15 日,2025 冬季 InfiniTensor 大模型与人工智能系统训练营 CUDA 编程系列第二课《性能模型与逐元素优化》开讲。

本节课涵盖并行编程基础、Roofline 模型等内容,并涉及向量化实现与性能对比等知识。

课程回顾与背景引入

  • 什么是并行编程?为什么需要并行?
  • CPU 与 GPU 的架构差异
  • 向量加法的 GPU 实现与编译
  • 性能初步分析工具
  • CPU 与 GPU 性能对比

性能瓶颈分析与内存墙

1. 传输开销与计算时间对比

  • CPU-GPU 数据传输时间 vs GPU 内核计算时间
  • 通信带宽成为性能瓶颈

2. 内存墙概念引入

  • 摩尔定律与内存增长速度对比
  • 冯·诺依曼架构的限制
  • 计算速度远快于内存访问速度

Roofline 模型:量化性能瓶颈

1. Roofline 模型基本概念

  • 纵轴:性能(GFLOPS)
  • 横轴:计算强度(FLOPS/byte)
  • 关键参数:
    • π(峰值算力)
    • β(峰值内存带宽)
    • Imax(计算强度拐点)

2. 模型分区解释

3. 向量加法案例分析

性能分析工具:Nsight Compute(NCU)

1. NCU 简介与使用

  • 内核级性能分析工具
  • 命令行与 GUI 版本使用方式
  • 输出文件分析

2. 关键分析界面

  • Summary Page(核函数汇总)
  • Details Page(吞吐量与 Roofline 图)
  • 内存与计算利用率分析

向量化技术:提升访存效率

1. 什么是向量化?

  • 标量操作 vs 向量操作
  • SIMD(单指令多数据) vs SIMT(单指令多线程)

2. CUDA 中的向量化访存类型

3. 向量化实现与性能对比

  • 不同向量化程度的性能测试
  • 寄存器使用与溢出问题
  • 数据规模对向量化效果的影响

半精度计算

1. 半精度浮点数简介

  • 结构对比(FP16 vs FP32)
  • CUDA 中的 half 类型与转换函数

2. 半精度性能优势

  • 内存占用减半
  • 计算强度提升
  • 向量化支持(half2)

3. 向量化计算与访存结合

课后思考题

1.可以有效使用 float3 吗?如果可以,怎么做?
2.之前提到向量化访存有多种方法,今天主要介绍了使用内置类型的方式,想想还有什么其他方式吗?(Hint: 今天的课中其实已经提到了,同时也和第一问有关)

总结与思考

本节课我们对优化路径进行了系统性学习,向量化访存 → 半精度 → 向量化计算,性能提升幅度对比等知识。后续课程我们将进一步对于优化方法,算子融合、内存层级优化等知识进行学习,同时将会迎来新的挑战!

2025冬季训练营课程表

💡 学习贴士

更多细节及完整课程内容,请观看直播或查看课程回放。

链接:https://www.infinitensor.com/camp/winter2025

📚 训练营报名持续进行中

扫码报名与加入群聊,或点击 「阅读原文」 直达官网报名