【AI系统】CUDA 编程模式

简介: 本文介绍了英伟达GPU的CUDA编程模型及其SIMT执行模式,对比了SIMD和SIMT的特点,阐述了SIMT如何提高并行计算效率和编程灵活性。同时简要提及了AMD的GPU架构及编程模型,包括最新的MI300X和ROCm平台。

前面的文章对 AI 芯片 SIMD 和 SIMT 计算本质进行了分析,结合英伟达 CUDA 实现对 SIMD 和 SIMT 进行了对比,本文将以英伟达 GPU 为例,讲解 GPU 的编程模型。

GPU 编程模型 CUDA

英伟达公司于 2007 年发布了 CUDA,支持编程人员利用更为通用的方式对 GPU 进行编程,更好地发挥底层硬件强大的计算能力,以英伟达 GPU 为例对 GPU 的编程模型进行讲解。

SIMD vs SIMT 执行模式

SIMD 是单顺序的指令流执行,每条指令多个数据输入并同时执行,大多数 AI 芯片采用的硬件架构体系,向量加法的 SIMD 执行指令如下:

[VLD, VLD, VADD, VST], VLEN
AI 代码解读

SIMT 是标量指令的多个指令流,可以动态地把线程按 wrap 分组执行,向量加法的 SIMT 执行指令如下:

[LD, LD, ADD, ST], NumThreads
AI 代码解读

英伟达 GPU 采用了 SIMT 的指令执行模式,给相关产品带来以下优势:

  • 相比较 SIMD 无需开发者费时费力地把数据凑成合适的矢量长度,然后再传入硬件中;

  • 从硬件设计上解决大部分 SIMD Data Path 的流水编排问题,对编译器和程序开发者在流水编排时更加友好;

  • 线程可以独立执行,使得每个线程相对灵活,允许每个线程有不同的分支,这也是 SIMT 的核心;

  • 一组执行相同指令的线程由硬件动态组织成线程组 warp,加快了 SIMD 的计算并行度。

假设一个 Warp 包含 32 个线程,如果需要进行 32000 次迭代,每个迭代执行一个线程,因此需要 1000 个 warp。第一个迭代 Warp0 执行第 0~32 个线程,第二个迭代 Warp1 执行第 33~64 个线程,第二十一个迭代 Warp20 执行第 20x33+1 ~ 20x33+32 个线程,可以看出 SIMT 是标量指令的多个指令流,可以动态地把线程按 Wrap 分组执行,使并行度增加。

第一个迭代 Warp0 执行第 0~32 个线程:

第一个迭代 Warp0

第二个迭代 Warp1 执行第 33~64 个线程:

第二个迭代 Warp1

以此类推,第二十一个迭代 Warp20 执行第 20x33+1 ~ 20x33+32 个线程:

第二十一个迭代 Warp20

由于程序并行执行最大的瓶颈是访存和控制流,因此 SIMD 架构中单线程 CPU 通过大量控制逻辑进行超前执行、缓存、预取等机制来强行缓解计算瓶颈。

Warps 和 Warp-Level FGMT 关系

SIMT 架构 GPU 通过细粒度的多线程(Fine-Grained Multi-Threading,FGMT)调度,将处理器的执行流水线细分为更小的单元,使得不同线程的指令可以交错执行,从而减少指令执行的等待时间和资源浪费,以此来实现访存和计算并行。

Warp 是在不同地址数据下,执行相同指令的线程集合,所有线程执行相同的代码,可以看出 Thread Warp 中有很多个 Thread,多个 Warp 组成 SIMD Pipeline 执行对应的操作。

Thread Warp

SIMT 架构通过细粒度多线程(FGMT)隐藏延迟,SIMD Pipeline 中每个线程一次执行一条指令,Warp 支持乱序执行以隐藏访存延迟,并不是通过顺序的方式调度执行,此外线程寄存器值都保留在 RF(Register File)中,并且 FGMT 允许长延迟。英伟达通过添加 Warp Schedluer 硬件调度,使 Warp 先访存完毕之后交给 SIMD Pipeline 去执行尽可能多的指令,隐藏其它 Warp 的访存时间。

细粒度多线程(FGMT)

SIMT 相比 SIMD 在可编程性上最根本性的优势在于硬件层面解决了大部分流水编排的问题,Warp 指令级并行中每个 warp 有 32 个线程和 8 条执行通道,每个时钟周期执行一次 Warp,一次 Warp 完成 24 次操作。

warp 指令执行的时序图

在 GPU 宏观架构层面,GDDR 里面的数据通过内存控制器(Memory Controller)传输到片内总线(Interconnection Network),然后分发到具体的核心(Cuda Core/Tensor Core),在每个执行核心中会有 SIMD 执行单元,从而实现并行计算。

GPU 数据存取与并行计算

AMD 编程模型

AMD 的显卡也是有大量的计算单元和计算核心,为什么没有 SIMT 的编程模式?

2016 年 AMD 推出开放计算平台(Radeon Open Computing platform,ROCm),对全新 Radeon GPU 硬件的软件支持,全新数学库和基础雄厚的现代编程语言,旨在加速高性能,高能效异构计算系统开发。在相当大的程度上兼容 CUDA,目标是建立替代 CUDA 生态。

在 2020 年 CDNA 架构面世前,AMD 数据中心 GPU 一直使用的是 GCN 系列架构,搭载 GCN 系列架构的产品在 2012 年就已推出,虽然在游戏机等场景获得较高市场份额,但在数据中心市场并未取得显著成果,这与其性能表现有关。目前 AMD 将其 GPU 架构开发分为单独的 CDNA 和 RDNA 线路,分别专门用于计算和图形。

