# 1. StableHLO 在 ML framework(PyTorch / JAX / TF)→ StableHLO → MLIR → GPU/LLVM 的统一 IR 工程价值? A StableHLO 让 PyTorch/JAX/TF 共享同一编译后端,通过 MLIR 降级到 GPU/LLVM,解耦前端与后端 ✓ 正确答案 B StableHLO 只服务于单个框架 C StableHLO 无法跨硬件 D StableHLO 与编译后端无关
# 2. IREE 在 StableHLO / Vulkan / CUDA / CPU 的 multi-target 编译工程价值? A IREE 无法编译到 CPU B IREE 只支持单一后端 C IREE 以 StableHLO 为输入,编译到 Vulkan/CUDA/CPU/Web 等多后端,实现一次编译多平台部署 ✓ 正确答案 D IREE 与 MLIR 无关
# 3. XLA 在 TF / JAX 的 high-level op fusion + tile + bufferize 编译工程价值? A XLA 无法用于 JAX B XLA 只做算子融合,不做分块 C bufferize 只影响正确性不影响内存 D XLA 通过 op fusion 减少 launch、tile 提升并行、bufferize 管理内存,为 TF/JAX 生成高效代码 ✓ 正确答案
# 4. Triton 与 cutlass 在 cuBLAS kernel 替换工程边界? A cuBLAS 支持自定义算子 B Triton 能完全替代 cuBLAS 且性能恒高 C cutlass 无法控制底层指令 D cuBLAS 即用但不可定制,Triton 开发效率高但控制弱,cutlass 控制精细但复杂,用于定制或极致性能场景 ✓ 正确答案
# 5. Triton 在 block-level GPU kernel(matmul、attention)的 Python DSL 工程价值? A Triton 需要手动管理线程与共享内存 B Triton 以块为单位描述运算,编译器自动处理 tiling 与内存,开发高效、可移植,适合 matmul/attention ✓ 正确答案 C Triton 无法编写注意力 kernel D Triton 只支持单一 GPU 厂商
# 6. Triton-Inductor(PyTorch 2.x)在 torch.compile backend 的 inductor codegen 工程价值? A Inductor 作为 torch.compile 后端,在 GPU 上生成 Triton kernel,融合图优化与代码生成,自动提升性能 ✓ 正确答案 B Inductor 只生成 CPU 代码 C Inductor 无法做算子融合 D Inductor 与 torch.compile 无关
# 7. TVM Relax(Relay successor)在 dynamic shape / control flow graph IR 工程价值? A Relax 与 Relay 完全相同 B Relax 只支持静态 shape C Relax 无法处理分支循环 D Relax 是 Relay 继任者,支持 dynamic shape 与控制流,拓宽 TVM 对动态模型的编译能力 ✓ 正确答案
# 8. Triton 在 tile-aware autotune 与 persistent kernel 的工程价值? A 两者都只影响可读性不影响性能 B autotune 只在编译期固定配置 C persistent kernel 会增加启动开销 D tile-aware autotune 自动选择最优 tile 配置,persistent kernel 循环处理数据块减少启动开销 ✓ 正确答案
# 9. StableHLO 与 MHLO 在 module 兼容性工程价值? A StableHLO 提供稳定 ABI 与标准化方言,与 MHLO 通过 module 级兼容转换协同,保证跨版本兼容 ✓ 正确答案 B StableHLO 与 MHLO 不兼容 C StableHLO 是随 XLA 内部变动的方言 D 兼容性设计与生态无关
# 10. IREE 在 Android / Web / GPU multi-platform deployment 工程边界? A IREE 只支持 Android B IREE 支持 Android/Web/GPU 多平台,擅长一次编译多平台部署,但特定平台极致性能优化不如原生方案 ✓ 正确答案 C IREE 无法部署到浏览器 D IREE 多平台性能恒优于原生
# 11. Apache TVM 在 deep learning compiler meta schedule 与 auto-tuning 工程价值? A auto-tuning 只做一次且不迭代 B meta schedule 自动搜索调度策略,auto-tuning 用实测反馈迭代调优,让编译器自动生成高性能 kernel ✓ 正确答案 C meta schedule 与硬件无关 D TVM 无法自动调优
# 12. TVM TensorIR 在 tensor-level primitive codegen 工程价值? A TensorIR 只能手写底层汇编 B TensorIR 提供张量级调度变换并生成目标代码,与 meta schedule 结合自动优化 kernel ✓ 正确答案 C TensorIR 无法做调度 D TensorIR 与代码生成无关
# 13. TVM Unity 在 compilation pipeline unified 协同工程边界? A TVM Unity 与旧架构完全相同 B TVM Unity 只优化单一后端 C TVM Unity 无法组合 IR D TVM Unity 通过模块化 IR 与统一编译流程协同前端、调度与后端,降低维护成本,但覆盖范围有限 ✓ 正确答案
# 14. torch.compile 在 PyTorch 2.x eager mode → inductor backend codegen 的工程价值? A torch.compile 只支持 eager,不做编译 B torch.compile 捕获 eager 计算为图,经 Inductor codegen 生成 Triton/C++ 代码,兼顾便利与性能 ✓ 正确答案 C Inductor 无法生成 Triton 代码 D torch.compile 需要手写 kernel
# 15. torch.compile 的 aot_eager / aot_autograd / inductor 在 graph capture 模式工程价值? A aot_autograd 只做前向 B aot_eager 捕获验证、aot_autograd 生成反向图与优化、inductor 做代码生成,分工支持渐进式编译 ✓ 正确答案 C inductor 不参与代码生成 D 各组件职责重叠无分工
# 16. WGMMA(Warpgroup Matrix-Multiply-Accumulate)在 Hopper/Blackwell 的 4-warp group MMA 指令工程价值? A WGMMA 只支持单 warp B WGMMA 让 4 个 warp 组成的 warpgroup 协同执行大块 MMA,提升 Tensor Core 利用率并配合 TMA 流水线 ✓ 正确答案 C WGMMA 与 TMA 无关 D WGMMA 无法提升算力利用率
# 17. loop tiling(分块)如何依据依赖分析保证变换合法,并提升缓存局部性? A tiling 不改变迭代顺序 B tiling 总是不合法 C tiling 提升缓存局部性,合法性由依赖分析保证,需确保依赖不被 tile 边界切断 ✓ 正确答案 D 依赖分析与 tiling 无关
# 18. 多面体模型如何用整数线性约束表示循环 nest 的迭代域与访问关系,从而统一做调度变换? A 调度变换破坏依赖分析 B 多面体模型只能处理一维循环 C 多面体模型用仿射约束表示迭代域、用仿射函数表示访问、用调度映射统一做循环变换 ✓ 正确答案 D 访问关系无法用仿射表示
# 19. tile size 的选择为何要与目标缓存层次容量匹配?过大或过小分别损失什么? A tile 大小与缓存无关 B tile 越大越好,无需考虑容量 C tile 越小数据复用率越高 D tile 过大导致缓存溢出、复用丧失,过小复用不足,最优 tile 是缓存容量内尽可能大 ✓ 正确答案
# 20. 为什么多面体编译要求循环边界与数组下标是仿射(线性)函数?非仿射访问如何处理? A 非仿射访问可精确分析 B 仿射边界与下标保证迭代域与访问可精确表示,非仿射访问采用保守抽象或降级处理 ✓ 正确答案 C 多面体模型不需要仿射约束 D 仿射要求不影响依赖分析
# 21. cutlass 3.x 与 cuBLASLt 在 performance 协同工程边界? A cuBLASLt 不可用 B cuBLASLt 开箱即用、cutlass 可深度定制,常规用 cuBLASLt、追求极致用 cutlass,二者共享优化思路 ✓ 正确答案 C cutlass 无法定制 GEMM D 两者定位完全相同
# 22. Pallas(JAX)通过 pallas_call 在 TPU kernel 直接编写 low-level code 工程价值? A pallas_call 让用户在 JAX 内直接编写 TPU low-level kernel,提供显式硬件控制并保持框架集成 ✓ 正确答案 B pallas_call 只能用于 CPU C pallas_call 无法控制硬件 D pallas_call 与 JAX 无关
# 23. Pallas 在 Mosaic(XLA HLO)kernel generation 的工程价值? A Mosaic 把 Pallas kernel 编译为 XLA HLO,结合低层控制与 XLA 优化,兼顾控制力与性能 ✓ 正确答案 B Mosaic 与 XLA 无关 C Pallas 无法生成 HLO D Mosaic 只做解释不编译
# 24. Pallas 在 TPU memory space(SMEM、VMEM、HBM)的 explicit allocation 工程价值? A 显式分配只会降低性能 B Pallas 无法区分内存层级 C Pallas 允许显式分配 SMEM/VMEM/HBM,精确定制数据放置与流动,实现 TPU 深度优化 ✓ 正确答案 D TPU 只有单一内存空间
# 25. NVIDIA Hopper/Blackwell TMA(Tensor Memory Accelerator)通过 hardware descriptor 描述 tensor transfer 的工程价值? A TMA 用硬件描述符驱动异步批量传输,卸载数据搬运、释放计算资源并与计算流水线重叠 ✓ 正确答案 B TMA 只用于计算不用于搬运 C TMA 必须占用计算核心参与搬运 D TMA 不支持异步
# 26. cutlass 3.x 在 Python DSL(cutlass-python)kernel authoring 的工程价值? A cutlass-python 无法使用 TMA B cutlass-python 只能解释不能生成代码 C cutlass-python 用 Python DSL 描述 kernel 配置并生成 C++ 高性能代码,降低编写门槛且保留性能 ✓ 正确答案 D cutlass-python 与 C++ 无关联
# 27. CUDA Driver API(cuLaunchKernel / cuModuleLoad / cuDeviceGet)在 kernel dynamic load 工程价值? A Runtime API 提供更底层控制 B Driver API 只能静态加载 C Driver API 通过 cuModuleLoad 动态加载 PTX/cubin、cuLaunchKernel 直接启动,支持 JIT 与灵活内核管理 ✓ 正确答案 D cuLaunchKernel 无法启动 kernel
# 28. Pallas 与 Triton 在 CUDA kernel authoring 工程边界? A Triton 是 CUDA 生态主流的高层 kernel 工具且跨平台,Pallas 强在 TPU 显式控制,边界在硬件重点与抽象层次 ✓ 正确答案 B Pallas 与 Triton 能力完全相同 C Triton 无法在 CUDA 上运行 D Pallas 是 NVIDIA 官方工具
# 29. TMA descriptor 在 cluster shared memory 跨 SM 的 asynchronous load 工程价值? A TMA 不支持 cluster B TMA 无法跨 SM 加载 C TMA 必须软件同步传输 D TMA 可把数据异步加载到 cluster 内其他 SM 的共享内存,支持跨 SM 数据共享与高效流水线 ✓ 正确答案
# 30. TMA 与 LDGSTS / cp.async 在 bulk async copy 协同工程边界? A cp.async/LDGSTS 适合细粒度异步拷贝,TMA 适合大批量复杂布局传输,二者配合 mbarrier 实现流水线 ✓ 正确答案 B cp.async 替代 TMA 且更高效 C TMA 只能同步拷贝 D 两者完全等价
# 31. NVIDIA cutlass 3.x 在 Hopper/Blackwell SM90/SM100 architecture 的 tile / warp / instruction level codegen 工程价值? A cutlass 3.x 用 tile/warp/instruction 三级抽象,自动利用 TMA/WGMMA 等新特性生成高效 kernel ✓ 正确答案 B cutlass 3.x 只支持旧架构 C cutlass 3.x 无法使用 TMA D cutlass 3.x 只有单层抽象
# 32. cutlass 3.x 在 TMA / WGMMA / mbarrier / cluster shape 的 hardware-aware primitive 工程价值? A mbarrier 用于计算而非同步 B cutlass 3.x 无法封装硬件指令 C cutlass 3.x 封装 TMA/WGMMA/mbarrier/cluster 等硬件原语,让开发者高效组合利用新架构特性 ✓ 正确答案 D 这些原语与硬件无关
# 33. CUDA 12.x 在 cuMemAllocAsync / cuMemFree 在 memory pool 协同工程价值? A cuMemAllocAsync 总是同步阻塞 B cuMemAllocAsync 通过内存池复用内存、与流关联,解耦分配与计算,降低分配开销与碎片 ✓ 正确答案 C 内存池无法复用内存 D cuMemAllocAsync 与流无关
# 34. CUDA Driver API 在 cuStreamSetAttribute / cuStreamGetAttribute 的 priority / mem access policy 工程价值? A priority 与调度无关 B 流属性只能设置计算内容 C access policy 无法影响缓存 D 流属性可设置 priority 控制调度优先级、access policy 控制 L2 缓存命中,实现延迟与吞吐优化 ✓ 正确答案
# 35. torch.compile 在 dynamic shape(mark_dynamic、torch.compile(mode='reduce-overhead'))的工程价值? A reduce-overhead 不涉及 graph B mark_dynamic 会增加 recompile C mark_dynamic 避免动态形状频繁 recompile,reduce-overhead 用 CUDA Graphs 减少 launch 开销 ✓ 正确答案 D 两者与推理无关
# 36. TorchInductor 在 Triton kernel codegen 的 GPU 协同工程价值? A Inductor 不生成 Triton kernel B Inductor 做图优化与融合,Triton 生成块级 CUDA kernel,二者分工让 PyTorch 自动获得高性能 GPU 代码 ✓ 正确答案 C Triton 负责图优化 D 二者协同与 GPU 无关
# 37. torch.compile 在 guard failure / recompile 的工程边界? A recompile 不影响性能 B guard 永不触发 recompile C guard 覆盖所有属性 D guard 匹配时复用已编译 kernel,不匹配触发 recompile,动态输入易导致性能抖动,需用 mark_dynamic 等管理 ✓ 正确答案
# 38. CUDA Driver API 与 cuGraph 在 capture / instantiate 协同工程边界? A cuGraph 捕获并实例化图减少 launch 开销,Driver API 可在实例化后动态修改节点参数 ✓ 正确答案 B cuGraph 只能回放不能修改 C Driver API 无法参与图管理 D capture 后不能复用
# 39. 循环依赖分析中的距离向量与方向向量如何刻画两次迭代间的数据依赖? A 距离向量只表示方向 B 距离向量给出两次迭代间的精确偏移,方向向量用符号表示趋势,用于判断依赖与并行性 ✓ 正确答案 C 方向向量给出精确偏移 D 二者无法刻画依赖
# 40. loop fusion 把多个循环合并,依赖分析如何判断融合不会破坏数据依赖? A 反向依赖总是可融合 B 融合无需考虑依赖 C 依赖分析检查融合后循环间的依赖方向是否保持,若存在反向依赖破坏顺序则融合不合法 ✓ 正确答案 D 融合总会破坏数据依赖
# 41. loop unroll-and-jam、loop interchange 各自改善什么局部性?它们与 tiling 如何配合? A interchange 不改变访存顺序 B unroll-and-jam 只改善空间局部性 C interchange 改善空间局部性、tiling 改善块级缓存复用、unroll-and-jam 改善寄存器复用,三者配合优化 ✓ 正确答案 D 三者相互冲突
# 42. Roofline 模型如何用算术强度判断一个 loop nest 是访存受限还是计算受限? A 算术强度与瓶颈无关 B 算术强度大于 ridge point 为计算受限、小于为访存受限,从而指导相应优化方向 ✓ 正确答案 C 算术强度大于 ridge point 为访存受限 D 所有 loop nest 都是计算受限