EXERCISE BANK
脱离引导的独立练习:计算、轨迹、方案与 WebGPU 实验;错题进入错题本。
一个 kernel 使用 blockDim.x = 256 启动,N = 1000。 全局编号公式为 i = blockIdx.x * blockDim.x +...
一个 block 有 100 个线程。硬件按 32 个线程一束 warp 编队。 最后一束 warp 里有多少个线程位置是空转的?
补全下面的 WGSL compute shader,让 out[i] = a[i] * 2.0。 要求: 1. 用 global_invocation_id.x...
一个 block 有 256 个线程,i = blockIdx.x * blockDim.x + threadIdx.x。 kernel 里写: c if (i % 2...
同样是 256 个线程、8 束 warp,把分支改成: c if (i < 128) ... else ... 有多少束 warp 会发生分歧?
下面哪种存储位于 SM 片上,且作用域是整个 block?
kernel 里定义一个局部 float a[16],用运行时才知道的变量 idx 访问 a[idx]。 编译器通常把这个数组放在哪里?
一个 warp 的 32 个线程各自读取一个 4 字节 float,地址连续且从 128 字节对齐的位置开始。 硬件需要多少个 128 字节事务?
一个 warp 的 32 个线程读取 float:线程 0 读地址 0,线程 1 读地址 8,线程 2 读地址 16…… 相邻线程的字节地址相差 8。硬件按 128...
行优先存储的 N × N 矩阵,N 远大于 32。一个 warp 的 32 个线程按列方向访问: A[i * N + j],其中 i 随线程编号递增,j 固定。...
共享内存按 4 字节字划分成 32 个 bank,地址对 32 取模决定 bank。 一个 warp 的 32 个线程访问 tile[threadIdx.x](float...
一个 SM 有 65536 个 32 位寄存器,最多驻留 2048 个线程。 kernel 每个线程使用 64 个寄存器,block 大小为 256。...
H100 的 FP32 峰值约 67 TFLOP/s,显存带宽约 3.35 TB/s。 屋顶线的转折点约是多少 FLOP/字节?填整数近似值。
一个 n = 1024 的方阵矩阵乘,算术强度约 170 FLOP/字节; H100 FP32 的转折点约 20 FLOP/字节。它落在屋顶线的哪一侧?
M = N = K = 1024 的矩阵乘,浮点运算量为 2MNK。 以 10^9 次(十亿次)为单位,结果约是多少?保留一位小数。
1024³ 的矩阵乘,朴素版本整个 grid 读 2MNK 个 float,约 8.6 GB; 三个矩阵本身合计约 12 MB。 读取总量约为矩阵本身大小的多少倍?填整数近似值。
朴素矩阵乘平均每读 4 个字节(一个 float),只换来 2 次浮点运算。 它的算术强度是多少 FLOP/字节?
分块矩阵乘使用 TILE = 16。 与朴素版本相比,全局内存读取总量降为原来的多少分之一?
分块矩阵乘使用 TILE = 32,每个 block 用共享内存存放 As[32][32] 和 Bs[32][32] 两个 float 数组。 两个数组合计多少 KB?(按...
给定 C = A × B,A、B、C 都是 1024 × 1024 的 float 矩阵,TILE = 16。 请设计一个分块矩阵乘 kernel,并说明: 1. 一个...
卷积核大小 R = S = 3,输入通道数 C = 64。 计算一个输出元素需要多少次乘加?
在卷积的七重循环里,哪些维度适合直接映射成并行线程?
IEEE-754 FP32 由 1 位符号、8 位指数和尾数组成,总共 32 位。 尾数占多少位?
相比 FP16,BF16 的尾数更少,但训练中更常用。主要原因是?
计算 a × b + c 时,GPU 的融合乘加(FMA)与把乘法和加法拆成两条指令相比,舍入次数有什么不同?