2023 年 AMD 发布 MI300X,将计算拆分到加速器复合芯片 (XCD) 上,每个 XCD 包含一组核心和一个共享缓存。具体来说,每个 XCD 物理上都有 40 个 CDNA 3 计算单元,其中 38 个在 MI300X 上的每个 XCD 上启用。XCD 上也有一个 4 MB 二级缓存,为芯片的所有 CU 提供服务。MI300X 有 8 个 XCD,总共有 304 个计算单元。以 CDNA 3 架构的 MI300X 可以将所有这些 CU 公开为单个 GPU。

ADM CDNA3 架构

每个 CU 有 4 个 SIMD 计算单元,每个周期 CU 调度程序会从 4 个 SIMD 中选择一个进行执行,并检查线程是否准备好执行。AMD MI300 支持 ROCm 6,支持 TF32 和 FP8 数据类型,Transformer Engine 和结构化稀疏性,AI/ML 框架等。

ADM CDNA3 CU 架构

英伟达的 H100 由 132 个流式多处理器 (SM)组成,作为一个大型统一的 GPU 呈现给程序员。计算通过 CUDA 程序分发到具体的核心(Cuda Core/Tensor Core),每个执行核心有 SIMD 执行单元,从而实现并行计算。

NVIDIA Hopper 架构

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
打赏
0
5
5
0
145
分享
相关文章
AI 时代,为什么编程能力≠ 开发门槛
在 2.0 阶段,我们目标是实现面向任务的协同编码模式,人的主要职责转变为任务的下发、干预以及最后结果的审查。在这个过程中,人的实际工作量开始减轻,AI 工作的占比显著提升。目前的 2.0 版本是我们最近上线的。
338 93
AI竟能独立完成顶会论文!The AI Scientist-v2:开源端到端AI自主科研系统,自动探索科学假设生成论文
The AI Scientist-v2 是由 Sakana AI 等机构开发的端到端自主科研系统,通过树搜索算法与视觉语言模型反馈实现科学假设生成、实验执行及论文撰写全流程自动化,其生成论文已通过国际顶会同行评审。
115 34
AI竟能独立完成顶会论文!The AI Scientist-v2:开源端到端AI自主科研系统,自动探索科学假设生成论文
Open Avatar Chat:阿里开源实时数字人对话系统,让AI对话实现2.2秒低延迟交互
Open Avatar Chat是阿里开源的模块化数字人对话系统,支持文本/音频/视频多模态交互,采用可替换组件设计,平均响应延迟仅2.2秒,为开发者提供灵活高效的解决方案。
192 4
Open Avatar Chat:阿里开源实时数字人对话系统,让AI对话实现2.2秒低延迟交互
星云智控科技-优雅草星云物联网AI智控系统软件产品技术栈一览表-优雅草卓伊凡
星云智控科技-优雅草星云物联网AI智控系统软件产品技术栈一览表-优雅草卓伊凡
47 7
星云智控科技-优雅草星云物联网AI智控系统软件产品技术栈一览表-优雅草卓伊凡
通义灵码:当AI成为你的编程搭档,效率革命已经到来
本文介绍了通义灵码作为AI编程伙伴的革命性意义及其技术特点。基于阿里云通义代码大模型CodeQwen1.5,它具备多模态代码理解、意图推理和跨语言知识融合能力,可重构开发者工作流,从智能编码到Debug预警再到文档自动化全面提升效率。数据显示,其能将常规开发时间缩短60%,错误率下降43%,新技术上手速度提升2倍。未来,通义灵码将推动需求-代码双向翻译、架构自演进等全新编程形态,助力开发者聚焦更高价值领域,开启人机共生的编程新时代。
71 9
通义灵码:以AI重塑开发者生产力,解锁智能编程新范式
通义灵码是阿里云推出的一款AI智能编程助手,基于通义大模型打造,深度集成于主流IDE。它不仅提供全场景智能代码生成、对话式开发体验和工程化智能重构等功能,还通过百亿级参数大模型底座、企业级环境适配、私有化部署等优势,重新定义人机协作边界。在真实开发场景中,通义灵码显著提升API开发与算法优化效率,助力开发者从机械劳动转向创造性对话,开启人机协同的新时代。
66 9
通义灵码:AI赋能编程,开启智能开发新时代
通义灵码是阿里云推出的一款专为开发者设计的智能编程助手,基于自主研发的大模型打造。它不仅具备代码生成、智能补全、代码优化和实时调试等功能,还通过垂直领域深度训练、多语言全栈支持以及与主流IDE无缝集成,大幅提升开发效率。真实案例显示,通义灵码可显著减少编码时间和错误率,助力开发者专注于业务逻辑。未来,它还将进一步理解业务需求、参与代码评审和跨团队协作,重新定义软件开发范式。立即体验,让AI赋能每一行代码!
91 8
electron35-vue3-deepseek客户端流式输出AI对话系统
Electron35-DeepSeek桌面端AI系统|vue3.5+electron+arco客户端ai模板。2025跨平台ai实战electron35+vite6+arco仿DeepSeek/豆包ai流式打字聊天助手。
65 1
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
174 29
演讲实录:中小企业如何快速构建AI应用?
AI时代飞速发展,大模型和AI的应用创新不断涌现,面对百花齐放的AI模型,阿里云计算平台大数据AI解决方案总监魏博文分享如何通过阿里云提供的大数据AI一体化平台,解决企业开发难、部署繁、成本高等一系列问题,让中小企业快速搭建AI应用。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等