知识点标签

CUDA 面试题解析

CUDA 相关面试题,覆盖 GPU 线程模型、访存优化、Tensor Core 和推理算子优化。

20 道题 2 个岗位 7 个公司

CUDA相关面试题

手写 CUDA All-Reduce/归约 kernel 时,如何设计线程内与 block 内归约,并说明 block 间同步和跨 GPU AllReduce 通常为什么需要多 kernel、cooperative groups 或 NCCL?

这题要先澄清 All-Reduce 在面试手写题里的边界:单 GPU 内通常先写归约 kernel,再解释 block 间同步为什么不能靠普通 __syncthreads 解决;真正跨 GPU AllReduce 属于通信 collective,通常交给 NCCL 或多阶段通信算法。

LLM 推理中做 KV Cache sparse 计算时,vLLM/Triton 实现为什么可能选择稀疏索引或稀疏块,而不是直接用 dense mask?

这题考的是稀疏注意力在推理引擎里的真实性能取舍。dense mask 在数学上能表达稀疏模式,但计算和访存仍接近 dense attention;而稀疏索引或稀疏块能让 kernel 只读取和计算被选中的 KV cache,从而节省显存带宽、减少无效 FLOPs,并更适合 vLLM 这类分页 KV 和 Triton 块级并行实现。

分布式 LLM 训练中 AllReduce、AllGather、ReduceScatter 和 AllToAll 分别解决什么通信问题,哪些并行场景会用到它们?

这道题考察分布式训练中 collective communication 的语义和并行策略映射。回答要先把 AllReduce、AllGather、ReduceScatter、AllToAll 的输入输出关系讲清,再说明它们分别解决梯度汇总、参数或激活拼接、归约后分片、个性化交换等问题。进一步要能联系数据并行、张量并行、ZeRO/FSDP、序列并行、专家并行和 MoE token dispatch,指出通信量、同步开销、拓扑和 overlap 对训练效率的影响。

CUDA 算子优化后如何做公平 benchmark,排除硬件和精度差异,并证明性能提升真实有效?

这题考 CUDA 算子优化后的性能证明能力。好答案要建立公平 benchmark:固定硬件、驱动、CUDA/cuDNN/cuBLAS 版本、dtype、shape、batch、warmup、stream、同步点和统计方法;排除异步计时、首次编译、温度降频、不同 GPU 架构和精度算力差异;再用 Nsight/NCU 证明瓶颈从访存、计算、occupancy、launch 或同步角度确实改善,并用精度回归和端到端指标证明收益真实。

为什么 CPU 通常需要多级 Cache,而 GPU 更强调 shared memory、coalescing 和高带宽并行访存?

这题考 CPU/GPU 架构差异和访存优化思路。好答案要说明 CPU 面向低延迟、强控制流、少量复杂线程,依赖多级 Cache、分支预测和乱序执行降低单线程访存延迟;GPU 面向高吞吐、大量线程并行,用 warp 调度隐藏延迟,更强调 coalesced global memory access、shared memory 显式复用、高带宽和 occupancy。不能简单说 GPU 没有 Cache,而要说明 GPU 也有 L1/L2/纹理等缓存,只是优化重点从自动低延迟缓存转向显式数据布局和并行带宽利用。

FlashAttention 为什么更适合 Prefill,Decode 阶段的瓶颈是什么,Flash Decoding 如何优化?

这题考 GPU 推理性能分析能力。好的回答要区分 Prefill 和 Decode 的计算形态:Prefill 是长 query 的大矩阵注意力,FlashAttention 能提高 IO 效率和并行度;Decode 是单 token 迭代生成,瓶颈常在 KV cache 读取、显存带宽和 SM 利用率,Flash Decoding 通过切分 KV 序列提升并行读取和长上下文吞吐。