← 返回周历 小测 视频 DeepInfer 101
小测 1

小测 1:GPU 模型、Roofline、Softmax 与索引

浏览文字约 5 分钟 · 手算与练习请按正文分段完成 源文件:Markdown 本地渲染版 · 无需联网
本页目录 · 12 节

时间:10 分钟
规则:闭卷,不看笔记,不用 AI。
目的:检查你是否真的理解了 Week 1–2 的核心数字,而不是只会跑测试。

先完成L1/L2的核心访存、L3第8节和Lab0/1再闭卷作答。Q1对照L2地址分桶;Q2对照L1两条时间下界;Q3对照L3读写账本;Q4对照L1尾部;Q5对照起步2/预备2的副本。每题分值仍为2分,合计10分;下面的复习变式不新增评分。


Q1(2 分)

一个 warp 的 32 个 thread 读取 32 个连续的 int32,起始地址是 word 16(不是 0)。 本题采用 Lab0 的简化模型:以 128 字节(32 个 word)的 line 为一次统计单位。触及几条 line?如果改用 32B sector 统计,又触及几个?这里不把 line 计数称为真实 GPU 的 transaction 数。

Q2(2 分)

vector_add 处理 n = 1,000,000 个 float32:

  • 搬多少字节?
  • 做多少 FLOPs?
  • 如果带宽 500GB/s、算力 10TFLOP/s,在给定模型中哪条限制主导?时间下界是多少?不能将它直接称为实测时间。

Q3(2 分)

一个 4096 维 float32 的 softmax:

  • 3-pass 搬多少字节?
  • 2-pass 搬多少字节?
  • 采用 Lab1 的 activation-only 口径,分别为 16n 与 12n 字节;在 2TB/s 带宽下,两者的带宽时间下界差多少?这能直接当实测提速吗?

Q4(2 分)

n=10, block=4,需要几个 block?最后一个 block 的 tid=0..3 分别处理哪些 i,哪些应该跳过?

Q5(2 分)

函数应该返回一个新列表,不改变输入:

def scale(values):
    result = values
    for i in range(len(result)):
        result[i] = result[i] * 2
    return result

输入 a=[2,3],调用后 a 是什么?指出契约被破坏的原因,并说明如何修复。先手算,不运行。


答案(做完再看)

A1

2 条 line。word 地址 16..47 跨 line 0(0..31)和 line 1(32..63)。对应 byte 64..191,共 4 个 32B sector。两种数字统计的单位不同。

A2

  • Bytes = 3 * n * 4 = 12,000,000 字节 ≈ 12MB。
  • FLOPs = n = 1,000,000(一次加法)。
  • memory time = 12e6 / 500e9 = 24e-6 s = 24us。
  • compute time = 1e6 / 10e12 = 0.1e-6 s = 0.1us。
  • 在此理想模型下 memory-bound,时间下界 24us;忽略 launch、缓存和同步等成本。

A3

  • 3-pass = 16 * 4096 = 65,536 字节 = 64 KiB。
  • 2-pass = 12 * 4096 = 49,152 字节 = 48 KiB。
  • 差 16,384 字节;在 2TB/s 下 16384 / 2e12 = 8.192e-9 s = 8.192ns。
  • 这是所选流量模型的带宽时间下界差;小向量还受启动开销、缓存等影响,不能作为实测提速。

A4

需要 3 个 block。最后一个 bid=2,i 为 8、9、10、11;只处理 8、9,跳过 10、11。guard 是 i<n。

A5

调用后 a 是 [4,6],因为 result 与 values 指向同一个列表。可先建新列表,再逐项追加翻倍后的元素;或先复制这个一维数值列表,再改副本。


评分

  • 8–10 分:Week1–2 核心已掌握,可以继续下一阶段。
  • 5–7 分:回看 Lecture 2/3 的对应小节,再做一遍 Lab。
  • 0–4 分:不要赶进度;先把 Lab 0/1 的 checkoff 问题讲一遍。

隔日迁移检查(不计分)

错题复习后,不照抄相同数字:Q1把起始word改为1;Q2只将字节减半;Q3把n改为1024;Q4改n=9;Q5改为二维列表只复制外层。先写改变了哪个假设,再重新推导。能解释新例子,才说明复习不只是在记答案。

变式锚点

word1–32为2 lines、5 sectors。Q2只改字节模型后memory下界12µs,compute仍0.1µs;这不是保持相同算法不变时可以随意承诺的流量减半。n=1024时三遍16384B、两遍12288B。n=9的最后组只有tid0有效。二维列表切片只复制外层,内部行仍共享。