CUDA-MODE 第二课: PMPP 书的第1-3章

我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode

第二课: PMPP 书的第1-3章

这节课非常基础,讲的都是基本概念和初级的注意事项,有CUDA基础的朋友可以不用花时间看。

PMPP 第一章

这一页没什么好说的,就是介绍一些大模型和AI的背景,CPU和GPU的架构区别,以及GPU的出现是为了解决CPU无法通过硬件技术解决的大规模计算性能问题。

这张图名为"The Power Wall"(功耗墙),展示了从1970年到2020年间计算机芯片技术的两个关键参数的发展趋势:

晶体管数量(紫色线):以千为单位,呈指数增长趋势。
频率(绿色线):以MHz为单位,显示了处理器时钟速度的变化。

"功耗墙"现象:图表底部的注释解释了为什么频率不再持续增长 —— “进一步提高频率会使芯片变得太热而无法有效散热”。

这张slides介绍了CUDA的兴起及其关键特性:

  • CUDA 专注于并行程序,适用于现代软件。
  • GPU 的峰值 FLOPS 远高于多核 CPU。
  • 主要原则是将工作分配给多个线程。
  • GPU 注重大规模线程的执行吞吐量。
  • 线程较少的程序在 GPU 上表现不佳。
  • 将顺序部分放在 CPU 上,数值密集部分放在 GPU 上。
  • CUDA 是 Compute Unified Device Architect(统一计算设备架构)。
  • 在 CUDA 出现前,使用图形 API(如 OpenGL 或 Direct3D)进行计算。
  • 由于 GPU 的广泛可用性,GPU 编程对开发者变得更具吸引力。

这张slides介绍了CUDA编程中的一些挑战:

  • 如果不关注性能,并行编程很容易,但优化性能很难。
  • 设计并行算法比设计顺序算法更困难,例如并行化递归计算需要非直观的思维方式(如前缀和)。
  • 并行程序的速度通常受到内存延迟和吞吐量的限制(内存瓶颈,比如LLM推理的decode)。
  • 并行程序的性能可能因输入数据的特性而显著变化。(比如LLM推理有不同长度的序列)。
  • 并非所有应用都能轻松并行化,很多需要同步的地方会带来额外的开销(等待时间)。例如有数据依赖的情况。

《Programming Massively Parallel Processors》这本书的三个主要目标是:

  • 教大家并行编程和计算思维
  • 并且以正确可靠的形式做到这一点,这包括debug和性能两方面
  • 第三点指的应该是如何更好的组织书籍,让读者加深记忆之类的。

虽然这里以GPU作为例子,但这里介绍到的技术也适用于其它加速器。书中使用CUDA例子来介绍和事件相应的技术。

PMPP 第二章

题目是 CH2: 异构数据并行编程

  • 异构(Heterogeneous):结合使用CPU和GPU来进行计算,利用各自的优势来提高处理速度和效率。
  • 数据并行性(Data parallelism):通过将大任务分解为可以并行处理的小任务,实现数据的并行处理。这种方式可以显著提高处理大量数据时的效率。
  • 应用示例:
    • 向量加法:这是并行计算中常见的例子,通过将向量的每个元素分别相加,可以并行处理,提高计算速度。
    • 将RGB图像转换为灰度图:这个过程通过应用一个核函数,根据每个像素的RGB值计算其灰度值。公式为 L = r*0.21 + g*0.72 + b*0.07,其中L代表亮度(Luminance)。这个转换是基
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值